AIって、文章を書かせる時だけ使うものだったり、ただの相談相手と思われがちだけど、
実際はいろいろできることがある。

今回やりたかったのは、Xの投稿内容からそのアカウントの人物の性格傾向を見たり、口調や反復によって分析したりすることだった。
ただ、相手が公開アカウントならいいけど 鍵アカウントだとURLを貼っただけではAIが投稿内容を参照できない。

投稿数が少ない人ならスクリーンショット数枚で済むけど、数が多いとすぐに面倒になる。

そこでAIに相談しながら、Chromeの拡張機能「SingleFile」で保存したXのHTMLから、
本文を抽出してTXTやCSVにし、さらに100ポストごとに分割して出力できる自分用ツールを作った。
※PCでの作業環境

最後は実行ファイル化して、さらにブログの固定ページにHTMLを入れれば同じようにファイルが取れるところまで作成した。

最初に結論を書くと、この話でいちばん伝えたいのは3つある。

  • AIは文章作成だけじゃなく、自分用の処理や道具を作るアドバイザーとしてもかなり強い
  • 既製品が微妙に合わない作業ほど、AIに相談して自分用に整える価値が出やすい
  • 今回のツールはあくまで自分が見えている範囲のデータ整理用で、見えない鍵垢を盗み見るためのものではない

同じように、毎回の手作業が大変とか、既製品では少しやりたいことと違うとか、自分用に処理を整えたいことがあるなら、AIに相談すると時短できるようになることも多いよって話。

最初に困っていたこと

もともとは、Xの投稿内容からその人がどんな人かを見たかった。
何をよく言うのか、どういう時に感情が揺れるのか、どういう言い回しが反復して出るのか。
そういうものは、短いやり取りだけよりも、ある程度まとまった投稿量があった方が見やすい。

いろいろな人のアカウントを見て、こんな投稿をしている人はどういう性格なんだなっていうのを
AIが分析している内容を見て、実際に自分でもなんとなく傾向を予想できるようになれたら面白いなって思って
いろいろなアカウントを分析してもらっていたんだけど

でもここで詰まってしまった。
鍵アカウントだと、URLをAIに渡しても投稿本文をそのまま読めない。
こちらがフォローしていて見えている相手でも、AI側はそのURLだけでは中身を参照できないからだ。

じゃあスクリーンショットで渡せばいいかというと、投稿数が多いとそれもかなりたいへん。
数枚で終わるならまだいい。でも何十枚にもなると、撮るのも並べるのも面倒だし、あとで見返す時も使いにくい。

URLだけでは足りず、スクショ運用も面倒だった

最初は単純に、見えている投稿をAIに読ませればいいと思っていた。
けれど実際にやってみると、URLだけでは鍵アカウントの本文は取れない。

その次に考えたのがスクリーンショットだった。
ただ、スクショの数が増えるとめんどうだし、画像のままAIに渡した時も、長い投稿や細かい並びは読み取りが安定しないことがあった。
特に量が増えるほど、作業がしんどくなる。

つまり困っていたのは、分析そのものよりも、その前段にある「AIへ渡せる形に整える作業」だった。

API課金ではなく、SingleFileから始めた理由

こういう話になると、XのAPIを使えばいいのではと思う人もいるかもしれない。
もちろんそういう方法もある。

でも今回は、まずそこにお金をかけたくなかった。
仕様や制限も気になるし、最初から大げさにしたくもなかった。

そこで選んだのが、Chromeの拡張機能であるSingleFileだった。
見えているページをそのままHTMLとして保存できるので、まずはここから素材化できないかを試した。

まずXは動的なHTMLサイトなので、スクロールして読み込んでSingleFileを使っても
画面外が白くなってしまった。
これについてはちょっとしたコツで解決できたが、これはいろいろ試して自分で何とかした笑

最初は、この保存HTMLをそのまま扱えばすぐいけると思っていた。

でも実際にはそう簡単ではなかった。
どの要素を拾えば本文になるのか、どうやって余計なリンクを外すのか、どこで区切るのか、順番はどうするのか。
細かいところで何度も引っかかった。

AIに相談しながら、少しずつ形になっていった

ここから先は、一発で完成したわけじゃない。
AIに相談して、動かして、詰まって、また直して、を何度も繰り返した。

最初は単純な抽出スクリプトから始まった。
けれど、HTMLの中身は思ったより素直ではなかった。
SingleFileで保存されたXのHTMLは圧縮や省略が入るし、見た目では本文がありそうでも、抽出の仕方がズレるとゼロ件判定になることもあった。

実際に試して、ログを見て、どこで取りこぼしているかを切っていく。
正規表現で拾っていた部分をDOMパースに変えたり、対象アカウントのURLを優先して対応づけたり、他人のURLが混ざるケースでは無理に当てずに保留にしたり、そういう修正を積み重ねた。

結果として、SingleFileで保存したHTMLから、かなり安定して本文を抽出できる状態まで持っていけた。

こうやって書いていると、なんだか難しいことをしているように見えるけど
実際はほとんどAI任せで、わからないことはAIに聞いて、出た結果もそのままAIに貼り付けて、ってことを繰り返しただけ。

100ポストごとに分けた方が、AIに渡した時の精度が良かった

テキスト化できたら終わりじゃなかった。
次に出たのが、「どの単位でAIに渡すと見やすいか」という問題だった。

全部まとめて一気に渡すこともできるけど、量が多すぎると局所の揺れや時期ごとの差が見えにくくなる。
逆に細かすぎても、全体像が見えない。

最終的には、だいたい100ポストごとに区切ってTXTを出す形がちょうど良かった。
これなら、全体の流れも追えるし、その時期だけの口調や反復も見やすい。
CSVも出すようにしたけど、実際にAIへ渡す時はTXTの方が使いやすかった。

最後は実行ファイル化して、固定ページでも使えるようにした

コマンドを毎回打つだけでも最初は十分だった。
でも、毎回同じことをするなら、結局そこも面倒になる。

そこで、HTMLをドラッグ&ドロップすれば同じ処理を走らせて出力してくれる実行ファイルの形まで持っていった。

さらに、出先でも使いたい場面が出てきた。
自分のPCだけじゃなく、ブログ側にも置けないかを相談して、固定ページでHTMLを入れれば、同じようにTXTやCSVや分割ファイルが取れる形まで作った。

ここまで来ると、単なる「AIにコードを書いてもらった話」ではなく、実際に運用に乗るところまAIがつくってくれた。

この話でいちばん伝えたいこと

今回いちばん面白かったのは、ツールができたことそのものより、AIに相談するとこういうところまで一緒に詰められることだった。

最初の相談はかなり単純だった。
「Xの鍵垢の投稿文を参照する方法はない?」
それだけだった。

でも、そこから試行錯誤を繰り返して、抽出、整形、分割、GUI化、実行ファイル化、固定ページ化まで行けた。
つまりAIは、記事作成や要約だけじゃなく、既製品が微妙に合わない自分用にやりたい事を形にしていく時にもかなり使える。

できることと、できないこと

ここは誤解されやすいので、はっきり書いておく。

今回のツールは、自分がすでに閲覧できている範囲のXページをSingleFileで保存して、そのHTMLを整理しているだけだ。
フォローしていない鍵アカウントの投稿を盗み見るためのものではないし、そういうことをするためのものでもない。

もちろん、この話の流れでそういうことができるようになったわけでもない。

やっているのは、あくまで見えている情報を、AIに渡しやすい形へ整えることだ。
その作業は手作業でスクリーンショットをたくさん撮って、それをAIに渡してって方法でもできること。

その手間をなくして、時間を節約することができるようにしただけ。
結果は変わらないが、手間が減った。

ここを勘違いして読まれると話が変わってしまうので、そこは最初にわかっておいてほしい。

同じように、自分用に調整したい作業がある人へ

この話を読んでほしい相手は、プログラミングがしたい人じゃない。
僕はプログラミングなんてできないし。

むしろ、毎回なんとなく面倒だけど、既製品を探すほどでもない作業を抱えている人だと思う。

たとえば、こんなものだ。

  • 毎回手で整理しているデータがある
  • AIに渡す前の前処理が面倒
  • 既製品だと少しやりたい事と違っていて、結局自分でやっている
  • 自分用の処理や整理ツールが欲しい

こういうものは、汎用ツールを探すより、AIに相談しながら自分用に整えた方が早いことがある。

限定ページで、今回実際に作ったページやツールを見られるようにした。

ただ、これは万人向けの完成サービスとして置いているわけじゃない。
「こういう相談をしたら、ここまで形になる」という実例として見てもらいたいと思って公開した。

下手に勘違いしてる人に見られて変に質問されたり、叩かれるのもいやなので、
パスワード設定してLINEに登録してくれた人だけが見れるようにしている。

もし、自分の作業でも似たことができないか気になるなら、LINEからどうぞ。
雑な相談でも大丈夫だし、むしろ最初はそのくらいの方が自然だと思う。

LINE公式はこちら

作成したXのHTMLから投稿を抽出する限定ページ

※この記事で紹介している内容は、自分が閲覧できる範囲の保存HTMLを整理するためのものです。
 見えていない鍵アカウントの投稿を取得するためのものではありません。