これができるなら、あれもできるはず。
コラージュ・ライティング
テキストを散りばめて新しい文脈を見つける。
前回はCopilotを使いましたが、仕組みがわかったのでTemplaterスクリプトにしてみます。 その方が時間もパケットもかからないし。
decollage.md
午前に作ったexcalidraw_to_mermaid.md
を見てたら思いついた。
<%* // excalidraw(非圧縮)を箇条書きに変換します。 const FILE = "Inbox/Decollage" function getExcalidrawData() { const file = tp.file.content const startString = '```json' const endString = '```\n%%' const startIndex = file.indexOf(startString) const endIndex = file.indexOf(endString) if (startIndex === -1 || endIndex === -1) return null const jsonString = file.substring(startIndex + startString.length, endIndex).trim() return JSON.parse(jsonString) } function Items(excalidrawData) { const d = excalidrawData.elements .filter(x => x.type === 'text' && !x.isDeleted) .sort((a,b) => a.y - b.y) .map(x => x.rawText) return d.join("\n") } const excalidrawData = await getExcalidrawData() if (excalidrawData) { s = await Items(excalidrawData) f = `${FILE}.md` p = app.vault.getAbstractFileByPath(f) k = 1 while(p){ f = `${FILE} ${k++}.md` p = app.vault.getAbstractFileByPath(f) } p = await app.vault.create(f, s) app.workspace.activeLeaf.openFile(p) } else { new Notice("Excalidrawデータが見つかりませんでした。") } %>
y座標で並べ替えるアクション。
最初は思ったふうにならなくて Copilot に「y座標順にならないけどなんで?」と尋ねたら「sortは文字列比較なのよ」と教えてくれて開眼。 スクリプト・エラーは生成AIに解読してもらえばいいんだ。 ラッキーなことである。
使い方
Excalidrawを「Open as Markdown」で開いてdecollage.md
を実行。
テキストだけ抜き出し、Decollageというノートに箇条書きで並びます。
並べ替えたくなったら、またExcalidrawに貼り付けるだけ。
まとめ
これでツールは揃いました。
実際に実用的なコラージュとはどういう使い方だろう。 今度はそちらを考えてみる。 テキストをリニアな縛りから解放するためには。