投稿する

XでバズってるネタからXとnoteの記事を自動生成する自動運転

X(旧Twitter)で注目されているトレンドや特定のバズ投稿を起点に、note記事の執筆から画像生成、下書き入稿までを全自動で完結させるエージェントです。 単なる記事作成に留まらず、自身の過去のバズ投稿を学習(Few-shot)させることで、本人の「語り口」を再現したX用の長文投稿案も同時に3パターン生成。Discordへの通知を通じて、noteとXを連動させた多角的な発信を強力にサポートします。 情報の正確性を担保するファクトチェック機能や競合分析、Geminiによるアイキャッチ画像生成など、実運用に耐えうる高度なスキルセットを搭載。公開直前の「下書き状態」で止まる安全設計のため、AIによる誤投稿を防ぎつつ、プロ品質のコンテンツ運用を効率化したいエンジニアやクリエイターに最適です。
zip未取得

trend-to-note-and-x

X (旧 Twitter) のバズ投稿 / トレンドを起点に、note 記事を 1 本自動入稿するサブエージェント。

さらに同じネタから X 投稿案 (主力長文 × 3 案) を生成して Discord に通知し、X UI で手動投稿できる状態に整える。

X への自動投稿はしない (読むだけ)。note も下書き保存までで停止 (公開判断は人間)。

事故防止と運用安全性を優先した「draft 止まり」設計。

何ができるか

[1 エージェント] trend-to-note-and-x
   │
   ├─ Step 1  socialdata-trend-harvester  : X からネタ 1 件選定
   ├─ Step 2  reference-corpus-builder    : note + X からお手本収集 (★ 本人 X TL も few-shot 素材として必ず取得)
   ├─ Step 2.5  X 投稿案 × 3 案を Discord 通知 (手動投稿用ドラフト)
   ├─ Step 3  note-publishing-toolkit     : 競合分析 → 執筆 → ファクトチェック → 画像 → note 入稿
   └─ Step 4  振り返り 4 層ログ + Discord 通知

設計の核心:

  • 1 エージェント = オーケストレーター、実処理は 3 スキルに分離
  • 書き手本人の長文バズ投稿を few-shot として LLM に直接渡す (抽象パターン抽出はしない、表層マッチで本人感は出ないため)
  • 競合分析 (勝つための比較) と リファレンス分析 (真似るためのお手本) を別軸で両方走らせる
  • 下書き止まり で公開・送信はすべて手動

構成

trend-to-note-and-x-pkg/
├── .claude/
│   ├── agents/
│   │   └── trend-to-note-and-x.md         オーケストレーター本体
│   └── skills/
│       ├── socialdata-trend-harvester/    X からネタ仕入れ
│       ├── reference-corpus-builder/      お手本収集 + 本人 TL few-shot
│       └── note-publishing-toolkit/       note 入稿 (Chrome DevTools MCP)
├── knowledge/
│   ├── profile.md                         ★ 自分の情報に書き換え必須
│   ├── keywords.md                        ★ 検索クエリ + 監視アカウント、要書き換え
│   ├── reference-sources.md               お手本にする note / X 白リスト
│   └── scoring.md                         スコア重み・閾値・NG ワード
├── data/
│   ├── seen_ids.json                      採用済み tweet ID (30 日保持)
│   ├── reference-cache/                   Jina 取得キャッシュ (90 日)
│   └── pipeline-log/<timestamp>/          1 実行 1 ディレクトリ
├── .env.example                           ★ .env.local にコピーして API キーを入れる
├── .mcp.json                              chrome-devtools MCP 設定
└── README.md

必要なもの

カテゴリ内容
Python3.11+ (標準ライブラリのみで動く、pip 追加不要)
Node.jschrome-devtools MCP のため
Claude Codeサブエージェント実行環境
API キーSocialData / Jina / Gemini / Anthropic (任意)
認証情報note.com のメール + パスワード

セットアップ

# 1. 解凍してプロジェクトディレクトリに配置
unzip trend-to-note-and-x-pkg.zip
mv trend-to-note-and-x-pkg trend-to-note-and-x
cd trend-to-note-and-x

# 2. 環境変数を設定
cp .env.example .env.local
$EDITOR .env.local
# 入れるキー:
#   - SOCIALDATA_API_KEY   (https://socialdata.tools)
#   - JINA_API_KEY         (https://jina.ai/api-dashboard/)
#   - GEMINI_API_KEY       (https://aistudio.google.com/)
#   - NOTE_EMAIL / NOTE_PASSWORD (note.com)
#   - DISCORD_WEBHOOK_URL          (任意、note 進捗通知)
#   - DISCORD_WEBHOOK_X_DRAFTS     (任意、X 投稿案ドラフト)

# 3. knowledge/ を自分の情報に書き換え (★ 必須)
$EDITOR knowledge/profile.md          # 名前・X handle・経歴・キーワード辞書
$EDITOR knowledge/keywords.md         # X 検索クエリ + 監視アカウント
$EDITOR knowledge/reference-sources.md # お手本にする note / X 白リスト
# (scoring.md はデフォルトのままで OK、慣れたら調整)

# 4. Claude Code から起動
claude
> /agents
# → trend-to-note-and-x を選択して実行

★ knowledge ファイルの埋め方が一番大事

これが配布版でいちばん重要なステップ。エージェント自体は汎用で書かれているので、knowledge/ をしっかり書かないと「あなたっぽい」記事も投稿案も生成されません。

knowledge/profile.md

書き手の名前・X handle・経歴・拠点・専門・語り口を全部書く。

特に ## キーワード辞書 はスコアリングに直結するので、自分の専門領域から 15〜30 個。

knowledge/keywords.md

X 検索クエリと監視アカウント。

  • queries: X 検索の実クエリ (例: Claude Code エージェント AI 業務効率化)。狭すぎると候補ゼロになるので、最初は 10〜15 個と広めにしておくのが無難。
  • watch_accounts: 業界キーパーソンの screen_name (@ なし)。タイムラインから直接ネタを拾ってくる。

knowledge/reference-sources.md

お手本素材ソース。自分の X handle を x_whitelist に必ず入れることだけ覚えておけば、あとは空でも動きます。

本人の長文バズが reference-corpus-builder の few-shot 素材として取得され、X 投稿案の温度が本人と揃います。

単体テスト (スクリプト単独動作確認)

エージェント経由じゃなくスクリプト単独でも動作確認できます。

# Step 1 単体
python3 .claude/skills/socialdata-trend-harvester/scripts/fetch.py \
  --out data/pipeline-log/test/01-pick.json

# Step 2 単体 (Step 1 の出力を入力に)
python3 .claude/skills/reference-corpus-builder/scripts/build.py \
  --in data/pipeline-log/test/01-pick.json \
  --out data/pipeline-log/test/02-references.json

# main_kw を直接指定して Step 2 だけ動かす場合
python3 .claude/skills/reference-corpus-builder/scripts/build.py \
  --main-kw "Claude Code サブエージェント" \
  --out /tmp/refs.json

note 入稿 (Step 3) は Chrome DevTools MCP + Claude Code が必要なので、スクリプト単独では動きません。エージェント経由で実行してください。

環境変数

キー必須用途
SOCIALDATA_API_KEY✅X 検索・タイムライン取得
JINA_API_KEY✅note 記事取得 + 競合分析 + ファクトチェック
GEMINI_API_KEY✅サムネ画像生成 (gemini-3.1-flash-image-preview)
NOTE_EMAIL✅note ログイン
NOTE_PASSWORD✅note ログイン
ANTHROPIC_API_KEY任意スクリプト単体で --with-llm を使う場合のみ。Claude Code 内ならエージェントが直接判断するので不要
DISCORD_WEBHOOK_URL任意note 進捗・完了通知
DISCORD_WEBHOOK_X_DRAFTS任意X 投稿案 3 案ドラフト通知 (手動投稿用)

ハードルール (このエージェントが必ず守ること)

  1. 1 回の実行で投稿するのは最大 1 記事
  2. X / SocialData API は GET のみ。投稿・DM・引用 RT・いいね・フォロー一切しない
  3. 公開は手動推奨 (note 下書き保存で停止 → Discord 通知)
  4. リファレンス記事の本文転載禁止 (構造・パターン抽出のみ)
  5. リファレンス著者の名前を記事本文に書かない (メタログのみ)
  6. 競合分析 (note-publishing-toolkit Step 2) は省略不可
  7. ファクトチェック (note-publishing-toolkit Step 4) は省略不可
  8. 採用 tweet ID は 30 日間 seen_ids.json で重複防止
  9. 元ツイート著者を批判する角度は採らない (賛同 or 補完のみ)
  10. 画像モデルは必ず gemini-3.1-flash-image-preview (旧モデルは日本語が崩れる)
  11. X 投稿案は本人 X タイムラインの長文バズを few-shot として直接プロンプトに入れる (抽象パターン抽出禁止)

トラブルシュート

「全候補が閾値未満」で毎回スキップされる

  • knowledge/scoring.md の min_score を下げる (55 → 50)
  • knowledge/keywords.md の検索クエリが狭すぎないか確認

note 記事が取得できない (reference-corpus-builder)

  • Jina Reader の note 対応は不安定なことがある (403 になる)
  • X 側のリファレンスだけで synthesis を作って続行する設計なので致命的ではない
  • お手本にしたい note 記事 URL を直接 data/reference-cache/note-XXX.md に置く運用も可能

X 投稿案の温度が違う

  • knowledge/profile.md の X handle が正しいか確認
  • knowledge/reference-sources.md の x_whitelist に自分の handle が入っているか確認
  • 本人の長文バズが少ない場合は min_faves の閾値を下げて取得対象を広げる (reference-corpus-builder/scripts/build.py)

Chrome DevTools MCP が動かない

  • .mcp.json の --user-data-dir パスが書き込み可能か確認
  • 初回は note にログイン状態を作る必要あり (ブラウザで一度 note にログインしておく)

既存の note 自動投稿エージェントとの併用

themes.md ベースで動く vulpix-note-publisher (人が手動でテーマを積む方式) と共存可能。

両者は note-publishing-toolkit スキルを共用するので、片方が更新されれば両方に効きます。

スケジュール例:

  • vulpix-note-publisher: 1 日 1 回 (朝、計画的なテーマ)
  • trend-to-note-and-x: 4〜6 時間おき (鮮度命、X トレンド駆動)

ただし note の連投スパム判定回避のため、1 日合算で 2 本までに抑える運用を推奨。

ライセンス

MIT License (LICENSE ファイル参照)

クレジット

  • note-publishing-toolkit の Chrome DevTools MCP 実装ノウハウ (insertHTML 一発方式、隠し input 可視化等) は実走検証から積み上がっている資産
  • 設計思想 (1 エージェント = 薄いオーケストレーター + スキルが本体、draft 止まりで安全運用) は Claude Code の公式サブエージェント仕様に準拠