mcpField
C
content-brief

content-brief

github.com/infrasity-labsマーケティング・グロース15081 回インストール18 週間前に更新
リポジトリ

content-brief について

content-briefは、キーワード指標や競合見出しの分析を含むSEOコンテンツブリーフを、指定キーワードから作成します。固定フィールド形式で解析と振り分けに対応し、Notionのワークフローを使うコンテンツチーム向けです。

主な機能

  1. 01キーワード指標と検索意図の分類
  2. 02上位検索結果の見出し分析
  3. 03構造化されたSEOブリーフの作成
  4. 04優先度の採点と振り分け
  5. 05解析・検証スクリプト
  6. 06Notionワークフローの手順

活用シーン

  1. 01指定キーワードからブリーフを作成
  2. 02CSVのキーワード一覧を処理
  3. 03優先度に応じてNotion登録用に振り分け
  4. 04引き継ぎ前のブリーフ項目確認

MCP 対応

キーワード指標の取得にAhrefs MCPを、ブリーフページやカレンダー項目の作成・更新にNotion MCPを利用できます。これらのMCP接続がない場合の手動手順も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill content-brief

インストール後、Claude Code で/content-briefを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
error-handling.md
notion-schema.md
routing-logic.md
scripts/
brief_validator.py
text_parser.py

詳細

コンテンツブリーフ — キーワードからNotion用ブリーフを生成

ターゲットキーワードから、構成化されたSEOコンテンツブリーフを生成します。出力は必須のDirectionプロンプト形式に従うため、text_parser.pyスクリプトで各フィールドを抽出し、手動で整えることなくNotionに登録できます。

呼び出しトリガー

明示的なフレーズ(次のいずれか):

  • 「[keyword]のコンテンツブリーフを作成して」
  • 「このキーワードのブリーフを作成して:[keyword]」
  • 「[topic]のコンテンツブリーフ」
  • 「[keyword]のブリーフを生成して」
  • 「[keyword]のブリーフを書いて」
  • 「コンテンツブリーフスキルを実行して」

暗黙的な兆候:

  • ユーザーがキーワードを提示し、SEO仕様、編集仕様、または執筆依頼を求めている
  • ユーザーがキーワードリストを貼り付け、ブリーフを求めている

トリガーされたら、すぐに実行してください。キーワード以外の事前ヒアリングは不要です。

ヒアリング(質問は1つ、任意)

キーワードが明確な場合は、質問せずにブリーフを作成してください。

次の両方に該当する場合に限り、確認の質問を1つしてください。

  1. ターゲット読者またはクライアントを文脈から推測できない
  2. 読者によってコンテンツの切り口が大きく変わる(例:「プロジェクト管理ソフトウェア」の対象がプロジェクトマネージャーか開発者か)

簡単な確認 —「[keyword]」の主な読者は誰ですか?

  1. [推定されるペルソナA — 例:人事部長]
  2. [推定されるペルソナB — 例:オペレーションマネージャー]
  3. 教えてください

質問の理由:読者によってH1、コンテンツの切り口、執筆者向けの注記が変わります。質問を1つすることで、的外れなブリーフを防げます。

質問は最大1つです。読者を推測できる場合は、質問せずに進めてください。

データ収集(ブリーフ作成前)

Directionプロンプト形式の出力を生成する前に、次の手順を実行してください。

Step 1 — キーワード指標

優先: Ahrefs MCP(keywords_explorer_overview)→ 検索ボリューム、KD、CPC、SERPデータ。

代替手段(Ahrefs MCPがない場合): WebSearchを使って推定します。

  • [keyword] search volume KD CPC site:ahrefs.com OR site:semrush.com OR site:moz.comを検索
  • 入手できる検索ボリューム、KD、CPCの推定値を抽出
  • データが見つからない場合は、VOLUME/CPC/DIFFICULTYを[not available — add manually]に設定
Step 2 — 競合のH2/H3分析
  • WebSearchで[keyword]を検索し、オーガニック検索結果の上位3件を特定します(広告、地図、強調スニペットは除外)
  • 各URLをWebFetchし、H2とH3の見出しをすべて抽出します
  • 注:競合の構成はH2_OUTLINEの参考にします。コピーせず、ギャップ分析に活用してください。
Step 3 — 検索意図の分類

キーワードとSERPの種類に基づき、次の4つの選択肢のうち、必ずいずれか1つに分類します。

  • Informational — ユーザーが情報を得ようとしている
  • Commercial — ユーザーが購入前に選択肢を比較している
  • Transactional — ユーザーが行動または購入する準備ができている
  • Navigational — ユーザーが特定のブランドまたはサイトを探している
Step 4 — 優先度のスコアリング

references/routing-logic.mdの振り分けロジックを適用します。

  • HIGH:検索ボリューム > 200、KD < 40、かつ検索意図がCommercialまたはTransactional
  • MEDIUM:HIGHの条件を満たさないが、相応の検索ボリュームまたは戦略的重要性がある
  • LOW:検索ボリュームが少ない、難易度が高い、またはコンバージョン価値が限られるInformational

Directionプロンプトの出力形式(必須)

この形式は変更できません。 text_parser.pyスクリプトは、ラベルと完全一致する形でデータを抽出します。ラベルが以下の形式から少しでも異なると(大文字・小文字の違い、余分なスペース、アンダースコアの欠落など)、Notionのプロパティが空になります。

データを収集した後、次の構成をそのまま使ってブリーフを出力してください。

TARGET_KEYWORD: [keyword]
VOLUME: [number or "not available"]
CPC: [decimal or "not available"]
DIFFICULTY: [0-100 integer or "not available"]
SEARCH_INTENT: [Informational | Commercial | Transactional | Navigational]
AUDIENCE: [persona — job title or role]
RECOMMENDED_H1: [final proposed title]
CONTENT_ANGLE: [one paragraph describing the unique angle, why this beats competitors, what the post must do]
WORD_COUNT: [number]
SCHEMA: [schema type — e.g., FAQ, HowTo, Article, FAQ + HowTo]
PRIORITY: [HIGH | MEDIUM | LOW]
H2_OUTLINE:
- H2: [heading]
  - H3: [subheading]
  - H3: [subheading]
- H2: [heading]
  - H3: [subheading]
FAQ:
- Q: [question the audience actually searches]
- Q: [question]
- Q: [question]
INTERNAL_LINKS:
- [anchor text] → [relative URL or page title if URL unknown]
WRITER_NOTES:
[one paragraph of specific guidance: tone, POV, what to avoid, key differentiators to emphasize, CTAs, any client-specific requirements]

重要なルール:

  • すべてのフィールドラベルは、表示どおりに正確に記載してください(すべて大文字、単語間はアンダースコア)
  • SEARCH_INTENTの値は、4つの選択肢のいずれかと完全に一致している必要があります(先頭大文字)
  • PRIORITYの値は、HIGH、MEDIUM、LOWのいずれかと完全に一致している必要があります
  • H2_OUTLINE、FAQ、INTERNAL_LINKS、WRITER_NOTESはブロックフィールドです。内容は次の行以降に記載します
  • TARGET_KEYWORDより前、およびWRITER_NOTESブロックより後に、追加のテキストを記載しないでください

ワークフローのアーキテクチャ(9 ノード)

ノード役割ツール
1 — 入力キーワードと、任意のクライアント/オーディエンス情報を受け取るユーザーメッセージ
2 — キーワード指標検索ボリューム、KD、CPC、SERP タイプを取得するAhrefs MCP または WebSearch にフォールバック
3 — SERP スクレイピングオーガニック検索結果の上位 3 件から H2/H3 を抽出するWebFetch
4 — ブリーフ生成Direction プロンプトを通じてデータを処理し、構造化された出力を生成するClaude(このスキル)
5 — テキストパーサーラベル付きフィールドを抽出し、構造化変数に変換するscripts/text_parser.py
6 — 条件付きルーターPRIORITY の値に基づいて振り分けるルーティングロジック
7A — Notion 作成(HIGH)ページを作成し、Status = "Briefed: Ready for Assignment" に設定するNotion MCP
7B — Notion 作成(MED/LOW)ページを作成し、Status = "Briefed: Weekly Review Queue" に設定するNotion MCP
8A — Slack 通知(HIGH のみ)ブリーフの要約と Notion リンクをチャンネルに投稿するSlack MCP
9 — カレンダー同期Content Calendar データベースにリンク付きエントリーを作成するNotion MCP

MCP コネクターのない Claude Code では、ノード 1~5 が自動的に実行されます。ノード 6~9 では、すぐに貼り付けられる要約を生成し、Notion への手動登録方法をユーザーに案内します。

バッチ処理モード

トリガー:ユーザーが Target Keyword 列(任意で Priority Override 列)を含む CSV を渡します。

処理:

  1. CSV を読み込めることと、Target Keyword 列が存在することを確認する
  2. 各キーワードをパイプライン全体に順番に通す
  3. すべてのブリーフを順番に出力し、--- で区切る
  4. すべてのブリーフの後に、要約テーブル(キーワード | 優先度 | 文字数 | スキーマ)を出力する

想定スループット:20 件のブリーフを 20~25 分で処理(1 件あたり 60~75 秒)。

キーワードの処理に失敗した場合(SERP データがない、検索意図が曖昧など)は、要約テーブルに [FAILED — reason] と記載し、残りのキーワードの処理を続けます。

Notion への送信(MCP が利用可能な場合)

references/notion-schema.md を使って、パーサーの出力を Notion のプロパティに対応付けます。

PRIORITY に応じた 2 つの経路:

HIGH:

  • Status → "Briefed: Ready for Assignment"
  • Target Publish Date → 今日 + 14 日
  • Slack 通知をトリガーする(ノード 8A)

MEDIUM:

  • Status → "Briefed: Weekly Review Queue"
  • Target Publish Date → 今日 + 28 日

LOW:

  • Status → "Briefed: Weekly Review Queue"
  • Target Publish Date → 今日 + 42 日

ページの作成後、Calendar Sync(ノード 9)を実行し、Content Calendar データベースにリンク付きエントリーを作成します。

作成前の事前確認:Notion に同じ TARGET_KEYWORD を持つ既存ページがないかクエリします。見つかった場合は、重複を防ぐため create_page ではなく update_page に振り分けます。

マルチクライアント設定

各クライアントには以下を用意します。

  • 個別の Notion インテグレーショントークン
  • 個別のデータベース ID
  • クライアント固有の Direction プロンプトのバリエーション(オーディエンス、トーン、内部リンクのベース URL を調整)

新しいクライアントのオンボーディングには、コネクターの設定とブリーフ 1 件のエンドツーエンドのテストに約 45~60 分かかります。

Notion MCP に接続されていない場合の出力

Notion MCP が利用できない場合は、Direction プロンプトの出力を生成した後、以下を追加します。

---
NOTION PUSH: Not connected. To add this brief to Notion manually:

1. Open your Notion database
2. Create a new page
3. Paste the following field values:
   [formatted summary of all extracted fields]

Or run: python scripts/text_parser.py brief.txt --output json
to get a JSON payload ready for the Notion API.
---

検証ゲート

出力を生成した後、以下を意識的に確認します。

  • 11 個の単純フィールドがすべて存在し、空ではない
  • SEARCH_INTENT が有効な 4 つの値のいずれかである
  • PRIORITY が正確に HIGH、MEDIUM、LOW のいずれかである
  • H2_OUTLINE に H2 が 4 つ以上あり、それぞれに H3 が 1 つ以上ある
  • FAQ に質問が 3 つ以上ある
  • INTERNAL_LINKS に項目が 2 つ以上ある
  • WRITER_NOTES が内容のある段落であり、プレースホルダーではない

自動検証を行うには、出力ファイルに対して scripts/brief_validator.py を実行します。

エラー処理

状況動作
キーワードデータを利用できない数値フィールドに「利用不可」と設定し、編集者に手動で確認するよう指示するメモをWRITER_NOTESに追加します
SERPのスクレイピングがブロックされた(403/有料コンテンツ)スクレイピングをスキップし、WRITER_NOTESに「競合のアウトラインを利用できない」と記載して、ブリーフの作成を続行します
検索意図が曖昧デフォルトでInformationalに設定し、WRITER_NOTESに「検索意図が曖昧 — ライターへのブリーフ作成前に確認」と記載します
Notionの選択値が一致しない値の大文字・小文字を正確に指定します。Notionの選択項目では大文字・小文字が区別されます
キーワードの重複が検出されたcreate_pageではなくupdate_pageに振り分けます
解析したブリーフに空のプロパティが3つ以上ある手動確認が必要であることを示し、Notionに送信しません
キーワードのバッチ処理に失敗サマリーテーブルに記録し、処理を続けます
CSVにTarget Keyword列がない処理を停止し、列名をユーザーに確認します

失敗箇所の一覧については、references/error-handling.mdを参照してください。

ツール

スクリプト役割
scripts/text_parser.pyDirectionプロンプトの出力からラベル付きフィールドを抽出し、構造化されたdictに変換します。python text_parser.py brief.txt --output json
scripts/brief_validator.py必須フィールドがすべてそろっていること、値が許可された選択肢に含まれていることを検証します。python brief_validator.py brief.txt

参考資料

  • references/notion-schema.md — Notionデータベースのプロパティ設定(名前、型、許可された値)
  • references/routing-logic.md — 優先度スコアリングのルールと公開日の計算方法
  • references/error-handling.md — 既知の失敗箇所と対処方法

拒否すべきアンチパターン

  • 必須のDirectionプロンプトのラベル形式から逸脱する(パーサーが動作しなくなります)
  • フィールドラベルを小文字または大文字・小文字が混在した形式で使用する(TARGET_KEYWORDではなくTarget_Keyword)
  • SEARCH_INTENTに許可された4つの値以外を設定する
  • キーワードとSERPのデータを収集する前にブリーフを作成する
  • 処理を開始する前に複数の聞き取り質問をする
  • あいまいなWRITER_NOTESを記述する(「このトピックについて良い記事を書く」など)
  • データがない場合にキーワード指標を捏造する — 必ず「利用不可」として示します
  • 空のフィールドが3つ以上ある状態でNotionに送信する

コメント