🔖

LLMで活用するためのMarkdownをあらゆるコンテンツから変換して一箇所に集める方法

に公開

マークダウンを一箇所に集める

LLMとMarkdownの相性が良いという話は、最近多くの人が話題にしたり感じていることかと思います。
おそらく、そのうちあらゆるデータを直接LLMに手軽に安く入力できるようになるとは思いますが、それにはしばらく時間がかかるのも確かだと思います。なので、今はとにかくMarkdownを集めてLLMの手に届く範囲に置いておきたくなるわけです。

しかしながら、データというのは、だいたい色々な形式で色々な場所に散在しているものです。なので、そういったデータを変換してまとめる仕組みが一番重要になってきます。逆に言えば、そういう仕組みさえ構築できれば、プラットフォームは、はてなブログでもZennでもTwitterでもNotionでも何でも良かったりします。ただ、データを手軽に取得(APIで取得 or エクスポート)する方法があることが重要ですね。Obsidianが、最近LLMと相性がよいと話題ですが、Obsidianはあくまでその仕組のための手段の1つに過ぎないんじゃないかなと思っています。

ということに今更気づいたので、自分なりの情報のまとめ方について書いておきます。自分に特化した方法ですが、参考になる人もいるかもしれないのでまとめておきます。

基本方針

まずは(自分の)基本方針として、Markdownファイルの管理はGitHubを活用します。テキストファイルならサイズも大きくないし、差分管理もしやすいのでGitHubとの相性は抜群です。

全部を1つのリポジトリに入れるのもよさそうですが、Markdownとはいえ、肥大化していきそうなので自分はコンテンツごとにリポジトリを分けて、1つのハブとなるリポジトリから、複数のリポジトリをgit submoduleとして読み込むという方式をとっています。

各リポジトリには、なるべくアップデートを自動化できるような仕組みを構築するようにしています(できないものは手動)。

図にすると以下です。

マークダウンに変換するコンテンツの元

自分の場合のコンテンツ元の候補です。基本、1つのコンテンツが1つのリポジトリに対応します。

  • はてなブログ
  • Zenn
  • Notion
  • Twitter(X)
  • スライドやドキュメント
  • 音声
  • Notability
  • Obsidian
  • マークダウンに変換していないデータ

はてなブログ

以下のバックアップをすることで、過去記事すべてをマークダウンデータとして保存できます。

https://karaage.hatenadiary.jp/entry/2020/08/24/073000

コマンドを複数実行するだけなのでアップデートできるのでお手軽ですね。

Zenn

以下の2つの方法があります。

  • 手動でエクスポート
  • GitHub連携

GitHub連携をしていれば手間なく、常にマークダウンファイルを取得できて便利です。

自分はGitHub連携してないので、手動でエクスポートしてリポジトリにコピペしています。いつか連携しようかなとか思っています。

Twitter

以下記事参照ください。アーカイブのダウンロードに2,3日かかってしまうのがネックですね。

https://zenn.dev/karaage0703/articles/961969f4f7762e

Notion

単純にエクスポート機能を使います。子ページも含めてマークダウンでダウンロードできます。個人的なデジタルテキストのメモならObisidianが良いと思いますが、以下の機能があるのでNotionを使ってます。

  • 様々なフォーマット(画像/動画/バイナリ)ファイルの保管
  • 複数人での共同編集
  • データのWeb共有

LLMでMarkdownを編集しつつNotionと連携したい場合は、拙作のMCPサーバ「NotionMCP Light」を活用ください。

https://zenn.dev/mkj/articles/10985561e37846

スライドやドキュメント

Google Driveにあるスライド(pptx)やドキュメント(docs)は、MarkItDownというスクリプトを使ってMarkdownに変換します。

変換を簡単化にするために、sourceというフォルダに、ドキュメントファイルを入れれば、コマンド一発で全部processedというフォルダにマークダウンに変換してくれるリポジトリを作っています。

https://github.com/karaage0703/any2md

変換精度に拘る人は、markitdown以外を使ったり、組み合わせたりすると良いと思いますが、ここらへんは時間とともに便利で精度良いやつがどんどん出てくるのであんまり気にしてないです(今回は、あくまで個人用途なので)

音声

気に入っているPodcast(音声配信番組)の音声ファイルをダウンロードして、文字起こししたものを、ChatGPTを使ったりしてまとめたりしています。

文字起こしは、以下のfast-whisperを手軽に使えるようにした自作ツールを使っています。
https://zenn.dev/karaage0703/articles/0a8a16edc6f1d0

自分も昔noteで音声配信をしたりしていたので、noteからエクスポートした音声データを文字起こしして、まとめていたりします。

Obsidian

Obsidianは、今のところWebクリップと簡単なメモに使っています。

Obsidianは、GitHubと連携できて、自動でPushしたり、ボタン一つでPushできるので、便利ですね。

https://zenn.dev/karaage0703/articles/52c3e016653003

Kindle

以下記事のようにKindleの蔵書リストをMarkdownにして入れておきます。
https://zenn.dev/karaage0703/articles/a835dae909598f

あとは、ObsidianのKindleプラグインで、ハイライト(マーカー)情報も入れています。
https://github.com/hadynz/obsidian-kindle-plugin

書籍丸ごとのMarkdown化は…ノーコメントとします。

個人的には、最近本を買うより、LLMにテキストデータを入力する権利(と手軽な方法)を買いたいなと思ったりします。

Notability

Notabilityは、愛用しているiPadのノートアプリです。詳細は以下記事参照ください。
https://karaage.hatenadiary.jp/entry/2020/11/06/073000

Notabilityは、標準でノートをGoogle DriveにPDFでバックアップできる機能があるので、フォルダまるごとを、スライドやドキュメントと同様に自作の以下スクリプトで変換しています。

https://github.com/karaage0703/any2md

Notabilityには、PDFの書籍や論文などを突っ込んでいるので、それらが主なコンテンツになります。

手書きのノートに関しては、まともにOCRできてないのでほぼノイズですが、一応データには残しています。OCRの精度が上がっていたらいつか活用できるかもですが、そもそも手書きのノートに関しては、自分の頭の整理や発想を広げるのが主目的なので、正直どっちでもいいかなと思っています。

マークダウンに変換していないデータ

写真/動画

今は放置しています。そのうちLLMのマルチモーダルの性能があがったら、いい感じにLLMで全部のデータを活用できるんじゃないかと思います。

ソフトウェアのソースコード

基本、LLMが書くコードの方が、自分のコードよりできが良いので、自分のコードを参照させることは少なく、わざわざ変換して一箇所にまとめたりはしていません。

必要に応じて、以下のようにリポジトリをまるごとテキストデータにして、LLMに入力したりしています。
https://zenn.dev/karaage0703/articles/0a546df8941057

集めたデータの活用方法

集めたからあとは自分で考えてね!活用方法は無限大!チャオ!って感じなのですが、参考にいくつか書いておきますね。

データを一括検索

一箇所にまとまっているので、検索は楽々ですね。特にCursorエディタ等のAIエディタは、開いたフォルダを自動でインデックス化してくれるので、強力なベクトル検索が使えます。

VS Codeエディタ + Clineだと、そういった機能はないですが、以下の「ローカルRAGを手軽に構築できるMCPサーバ」を構築すると、ベクトル検索とかRAG的な使い方ができます。

https://zenn.dev/mkj/articles/30eeb69bf84b3f

ただ、自分の場合は全部のデータのインデックス化に数時間かかります…2回目からは差分のみですむとはいえ、もっと高速化したいですね

ブログ記事のたたき台作成

CursorやVS Code+Clineで、以下のようなプロンプトを使うと、過去の自分の記事を参考にいい感じに記事を書いてくれます。

「知的生産術」に関しての記事を書いてください。

xxx(例えばブログ記事のリポジトリ)に格納されている記事を参考にしてください。
xxx(ブログ記事のリポジトリ)に格納されている記事からランダムに5つピックアップして

それらを組み合わせて新しいアイデアの記事を書いてください

こうやって作った記事たたき台に記事を書いたりできます。自分の場合は、基本全部書き直しますが、別にそのまま使ってもいいかなと思います。

Webクリップデータ活用

以下みたいなプロンプトで、Webクリップの内容をまとめて振り返れます。

<ObsidianのWebクリップ保存フォルダ> にある今週クリップした記事をまとめて

MCPサーバと組み合わせれば、そのままニュースレターにしたり、関係者にSlackやDiscordで共有したりもできますね(コピペしてもOK)。

プレゼンへの活用

スライドに関しては、Markdown形式にしていると、AIにレビューを簡単にお願いできます。

xxxをレビューして

以下でカンペを作ってもらったりもできますね。

このスライドの発表時間は10分間で、時間情報入りのカンペを作って

過去のスライドをもとに、新しいスライドのアイデアを作ったりもできるかと思います。

まとめ

Markdownを一箇所にまとめる方法を書いてみました。ネットには無数のデータがありますが、自分が持っているデータや自分が作ったデータは、自分の体験と紐づいていることが多いので、そのデータを活用することは、自分にとって価値があることが大きいと思います。

LLMの活用は、環境を整備するところからということで、ルンバと片付けの関係に例えたことがありました。

https://x.com/karaage0703/status/1893211896892793321

今回の変換は、人間より(場合によっては)LLMにとって読みやすい形式に変換するということで、さらに一歩進んだAI(LLM)ファーストの環境整備と言えそうですね。LLMのマルチモーダル性能向上やMCPを使ったデータアクセスの簡易化にも期待したいですが、当面はLLMファーストの環境整備をするのがデータを最大限活用できる方法にはなるのかなと思います。

参考リンク

https://zenn.dev/hnw/articles/36fc843dcdbb9e

関連記事

https://zenn.dev/karaage0703/articles/617c6c4225335a

Discussion