Tutorials

Claude Codeのサブエージェント機能でブログ記事生成を自動化する方法【設定ファイルつき】

ブログ記事を書くたびに、リサーチ・構成・執筆・投稿という繰り返し作業に時間を取られていませんか?Claude Codeのサブエージェント機能を使えば、この一連の流れを複数のAIエージェントに分担させ、大幅に自動化できます。本記事では、サブエージェントの基本概念から実際の設定ファイルの書き方まで、手を動かしながら理解できるよう丁寧に解説します。

サブエージェントって何?1分で理解する基本概念

Claude Codeには、チャット画面で直接指示を出す「通常の会話」とは別に、サブエージェントと呼ばれる仕組みがあります。サブエージェントは独立した専用のコンテキストウィンドウ(会話の記憶領域)を持ち、特定の役割に特化した処理を行います。通常の会話がすべての作業を1人で抱えるのに対し、サブエージェントは「専門家チーム」のように分業します。

設定は .claude/agents/ ディレクトリにMarkdownファイルを置くだけです(公式ドキュメント: code.claude.com/docs/ja/sub-agents)。ファイルの description フィールドに用途を書いておくと、Claude Codeが適切なタイミングで自動的にそのエージェントを呼び出してくれます。

ブログ生成でサブエージェントを使うメリット

ブログ記事生成にサブエージェントを使う最大のメリットは役割分担による品質安定です。リサーチ担当が集めた情報を汚染せずにライター担当へ渡せるため、最終的な文章のトーンや構成がぶれにくくなります。また、修正が必要なフェーズだけ個別に再実行できるという柔軟性も得られます。

ここで「コンテキスト汚染」という言葉を使いますが、これは「前の作業で蓄積された情報や指示が、後続の作業に意図せず混入すること」です。たとえばリサーチ中に収集した断片的な情報が、そのまま執筆フェーズに持ち込まれて文章の構成を崩す、というケースが該当します。サブエージェントは各エージェントが独立したコンテキストウィンドウを持つため、このコンテキスト汚染を構造的に防げます。

ブログ生成ワークフローの全体像

本記事で構築するワークフローは3つのエージェントで構成されます。

オーケストレーター(親)
├── リサーチエージェント  → research.md を出力
├── ライターエージェント  → draft.md を出力
└── パブリッシャーエージェント → WordPress へ投稿

各エージェントの入出力を整理すると次のようになります。

エージェント 入力 出力
リサーチ トピック指示 research.md(事実・構成案)
ライター research.md draft.md(記事本文)
パブリッシャー draft.md WordPress 投稿完了

なぜ1つのプロンプトで全部やらずに分けるのか

「リサーチも執筆も投稿も、1回のプロンプトで指示すればいいのでは?」と思うかもしれません。しかし実際に試すと、長い会話の途中でコンテキストが混在し、リサーチ中に得た断片的な情報が執筆フェーズに漏れ込んで記事の構成が崩れることがあります(これがコンテキスト汚染です)。エージェントを分けることでコンテキスト汚染を防ぎ、各フェーズの出力品質が安定します。マルチエージェント構成では複数の処理を並列で実行できるため、作業速度も大幅に向上します。

ステップ1 — サブエージェントの定義ファイルを作る

まず .claude/agents/ ディレクトリを作成します。このディレクトリ内に置いたファイルはプロジェクト限定のスコープで有効になります。なお ~/.claude/agents/ に置くとグローバルスコープとなり、すべてのプロジェクトから利用できます。

定義ファイルはMarkdownのフロントマター形式で書きます。必須フィールドは namedescriptioninstructions の3つです。

  • name: エージェントの識別名(英数字・ハイフン推奨)
  • description: いつ呼び出すかをClaude Codeに伝える説明文。ここが不明確だと自動呼び出しが機能しません
  • instructions: エージェントへの具体的な指示(通常の会話と同じように書く)

リサーチエージェントの定義例

リサーチエージェントの定義ファイルの例を示します。

---
name: researcher
description: |
  ブログ記事のトピックを受け取り、事実調査・競合分析・構成案を作成するエージェント。
  トピックについて調査が必要なときに呼び出す。
---

# リサーチエージェント

あなたはブログ記事のリサーチ担当です。以下の手順で作業してください。

1. 与えられたトピックについてWebで情報を収集する
2. 競合記事を分析し差別化ポイントを見つける
3. SEOキーワードを選定する
4. `drafts/work/research.md` に結果を保存する

ステップ2 — エージェントをつなぐオーケストレーターを設定する

オーケストレーター(親エージェント)は各サブエージェントへ作業を委譲する司令塔です。サブエージェントへのタスク委譲は、instructions の中で「次のエージェントを呼び出して〇〇をさせる」と自然言語で指示するだけです。Claude Code 2.0以降ではエージェントチーム(Agent Teams)機能が強化され、このオーケストレーション設定がより簡単になっています。自分のバージョンは claude --version コマンドで確認できます。

オーケストレーターの定義例

.claude/agents/orchestrator.md として保存するオーケストレーター自体の設定ファイルです。

---
name: blog-orchestrator
description: |
  ブログ記事の生成フロー全体を管理するオーケストレーター。
  /generate-blog コマンドで呼び出され、リサーチ・執筆・投稿を順番に実行する。
---

# ブログ生成オーケストレーター

あなたはブログ記事生成ワークフローの司令塔です。
以下の順番で各エージェントに作業を委譲してください。

1. **researcher エージェント**を呼び出し、与えられたトピックのリサーチを依頼する
2. researcher の完了を確認したら、**writer エージェント**を呼び出し、執筆を依頼する
3. writer の完了を確認したら、**publisher エージェント**を呼び出し、WordPressへの投稿を依頼する
4. 全工程完了後、生成した記事のURLをユーザーに報告する

ライターエージェントの定義例

---
name: writer
description: |
  research.md のリサーチ結果をもとにブログ記事の初稿を執筆するエージェント。
  記事の執筆が必要なときに呼び出す。
---

# ライターエージェント

あなたはブログ記事のライターです。

1. `drafts/work/research.md` を読んでトピック・構成案を把握する
2. 構成案のH2/H3構成に従って本文を執筆する
3. `drafts/work/draft.md` に完成した原稿を保存する

パブリッシャーエージェントの定義例

---
name: publisher
description: |
  draft.md の記事をWordPressに投稿するエージェント。
  記事の投稿が必要なときに呼び出す。
---

# パブリッシャーエージェント

あなたはWordPress投稿担当です。

1. `drafts/work/draft.md` を読んでタイトル・本文・メタ情報を取得する
2. `scripts/wp-publish.sh` を実行してWordPressへ投稿する

API認証情報は .env ファイルで管理し、定義ファイルには直接書かないことが重要です。

ステップ3 — 実際に動かしてみる

ステップ1・2で作成した4つの定義ファイル(orchestrator.mdresearcher.mdwriter.mdpublisher.md)が .claude/agents/ に揃ったら準備完了です。Claude Codeのチャット画面(またはCLI)で次のように呼び出します。

/generate-blog Claude Codeのサブエージェント機能について

/generate-blog は自分でつくった呼び出し名ではなく、オーケストレーターの description に「/generate-blog コマンドで呼び出される」と書いたことでClaude Codeが紐付けるキーワードです。定義ファイルを配置して初めて機能するコマンドであり、Claude Code自体にあらかじめ組み込まれているわけではありません。

Claude Codeは description を参照し、適切なエージェントを順番に呼び出します。実行中は次のような動作が確認できます。

  1. リサーチエージェントが起動し、Web検索と競合分析を開始
  2. drafts/work/research.md が生成され、ライターエージェントへ引き継ぎ
  3. ライターエージェントresearch.md を読み込み、本文を執筆
  4. drafts/work/draft.md が生成され、パブリッシャーエージェントへ引き継ぎ
  5. パブリッシャーエージェントwp-publish.sh を実行してWordPressへ投稿

生成されたファイルの確認方法

生成されたファイルは drafts/ ディレクトリで確認できます。投稿前に内容を確認・修正したい場合は、パブリッシャーエージェントの指示に status: draft(下書き)での保存を指定しておくと安全です。

よくある失敗と対処法

エージェントが呼び出されない(descriptionが不明確)

最も多いトラブルです。description が抽象的すぎると、Claude Codeがどのタイミングで呼び出すべきか判断できません。「〇〇が必要なときに呼び出す」「〇〇を処理するエージェント」のように、呼び出し条件を具体的に書きましょう。

コンテキストが混在する(ファイル受け渡しの設計ミス)

エージェント間のデータ受け渡しはファイル経由で行います。前のエージェントが出力するファイルパスと、次のエージェントが読み込むファイルパスが一致しているか確認してください。drafts/work/ のような中間作業ディレクトリを決めておくと管理しやすくなります。

投稿が失敗する(API認証情報の設定漏れ)

WordPress REST APIへの投稿には、WP_SITE_URLWP_USERNAMEWP_APP_PASSWORD の3つの環境変数が必要です。.env ファイルに設定されているか確認してください。WordPressの管理画面で「アプリケーションパスワード」を生成し、通常のログインパスワードとは別に設定する点を見落としがちです。

まとめ — 次のステップ

Claude Codeのサブエージェント機能を使うことで、ブログ記事生成のリサーチ・執筆・投稿という一連の作業を3つのエージェントに分業できます。各エージェントが独立したコンテキストを持つため品質が安定し、修正が必要なフェーズだけ個別に再実行できる柔軟さも得られます。

まずは今回紹介した3つの定義ファイルを .claude/agents/ に作成し、/generate-blog コマンドで動作を確認してみてください。慣れてきたら、SNS用の短文生成エージェントやサムネイル用のalt文生成エージェントを追加するなど、コンテンツ制作の他の工程にも応用できます。

日本語での活用事例もQiitaやZennで増えています。公式ドキュメント(Sub Agents – Claude Code)を合わせて参照しながら、自分のワークフローに合ったエージェント構成を構築してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です