一緒に悩み、考える。
つくるだけでなく、
そのあとの物語も、ともに。
どんな会社もサービスも、それぞれにストーリーがあります。
花のやはそれをサポートしながら、お客様の成長を隣で見ていたいのです。
一緒に悩み、考える。
つくるだけでなく、
そのあとの物語も、ともに。
どんな会社もサービスも、
それぞれにストーリーがあります。
花のやはそれをサポートしながら、
お客様の成長を隣で見ていたいのです。
ブログBLOG
- 名古屋のホームページ制作会社 花のや
- 花のやブログ
- Threadsの投稿をAIで自動化してみた
Threadsの投稿をAIで自動化してみた
こんにちは、花岡です。
さっそくですが、ThreadsへのSNS投稿をAIで自動化してみました。
https://www.threads.com/@masa1558
企画・執筆・投稿はすべて自動で、人は「投稿していいかチェックする」だけです。
クライアントに提案していることを、まず自分でやってみる。その記録を書きます。
Q. SNS投稿を自動化するのに何が必要か?
A. 大きく3つです。①投稿を貯めておくキュー(今回はNotion)、②承認済みの投稿を自動で送るスクリプト(Python)、③定時実行の仕組み(cron)。技術的な難所はAPIの認証まわりで、Threads APIはOAuthフロー・コンテナ作成・公開の2ステップが必要です。
この記事のポイント
- MTG議事録30本をAIに読ませて投稿ネタを抽出
- Notion→Python→Threads APIの構成で、毎日3本が自動投稿されます
- 外部ライブラリゼロのPythonで動いており、環境依存がありません
全体の流れ
システム全体の流れはこうです。
- 過去のMTG議事録・業界動向・花岡との対話
→ AIマルチエージェントで投稿ネタを抽出・執筆 - 生成された投稿を、Notionの投稿シートにステータスを「未承認」で保存
- 花岡がステータス「承認」に変更すると投稿キューに移動
- cron(朝8時・昼12時半・夜21時)が自動起動 → 承認済みの最古の投稿を1本取得
- Threads APIで投稿 → Notionのステータスを「投稿済み」に自動更新
- 在庫が10本を切ったら自動補充
なぜやったのか
正直に言うと、興味&実験です。壮大な戦略というよりは、「SNS発信を企画から投稿までどこまでAIで自動化できるか」を試してみた、が本当のところです。
得たかったのは3つありました。
① AIに自社の声を覚えさせる感覚② マルチエージェントで素材から記事化する流れ
③ NotionとThreads APIの実装知見。
Notionで投稿キューを作る
投稿を管理するデータベースはNotionで作りました。プロパティはこうです。
| プロパティ名 | 内容 |
|---|---|
| ネタ(title) | スキャン用の短い見出しラベル |
| カテゴリ(select) | 戦略 / SEO / 広告 / AI活用 / SNS / 解析 / 制作 / 採用 |
| 見出し(rich_text) | 投稿冒頭の【見出し】(10〜20字) |
| 本文(rich_text) | 投稿本文(500字以内) |
| 真偽(select) | 確=裏取り済 / 論=本人持論 / 要=要本人確認 |
| ステータス(select) | 要承認 / 承認 / 差戻し / 投稿済み |
「真偽」の列が地味に重要です。制度・統計・仕様はWeb検索で裏取りしたものに「確」、本人の持論には「論」、実績数字など本人確認が必要なものは「要」とタグ付けしています。SNSで事実誤認を投稿しないための安全装置です。
スクリプトからのアクセスはNotion REST API(バージョン2022-06-28)を使います。内部インテグレーションのトークンを発行してDBに共有するだけで、書き込みと更新ができます。
- クエリ:ステータス=承認 かつ 予定日≤今日または空、作成日昇順で並べて最古を1本取得
- 更新:投稿後にステータスを「投稿済み」・予定日を今日に変更
Threads APIで投稿する
Threads APIのエンドポイントはgraph.threads.netです。投稿は2ステップです。
- ステップ1:コンテナ作成
POST /v1.0/{user-id}/threads(media_type=TEXT&text=...)→ creation_idを取得 - ステップ2:公開
POST /v1.0/{user-id}/threads_publish(creation_id=...)→ media_idを取得
コンテナ作成から公開まで数秒待機を挟むと安定します。認証はOAuthフローでアクセストークンを取得(権限はthreads_basicとthreads_content_publish)。長期トークン(60日)に交換して.envに保存します。
スクリプトは外部ライブラリゼロのPythonで書きました。依存パッケージがないので環境を汚さず、どこでも動きます。
cronで朝・昼・夜に自動実行する
cronに以下の3行を登録しています。
0 8 * * * python3 "/.../notion_to_threads.py" >> "/.../cron.log" 2>&1
30 12 * * * (同上)
0 21 * * * (同上)
朝・昼・夜に分散しているのは、連投で埋もれるのを防ぐためです。1回の実行で1本だけ投稿します。
macOSのcronはスリープ中に動きません。Macの電源が落ちている時間は投稿がスキップされます。本番運用で確実に動かすにはlaunchdかサーバー移設が必要です。今回はこの制約を受け入れた上で運用しています。やっぱり嫌だったのでGitHub Actions cronで解決しました。
議事録30本からネタを作る
文字起こしサービス「Notta」で記録したMTG議事録30本を素材にしました。6体のAIエージェントを並列で走らせ、案件固有情報を除いた汎用Q&Aを抽出した結果、122件が出てきました。精査して68件を採用しています。
日々の商談がそのままSNSのネタ源になる、というのがこの仕組みの一番の発見です。毎日クライアントと話している内容が、すでにコンテンツの素材になっていました。それを整理する作業をAIに任せた、という話です。
抽出したQ&Aをもとに、7体のエージェントを並列で動かして投稿68本を執筆しました。各エージェントに「声の基準」と「深さの基準」を読み込ませています。
詰まったところ
AIに自分の声を覚えさせるが一番大変普段の書き方を読込させてもなかなかうまくいかず。想像以上に微調整の往復が必要でした。段階的に詰めていくと、一度メモリに焼き付けた後はブレなくなりますがそれでもここだけで2時間くらい苦戦しました。
ツール選定は「今すぐ書ける連携があるか」で決める最初はGoogleスプレッドシートをキューにしようとしました。手元の環境でSheets書き込みAPIがすぐ動かせなかったため、Notionに変更しました。Notionはclaude.aiとのOAuth連携があり、書き込み連携がすぐ使えたからです。仕組みは理想のツールではなく、今すぐ動くツールに寄せる、が今回の学びのひとつです。
認証情報の扱いApp SecretやアクセストークンはすべてDotenvファイル(.env)に格納し、gitignoreで除外しています。チャットにSecretを貼ってしまった場合は、設定後すぐに再生成するのが安全です。
68本を一括投入したとき、文字エンコード起因の誤字が発生しました(「眺」→「眸」など)。バルク処理後は差分チェックが必要です。
花のやでできること
今回のような「社内の知見をAIに読ませてコンテンツ化する」「承認フローを残しながら発信を自動化する」といった仕組みは、他の会社でも応用できます。SNS発信の自動化に限らず、情報発信の体制づくりについてご相談ください。
「SNS運用が続かない」
「AIを使った発信の仕組みを作りたい」
まず現状の整理から一緒に考えます。お気軽にご相談ください。
この仕組みを作る過程自体が、花のやの「やってみた当事者の言葉」として、一番強いコンテンツになると思っています。
カテゴリ
書いた人別一覧
お問い合わせ
Webサイト制作・その他お仕事のご依頼、
ご相談についてお気軽にお問い合わせください。
052-211-9898







