Claude Codeに全部やらせていた頃の話

「AIに全部やらせれば楽じゃん」

私もそう思っていました。ニュースの収集、記事の執筆、サイトの更新。全部Claude Codeに任せれば、寝ている間に仕事が終わる。

実際にやってみました。Claude Codeにニュース収集を1日7回やらせ、毎回WebSearchで情報を探させ、記事を生成させ、デプロイまで一気通貫。

結果、動きました。ちゃんと動きました。

ただ、1つ問題がありました。トークン消費が想定の2倍以上だったのです。

冷静に考えれば当たり前です。RSSフィードの巡回なんて、同じURLを同じ形式で叩くだけ。判断力は要りません。それなのに毎回Claude Codeを起動し、WebSearchでニュースを探させていた。

高級シェフに皿洗いをさせていたようなものです。

判断基準はたった1つ。「ロジックが固定か、毎回判断が要るか」

この失敗から見つけた使い分けの原則は、驚くほどシンプルです。

ロジックが固定 → Python。毎回判断が変わる → Claude Code。

たとえば、RSSフィードからニュースを取得する処理。URLは決まっている。パース方法も決まっている。重複排除のロジックも決まっている。これは「固定ロジック」です。Pythonで書けば、トークン消費ゼロで動きます。

一方、「このニュースは面白いか?」「どういう角度で記事にするか?」「どのチャネルで配信するか?」。これは毎回答えが変わります。文脈を読み、判断する必要がある。これはClaude Codeの仕事です。

Pythonに任せるもの(固定ロジック)

Claude Codeに任せるもの(判断が必要)

実際に作ったパイプラインの全体像

この原則で、私のニュース自動配信パイプラインを再設計しました。

Before:Claude Code単独(1日7回起動)

Claude Code (WebSearch) → 記事生成 → デプロイ × 7回/日

毎回WebSearchでニュースを探すところからClaude Codeがやっていました。同じフィードを毎回探し直す。無駄です。

After:Python + Claude Codeの3フェーズ(1日3回起動)

Phase 1: Python(トークン0)
  RSS収集 → テーマ自動分類 → 重複排除 → raw_news.json

Phase 2: Claude Code(判断のみ)
  raw_news.json読み → ランキング → 角度決定 → atoms.csv転記

Phase 3: Claude Code(生成のみ)
  新規atoms → 記事JSON生成 → サイトビルド → デプロイ → git push

Phase 1が全ての鍵です。 Pythonスクリプト(778行)がRSSフィードを巡回し、テーマを自動分類し、重複を排除します。この処理にトークンは1つも使いません。

Claude Codeが起動するのはPhase 2から。しかも、Pythonが整理済みのデータを「読むだけ」です。WebSearchで探し回る必要がない。

結果として、1日7回の起動が3回に減り、各回のトークン消費も大幅に減りました。

3フェーズ設計の技術的な中身

Phase 1:Python(データ収集 + 前処理)

# brain_content.py の構成(778行)
# - 30以上のRSSフィードを巡回
# - feedparserでパース(無料のPythonライブラリ)
# - キーワードマッチングで17テーマに自動分類
# - URL照合で重複排除
# - 結果をraw_news.jsonに保存

このスクリプトはmacOSのlaunchdで定時実行されます。朝7時、昼12時、夜20時の3回。Pythonが起動し、数秒で処理が終わり、結果をJSONに吐き出して終了。

ポイントは「Pythonにやらせる仕事を増やすほど、Claude Codeの起動回数が減る」という構造です。

Phase 2:Claude Code(選別 + 判断)

Pythonが吐いたraw_news.jsonを読み、S/A/B/Cランクの重要度判定、読者に刺さる角度の決定、ネタDBへの転記判断を行います。

ここはClaude Codeでなければできません。「この研究は、自分の読者の課題と接続できるか?」——こういう判断はPythonには無理です。

Phase 3:Claude Code(生成 + デプロイ)

選別されたネタから記事JSONを生成し、事実確認、炎上リスクチェックを通し、HTMLに変換してデプロイします。記事のニュアンスを整え、事実を検証し、適切なトーンで書く。固定ロジックでは対応できない領域です。

シェルスクリプトが「橋渡し役」になる

PythonとClaude Codeをつなぐのは、シンプルなシェルスクリプトです。

# ai-news-collect.sh(簡略版)

# Phase 1: Python(トークン0)
python3 brain_content.py rss --days 1

# ニュースが0件なら終了
if [ "$NEWS_COUNT" -eq 0 ]; then exit 0; fi

# Phase 2: Claude Code(判断)
claude -p "raw_news.jsonを読んでランキング"

# Phase 3: Claude Code(生成 + デプロイ)
claude -p "新規atomsからGuide投稿を生成"

シェルスクリプトの役割は3つです。

この設計で得られた具体的な効果

トークン消費の変化

1日7回のWebSearch込みフル起動から、1日3回の整理済みデータ読みに変わり、体感で半分以下になりました。

アウトプットの変化

ネタDBを中央ハブにしたことで、1つのネタからSEO記事・X投稿・note記事・Instagram投稿にも展開できるようになりました。

信頼性の変化

Pythonが「確実に情報を集める」、Claude Codeが「的確に判断する」。それぞれの強みが活きる設計です。

あなたが今日できること

「全部Claude Codeでやっている作業」を1つ思い浮かべてください。その中に「毎回同じ手順」の部分はありませんか?

あれば、それをPythonに切り出す。たったそれだけで、Claude Codeの起動回数が減り、トークン代が下がり、処理速度が上がります。

  1. Claude Codeに「この作業をPythonスクリプトにして」と頼む
  2. そのPythonスクリプトをcron/launchdで定時実行する
  3. 結果をJSONやCSVに吐き出す
  4. Claude Codeはそのファイルを読むところから始める

Claude Codeは優秀なシェフです。でもシェフに皿洗いはさせない。仕込みはPythonに任せて、Claude Codeには「味付け」に集中してもらう。

それが、私がたどり着いた最適解です。