AIワークフロー

Claude + Geminiを組み合わせて記事を量産する設計 (Wheel公開)

公開: 2026-05-19 · 著者: Sasaki Ryuji

メディアサイトを月60本ペースで自動更新するLLM分業設計の実装

Claude + Geminiを組み合わせて記事を量産する設計 (Wheel公開)

メディアサイトを運営して記事を量産する場合、Claude と Gemini のどちらを使うかは大きな判断ポイントです。ただし私の結論は「両方を分業させる」です。ai-pick.tech と saas-diary.com で運用している記事量産パイプラインは、Gemini Flash と Claude を役割分担させて、月コスト数百円で月60本の高品質な記事を生成しています。この記事ではその設計と実コードを公開します。

分業の核 — どちらが何に強いか

2026年5月時点の両者の特性を、実プロジェクトで使い比べた結果はこうです。

タスクGemini 2.5 FlashClaude Haiku 4.5推奨
本文の量産 (2,000-3,000字)高速・低コスト・品質中速度中・コスト中・品質高Gemini Flash
記事の構成設計 (h2見出し)テンプレ的になりがち論理性が高いClaude Haiku
AI臭排除・文体改善苦手 (副詞が頻発)得意 (日本語の自然さ高)Claude Haiku
ファクトチェック幻覚あり制約遵守が高いClaude Haiku
翻訳 (en/pt/es)高速・低コスト品質微妙に上Gemini Flash
料金 (per 1M tokens)$0.10 / $0.40$1 / $5

この特性を踏まえた分業ルールが「構成は Claude、本文は Gemini、最終チェックは Claude」です。本文の文字数が多いタスクは Gemini に任せてコストを抑え、品質判定や論理構造の必要な部分だけ Claude に任せる構成です。

パイプラインの全体像

記事1本を生成する流れはこうなります。各ステップは独立したスクリプトに分けており、エラー時の再実行が容易です。

  1. トピック選定: topics.json から未生成のスラグを選ぶ (Node.js スクリプト)
  2. 構成生成: Claude Haiku で h2見出し5個 + 各h2の概要を生成 (約 5円/本)
  3. 本文生成: Gemini Flash で構成に従って本文 2,500-3,500字を生成 (約 0.5円/本)
  4. 品質チェック: Claude Haiku で AI臭ワード検出 + 構造化データ整合性 (約 2円/本)
  5. HTML 化: site-html-builder.mjs で記事ページ生成 (LLM 不要)
  6. FTPS デプロイ: WING にアップロード (LLM 不要)

1記事あたり LLM コストは約 7-8円、月60本で約 500円です。これに対して、本文を Claude Sonnet 4.6 単独で生成すると 1記事あたり約 9円、月60本で約 540円。分業のほうが品質が高く、コストもほぼ同じです。

構成生成スクリプト (Claude Haiku)

// scripts/generate-structure.mjs
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

export async function generateStructure(topic) {
 const prompt = `以下のトピックで技術記事の構成を作ってください。

【トピック】${topic.title}
【ターゲット】${topic.target}
【キーワード】${topic.keyword}

h2見出しを5個、各見出しの下に書くべき内容の概要 (50-80字) を返してください。
JSON形式: { "sections": [{ "h2": "...", "description": "..." }, ...] }`;

 const response = await client.messages.create({
 model: 'claude-haiku-4-5',
 max_tokens: 1500,
 messages: [{ role: 'user', content: prompt }]
 });
 return JSON.parse(response.content[0].text);
}

本文生成スクリプト (Gemini Flash)

// scripts/generate-body.mjs
import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

export async function generateBody(topic, structure) {
 const sectionsText = structure.sections
 .map((s, i) => `## ${i+1}. ${s.h2}\n → ${s.description}`)
 .join('\n\n');

 const prompt = `以下の構成に従って、2,500-3,500字の技術記事本文をHTMLで書いてください。

【タイトル】${topic.title}
【構成】
${sectionsText}

【制約】
- 各h2見出しの直後に200-400字の段落、その後コード例 or 表 or 箇条書きを配置
- AI臭ワード禁止: 大きく, 想像以上に, 明確に, , 新しい, 理想の
- 体験談スニペット 2箇所以上、具体数値 5個以上
- 出力はHTML、

,

,

,