「AIに全部やらせれば楽じゃん」 私もそう思っていました。ニュースの収集、記事の執筆、サイトの更新。全部Claude Codeに任せれば、寝ている間に仕事が終わる。 実際にやってみました。Claude Codeにニュース収集を1日7回やらせ、毎回WebSearchで情報を探させ、記事を生成させ、デプロイまで一気通貫。 結果、動きました。ちゃんと動きました。 ただ、1つ問題がありました。トークン消費が想定の2倍以上だったのです。 冷静に考えれば当たり前です。RSSフィードの巡回なんて、同じURLを同じ形式で叩くだけ。判断力は要りません。それなのに毎回Claude Codeを起動し、WebSearchでニュースを探させていた。 高級シェフに皿洗いをさせていたようなものです。
この失敗から見つけた使い分けの原則は、驚くほどシンプルです。
ロジックが固定 → Python。 毎回判断が変わる → Claude Code。 たとえば、RSSフィードからニュースを取得する処理。 URLは決まっている。パース方法も決まっている。 重複排除のロジックも決まっている。これは「固定ロジック」です。Pythonで書けば、トークン消費ゼロで動きます。 一方、「このニュースは面白いか?」「どういう角度で記事にするか?」「どのチャネルで配信するか?」。 これは毎回答えが変わります。文脈を読み、判断する必要がある。これはClaude Codeの仕事です。 整理するとこうなります。
この原則で、私のニュース自動配信パイプラインを再設計しました。
Claude Code (WebSearch) → 記事生成 → デプロイ × 7回/日
毎回WebSearchでニュースを探すところからClaude Codeがやっていました。同じフィードを毎回探し直す。無駄です。
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回に減り、各回のトークン消費も大幅に減りました。
もう少し具体的に説明します。
# brain_content.py の構成(778行)
# - 30以上のRSSフィードを巡回(Google AI Blog, OpenAI, Anthropic, TechCrunch等)
# - feedparserでパース(無料のPythonライブラリ)
# - キーワードマッチングで17テーマに自動分類
# - URL照合で重複排除(過去の収集ログと比較)
# - 結果をraw_news.jsonに保存
このスクリプトはmacOSのlaunchdで定時実行されます。朝7時、昼12時、夜20時の3回。Pythonが起動し、数秒で処理が終わり、結果をJSONに吐き出して終了。 ポイントは「Pythonにやらせる仕事を増やすほど、Claude Codeの起動回数が減る」という構造です。 テーマ分類も最初はClaude Codeにやらせていましたが、キーワードマッチングで十分な精度が出たのでPythonに移しました。
Pythonが吐いたraw_news.jsonを読み、以下を判断します。
「Stanford大学のAI同調性研究は、川合の”道具より覇気を研げ”という主張と接続できるか?」 こういう判断はPythonには無理です。
Phase 2で選別されたatomsから、サイト用のニュース記事JSONを生成します。 事実確認ゲート、炎上リスクチェックを通し、ビルドスクリプトでHTMLに変換、Cloudflare Pagesにデプロイ、gitにpush。 ここもClaude Codeの仕事です。記事のニュアンスを整え、事実を検証し、適切なトーンで書く。固定ロジックでは対応できません。
PythonとClaude Codeをつなぐのは、シンプルなシェルスクリプトです。
# ai-news-collect.sh(簡略版)
# Phase 1: Python(トークン0)
python3 brain_content.py rss --days 1
# ニュースが0件なら終了(Claude Code起動しない = コスト0)
if [ "$NEWS_COUNT" -eq 0 ]; then exit 0; fi
# Phase 2: Claude Code(判断)
claude -p "raw_news.jsonを読んでランキング+atoms.csv転記"
# Phase 3: Claude Code(生成 + デプロイ)
claude -p "新規atomsからGuide投稿を生成 → build → deploy"
シェルスクリプトの役割は3つです。
「全部Claude Codeでやっている作業」を1つ思い浮かべてください。 その中に「毎回同じ手順」の部分はありませんか? あれば、それをPythonに切り出す。たったそれだけで、Claude Codeの起動回数が減り、トークン代が下がり、処理速度が上がります。 始め方はシンプルです。