見出し画像

AIで『自分の取扱説明書』を作る|Gemini CLI×Obsidianで過去ツイートを分析してみた

1. 過去ツイート、どれくらい覚えていますか?

過去に自分が書いたツイート、どれくらい覚えていますか?

5年前、3年前の自分が、どんなことに怒って、どんなことに笑っていたのか。
流れていくタイムラインの中では、言葉はすぐに埋もれてしまいます。
でもあの一つひとつの短い文章には、当時の自分の価値観や癖が、そのまま閉じ込められています。

最近話題のAIエージェントの事を調べているうちに、ふと「自分のツイート、全部集めて俯瞰して見られれば、過去の自分に会えるんじゃないか?」と思ったんです。
しかも、ただ読み返すんじゃなくて、AIに任せて整理してみたらどうなるんだろう、と。
自力で全てのツイートを読み返すのは現実的じゃないし、あまり面白くもなさそう……でも、何かしらで分類・整理できたら面白そうだな。

そして実際にやってみたら――
膨大なツイートの中から、忘れていた自分の“地図”が浮かび上がってきました。
それは、こんな感じの景色でした。

キーワード「自分」から広がる記憶と感情の地図


2. Gemini CLIとObsidianに出会うまで

きっかけは、とても単純なものでした。

自己分析の本やノート術を試しても、どうも続かない。
言語化しようとすると、頭が真っ白になってしまう。
でも、過去のツイートには、考えるより先に出てしまった“素の自分”が、そのまま残っている気がしたんです。

「これを整理できたら、今まで見えなかった自分が見えるんじゃないか?」

そう思ったとき、ふと目にしたのがGemini CLIでした。
自分のPCのローカル環境で起動でき、フォルダやファイルも操作可能なAIツール。バイブコーディングでPhytonのスクリプトが記述して実行させれば、膨大な文章データを一気にラベル分けしてくれるという話に、妙なわくわく感を覚えました。

さらに、その分類結果をどうやって眺めようか考えていたときに、頭に浮かんだのがObsidianです。
AI関連の記事を読み漁っていると、たびたび目にしたこのツールを使えば、自分の過去を「視ることが出来る」と思いました。
テキストをリンクさせるだけで、点と点がつながり、地図のように広がっていく語られていたあの感覚。
これだ!」と思いました。

Gemini CLIで分解して、Obsidianで地図にする。
この二つを組み合わせたら、もしかして自分の無意識まで可視化できるんじゃないか——そんな直感から、すべてが始まりました。



3. 実践プロセス

やることはシンプルです。
ツイートを全部集めてAIで分類し、それをObsidianに読み込ませる。
そうすれば、少しずつ地図が出来上がります。

初めてでも大丈夫! 私も最初はチンプンカンプンでした。


一緒に順を追ってやっていきましょう💪

1. Gemini CLIの導入

まずはGemini CLIのセットアップから。

ターミナルで各種操作を行います。

(1) 「Node.js v18」以降をインストール。

(2) 「Gemini CLI」をインストール。

npm install -g @google/gemini-cli


(3) プロジェクトフォルダの作成。
または、既存のプロジェクトフォルダに移動します。

mkdir new-project
cd new-project


(4) 「Gemini CLI」を起動。
プロジェクトのルートで「gemini」を実行します。

gemini


(5) カラーテーマを選択。

(6) プロンプトが表示されたら、個人のGoogleアカウントでサインイン。

(7) プロンプトを確認。
これにより、「Gemini 2.5 Pro」を使用して、1分あたり最大60件、1日あたり最大1,000件のモデルリクエストが可能になります。

チャット欄に自然言語で指示を書き込めば、いろいろやってくれる。


▶️GeminiCLIの導入に関しては、こちらの動画が分かりやすかったです。

👇参考用の外部動画です。




2. Twitterのアーカイブ取得

ツイート全件は、Twitter(X)の[ アカウント設定 ]から「データのアーカイブをダウンロード」機能を使って取得しました。

アーカイブのダウンロードはPCからじゃないと出来ないみたいでした。

数日後にメールで届くzipを解凍すると、tweet.js や tweets.csv などのファイルがあります。今回はtweet.jsファイル(ZIPファイル>>dataフォルダの中にあります)を使います。



3. ツイート全件の分類方法

まず、jsファイルをメモ帳で開いてみると

tweet.jsの中身

"created at" : の後がツイートした日時
"full text" : のあとが本文のようなので
以下のようなプロンプトでGemini CLIにjsファイルの中身を整えさせました。

「moto-tweets.txt」というテキストファイルから、
以下の条件に従って必要な情報のみを抽出して、
新しいファイル「tweets.txt」として出力してください。
日本語の本文が含まれているため、
エンコーディングの文字化けが起きないように注意してください
(たとえばUTF-8で処理するなど)。


条件は次のとおりです:

1. moto-tweets.txt 内の "created_at" に続く日時情報
2. moto-tweets.txt 内の "full_text" に続く本文
3. 日時情報と本文の情報だけを整理し、
全件を順に記述した新しいテキストファイル「tweets.txt」に保存してください。

Pythonスクリプトを作成してこの処理を行い、スクリプトを実行してください。

Gemini CLIにファイルを読ませやすくするために、jsファイルを「moto-tweets.txt」ファイルとして保存してから作業しました。

Pythonの動作環境がない場合は 公式HP からダウンロードしてみてください。


▶️Python(パイソン:プログラミング言語)なんてPCに入れてないよー。という方には、こちらの動画が短くて分かりやすいかもです。

👇参考用の外部動画です。


閑話休題。
次に、投稿日時と本文を抽出した「tweets.txt」のデータを投稿日時ごとにmdファイルとして分解する作業をGemini CLIにやってもらいます。
プロンプトのイメージはこんな感じです。

tweets.txt というファイルを読み込み、以下の処理を行う Python スクリプトを
作成して実行してください。

【前提】
- tweets.txt には複数のツイート情報が含まれています。
- 各ツイートは "created_at: ..." および "full_text: ..." 
という行で構成されます。
- 日本語が含まれるため、文字コードは UTF-8 を前提とし、
文字化けを防ぐようにしてください。

【処理内容】
1. 「created_at:」から次の「created_at:」までを1ツイートのまとまりとする。
2. 「created_at」から日付(yyyy-mm-dd)を抽出。
3. 「full_text:」以下の内容をツイート本文とする。
4. 「full_text:」の内容に「RT @」が含まれている場合は、
そのツイート全体を無視(除外)。
5. 本文中にある「https:」で始まるURLを削除。
6. 本文中にある「#」の記号も削除。
7. yyyy-mm-ddごとに、以下のように1つのマークダウンファイルに追記形式で記述:
   - 各行には本文を1つずつ記載
   - ファイルパスは `tweet/yyyy/mm/tw-yyyy-mm-dd.md` とする(例:`tweet/2025/07/2025-07-08.md`)

【出力形式】
ツイート本文
改行
ツイート本文

処理内容の4でRT@を除いているのは、リツイートには自分の感情は反映されていないと考えたためです。
処理内容の6でハッシュタグ(#)を除いているのは、この後のObsidianでの読み込み時に #が残っているとObsidian上でもタグとして機能してしまった為です。


そして次が今回の取り組みの肝になるツイートの分類です。
ツイートの頻出語句、感情語をピックアップするPythonスクリプトをGemini CLIに書かせて分類してみました。
プロンプトのイメージはこんな感じです。

ここから先は

2,950字 / 2画像

¥ 500

Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

よければ応援していただけると嬉しいです。 いただいたチップは、私の物語のページを少しずつ彩る力に変えさせていただきます。