mcpField
C
check

check

github.com/indranilbanerjeeマーケティング・グロース91787 回インストール2 日前に更新
リポジトリ

check について

公開前のマーケティングコンテンツを検査し、評価結果を PASS・WARN・BLOCKED の判定にまとめる Claude スキルです。ブランドの語調、根拠、構成、コンプライアンスを含む詳細評価にも対応します。

主な機能

  1. 01根拠のない主張や仮URLの検出
  2. 02証拠ファイルによる主張の照合
  3. 03ブランドの語調と構成の評価
  4. 04品質と読みやすさの採点
  5. 05EU向け素材の C2PA 来歴確認

活用シーン

  1. 01ブログ、広告、メールの公開前確認
  2. 02マーケティング上の主張の根拠確認
  3. 03ブランドの語調に沿った文面の検証
  4. 04EU向け AI 生成素材の確認

インストール

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

$npx skills add https://github.com/indranilbanerjee/digital-marketing-pro --skill check

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

詳細

/digital-marketing-pro:check — 公開前の統合品質ゲート

スクリプトの場所。 ホストで ${CLAUDE_PLUGIN_ROOT} が設定されていない場合、スクリプトはこのプラグインの skills/ と同じ階層にある scripts/ フォルダー内にあります。Python 3.10 以降で実行してください。python が見つからない場合は、python3 を使用します(macOS、多くの Linux システム)。

このスキルは、マーケティングコンテンツを公開する前の標準ゲートです。評価スイート(scripts/eval-runner.py)を実行し、対処可能な問題を示したうえで、合格または不合格の判定をひとつ出します。

コンテキストの効率化

負荷の高いスキルです。参照ファイルを Read する前に Grep を実行し、一致した範囲のみを offset と limit を指定して Read してください。ファイルを開く前に、~/.claude-marketing/brands/{slug}/(環境変数が設定されている場合は $CLAUDE_PLUGIN_DATA/digital-marketing-pro/brands/{slug}/)にあるブランドのワークスペースを一覧表示してください。セッションの途中で再実行する場合は、すでにコンテキストにあるファイルをスキップしてください。

ブログ記事、広告コピー、メール、ソーシャル投稿、ランディングページ、プレスリリース、その他ブランドに関するコピーなど、マーケティングコンテンツを公開する前に、このスキルを使用してください。

このスキルが作られた理由

以前のバージョンには、すべてのプロジェクトにおけるすべての Write/Edit 操作で、幻覚とブランドコンプライアンスのチェックを自動実行するグローバルな PreToolUse フックが含まれていました。このフックはすべてのプラグインとプロジェクトでグローバルに実行され(Slack の書き込み、GitHub PR、コード編集など、すべてが対象)、マーケティング以外の作業を妨げるため、削除されました。

/digital-marketing-pro:check は、この自動ゲートをユーザーが明示的に実行するゲートに置き換えます。処理内容は同じですが、意図的に実行する形になっています。

チェック対象

このチェックは、マスター評価オーケストレーターである scripts/eval-runner.py に処理を委任し、以下の4つの関連スクリプトを呼び出します。

項目スクリプトチェック内容
幻覚hallucination-detector.py出典のない統計、プレースホルダー URL(example.com / your-site.com)、裏付けのない最上級表現(「best」「#1」「leading」)、捏造された引用
主張claim-verifier.py(--evidence が指定された場合)特定の主張を、ユーザーが提供したエビデンスファイルと照合します
ブランドボイスbrand-voice-scorer.py(--brand が指定された場合)有効なブランドのボイスプロファイル(フォーマルさ、活気、ユーモア、権威性、推奨語・回避語)に照らしてコンテンツを評価します
構成output-validator.py(--schema が指定された場合)コンテンツが想定されるスキーマ(blog_post、email、ad_copy、social_post、landing_page、press_release、content_brief、campaign_plan)に適合しているか検証します
C2PA の来歴(コンプライアンス)embed-c2pa.py(存在確認)ブランドの target_markets に EU/EEA の管轄区域が含まれ、付属アセットが AI 生成の場合、C2PA の来歴マニフェストが存在し、有効であることを検証します。マニフェストがない、または無効な場合は CRITICAL / BLOCKED となります(EU AI Act 第50条。2026年8月2日から適用)

さらに、コンテンツの品質と可読性も評価します(常に実行)。

サブコマンドとモード

デフォルト(run-quick)
/digital-marketing-pro:check <file-path-or-content>

クイック評価を実行します。対象は幻覚の検出、コンテンツ品質、可読性です。高速(約2秒)で、外部依存関係はありません。通常のチェックに使用してください。

完全評価(run-full)
/digital-marketing-pro:check <file-path-or-content> --full

6つすべての項目を評価します。幻覚、主張(エビデンスが指定されている場合)、ブランドボイス(ブランドが指定されている場合)、構成(スキーマが指定されている場合)、コンテンツ品質、可読性が対象です。クライアント向けまたは外部向けのコンテンツを公開する前に使用してください。

コンプライアンス重視(run-compliance)
/digital-marketing-pro:check <file-path-or-content> --compliance --brand <slug> [--evidence <path>] [--schema <name>]

幻覚、主張、ブランドボイス、構成を評価します。主張の裏付けとブランドボイスの忠実性が特に重要となる規制対象業界(医療、金融サービス、アルコール、大麻、ギャンブル)に最適です。

エビデンスファイルを指定する場合
/digital-marketing-pro:check <file-path> --evidence <evidence-file.json>

裏付けを確認したい特定の主張がコンテンツに含まれる場合は、JSON エビデンスファイルを指定してください。

{
  "evidence": [
    {
      "claim": "50% increase in conversions",
      "source": "GA4 Q4 report",
      "date": "2025-12-31",
      "verified": true
    },
    {
      "claim": "Trusted by Fortune 500 companies",
      "source": "Customer roster (internal)",
      "date": "2026-04-01",
      "verified": true
    }
  ]
}

このチェックでは、コンテンツ内のすべての主張を抽出し、エビデンスの項目と一致しないものにフラグを付けます。

スキーマ検証を行う場合
/digital-marketing-pro:check <file-path> --schema blog_post

コンテンツが指定されたスキーマの構造要件を満たしているかを検証します。利用可能なスキーマは blog_post、email、ad_copy、social_post、landing_page、press_release、content_brief、campaign_plan です。すべてのスキーマとその要件を確認するには、--schema list を使用してください。

ブランドボイスを確認する場合
/digital-marketing-pro:check <file-path> --brand acme

~/.claude-marketing/brands/acme/profile.json にあるブランドボイスのプロファイルに照らして、コンテンツを評価します。各評価軸(フォーマルさ、活気、ユーモア、権威性)の内訳と、「使用する/避ける」単語リストからの逸脱を報告します。

出力形式

チェック結果は統合レポートとして返されます。

DM CHECK REPORT — <file or content snippet>
=============================================

Composite Score: 73.4 / 100  (Grade: B-)
Auto-Reject: NO

Dimensions:
  Hallucination ............ 96/100  PASS  (weight 0.40)
  Content Quality .......... 78/100  PASS  (weight 0.35)
  Readability .............. 65/100  PASS  (weight 0.25)

Issues Found:
  CRITICAL: None
  WARNING (2):
    - Line 14: Unattributed statistic "76% of buyers prefer..."
      Suggestion: cite source or rephrase as observation
    - Line 22: Superlative "best in class" without substantiation
      Suggestion: replace with measurable claim or proof point

Decision: PASS — safe to publish but address WARNINGs first

CRITICAL の問題が見つかった場合、判定は BLOCKED となり、公開前に修正するようユーザーに求めます。

判定ルール
  • PASS — CRITICAL の問題がなく、総合スコアが自動却下しきい値(auto_reject_threshold、デフォルトは40)を上回っている
  • WARN — CRITICAL の問題はないものの、WARNING が1件以上ある。公開前に対処する必要があります
  • BLOCKED — CRITICAL の問題が1件以上ある(例:プレースホルダー URL、見出しに含まれる捏造された統計、規制対象業界で必須の免責事項の欠落、EU を対象とするキャンペーンで AI 生成アセットの C2PA 来歴マニフェストが欠落)。修正されるまでコンテンツを公開できません

AI らしさのスキャン(参考情報のセクション。スコアには含めません)

eval-runner のスコアラーに加え、両方の AI らしさのスキャンを実行し、チェック結果の単一の ADVISORY セクションとして報告します。

python "${CLAUDE_PLUGIN_ROOT}/scripts/ai-tell-scan.py"          --file <input>   # Tier 1: surface
python "${CLAUDE_PLUGIN_ROOT}/scripts/structural-tell-scan.py"  --file <input>   # Tier 2: structure
  • Tier 1(表層) — LLM が好む語彙、重要性を示す表現、控えめな副詞の集まり、接続詞や分詞から始まる文、em ダッシュの密度、根拠のない一文を確認します。全体評価の LOW/MODERATE/HIGH と、修正案を添えた該当文を報告します。重要性を示す表現は "fix": "Delete this sentence; do not reword it." として報告されます。言い換えは適切な対処ではないため、そのまま引き継いでください。
  • Tier 2(構成) — 全体評価の OK/NOTE/ATTENTION と、各 NOTE/ATTENTION の検出結果および該当箇所(道徳的な説教、セクションの対称性、見出しの並列性、具体性、立場、段落の均等さ、エンティティの展開)を報告します。entity_development では、具体的な既存の内容を発展させることが修正方法であり、具体的な内容を削除することではないと、必ず引き継いでください。

このセクション全体は、PASS/WARN/BLOCKED の判定には決して影響しません。 両スクリプトは、しきい値を eval 設定の対象外として、意図的にそれぞれの内部に保持しています。これらは公開の可否を決める基準ではなく、人間の編集者による編集上の判断だからです。また、検出器による代理指標には、本当に人間が書いた文章に対する偽陽性率が実際に存在するためです。(AI らしさのスキャンが判定に影響するのは、コンテンツエンジンの humanize_passed の場合だけです。その場合も、判定に十分な精度がある2つの兆候、significance_marker と soft_adverb_cluster に限られます。llm_favored_word は、ChatGPT 登場前に公開された文章だけに反応し、モデルの文章には一度も反応しないことが2026-08-15に測定されたため、この判定対象から除外されました。この判定しきい値は密度の下限です。測定上、公開済みの人間による文章を不合格にせず、編集されていないモデルの文章も検出できません。そのため、合格したことを、文章が人間らしく読める根拠として報告しないでください。)どちらのスキャンも目に見えるテキストのみを測定します。統計的ウォーターマークを確認することはできず、また統計的ウォーターマークとは何の関係もありません。

EU AI Act 第 50 条 — C2PA 来歴ゲート

EU 向けキャンペーンの AI 生成アセットに対するチェックに、コンプライアンスの観点が加わります。以下の両方の条件を満たす場合に実行されます。

  1. アクティブなプロファイル(または --brand で指定したプロファイル)の target_markets に、EU/EEA の管轄区域が含まれていること、かつ
  2. 関連するアセットが AI 生成であると宣言されていること。ファイルのメタデータに記載されている場合、または --evidence の JSON でそのアセットに ai_generated: true が指定されている場合が該当します。

両方を満たす場合、ゲートは python "${CLAUDE_PLUGIN_ROOT}/scripts/embed-c2pa.py" --verify <asset> を使って読み取り専用でアセットをチェックします。終了コード 0 = マニフェストが存在し有効(自己署名の開発用署名者は失敗ではなく untrusted_signer として報告)、6 = マニフェストなし、7 = マニフェストの検証失敗、2 = c2pa-python が未インストール(表示されたインストールコマンドとともに、該当項目を SKIPPED として報告し、決して PASS にしない)。C2PA 来歴マニフェストがない、または無効(終了コード 6 または 7)である場合は CRITICAL の問題となり、判定は BLOCKED になります。 第 50 条は 2026 年 8 月 2 日から適用されます(罰則は最大 1,500 万ユーロ、または全世界売上高の 3%)。準拠したマニフェストを埋め込むには、/digital-marketing-pro:c2pa-metadata を実行してください。

embed-c2pa.py がスクリプト一覧にない場合や、アセットを解決できない場合は、警告とともに該当項目を SKIPPED として報告してください(EU 向け AI アセットのチェックを黙って PASS にしないでください)。

スキルの動作

スキルは次のフローに従います。

  1. 入力を解決します。 ユーザーがファイルパスを渡した場合は、そのファイルを読み取ります。インラインコンテンツを渡した場合は、それを使用します。
  2. オプションを解決します。 --brand が指定されていない場合は、~/.claude-marketing/brands/_active-brand.json のアクティブなブランドから読み込みを試みます。--schema が指定されていない場合は、コンテンツの種類から明らかなとき(ブログの Markdown → blog_post など)は推測し、そうでなければ構造チェックをスキップします。
  3. eval-runner コマンドを組み立てます。 アクションを選択します。run-quick(デフォルト)、run-full(--full を指定)、run-compliance(--compliance を指定)。
  4. Bash 経由で実行します。
    python "${CLAUDE_PLUGIN_ROOT}/scripts/eval-runner.py" --action run-quick --file <input> [--brand <slug>] [--evidence <path>] [--schema <name>]
    
  5. JSON 出力を解析します。 総合スコア、グレード、各評価項目のスコア、アラート、自動却下の判定を抽出します。
  6. ユーザー向けに整形します。 上記の読みやすいレポートを提示します。判定(PASS/WARN/BLOCKED)を先頭に示します。
  7. BLOCKED の場合は、公開を推奨しません。 ユーザーが先に CRITICAL の問題に対処するよう、必ず求めてください。

呼び出されるスクリプト

  • scripts/eval-runner.py — メインのオーケストレーター
  • scripts/hallucination-detector.py — eval-runner から呼び出されます
  • scripts/claim-verifier.py — --evidence が指定された場合に eval-runner から呼び出されます
  • scripts/brand-voice-scorer.py — --brand が指定された場合に eval-runner から呼び出されます
  • scripts/output-validator.py — --schema が指定された場合に eval-runner から呼び出されます
  • scripts/content-scorer.py — eval-runner から呼び出されます
  • scripts/readability-analyzer.py — eval-runner から呼び出されます
  • scripts/embed-c2pa.py — EU 向けブランドに AI 生成アセットがある場合に限り、EU AI Act 第 50 条の C2PA ゲートで存在確認/検証に使用されます

すべてのスクリプトは標準ライブラリのみを使用します(brand-voice-scorer は nltk を任意で使用します)。外部 API の呼び出しはなく、インターネット接続も不要です。

例

例 1:下書きのクイックチェック
User: /digital-marketing-pro:check drafts/q2-launch-blog.md

Skill:
1. Read drafts/q2-launch-blog.md
2. Run python "${CLAUDE_PLUGIN_ROOT}/scripts/eval-runner.py" --action run-quick --file drafts/q2-launch-blog.md
3. Parse JSON output:
   composite_score: 81.2, grade: B+, auto_rejected: false
   hallucination: 92/100 pass, content_quality: 76/100 pass, readability: 84/100 pass
   alerts: 1 warning ("unattributed stat in line 14")
4. Format report:

DM CHECK REPORT — drafts/q2-launch-blog.md
============================================
Composite Score: 81.2 / 100  (Grade: B+)
Decision: PASS

Dimensions:
  Hallucination ......... 92/100  pass
  Content Quality ....... 76/100  pass
  Readability ........... 84/100  pass

Issues Found:
  WARNING (1):
    - Line 14: Unattributed statistic "76% of marketers say..."
      Suggestion: cite source or rephrase as observation

Decision: PASS — safe to publish; recommend addressing the WARNING first.
例 2:ブランド、エビデンス、スキーマを指定した完全な評価
User: /digital-marketing-pro:check drafts/healthcare-ad.md --full --brand healthfirst --evidence facts/q2-claims.json --schema ad_copy

Skill:
1. Read drafts/healthcare-ad.md
2. Run python "${CLAUDE_PLUGIN_ROOT}/scripts/eval-runner.py" --action run-full --file drafts/healthcare-ad.md --brand healthfirst --evidence facts/q2-claims.json --schema ad_copy
3. Parse JSON output. Composite: 58.4, grade: D+, auto_rejected: true
4. Format report with CRITICAL issues highlighted
5. Decision: BLOCKED. Two unattributed health claims need substantiation before this can publish.
例 3:規制対象コンテンツのコンプライアンスチェック
User: /digital-marketing-pro:check drafts/financial-services-landing.md --compliance --brand finadvisor --evidence facts/finra-disclosures.json

Skill:
1. Read content
2. Run python "${CLAUDE_PLUGIN_ROOT}/scripts/eval-runner.py" --action run-compliance --file drafts/financial-services-landing.md --brand finadvisor --evidence facts/finra-disclosures.json
3. Output prioritises hallucination + claim verification + brand voice + structure
4. Returns decision with FINRA-relevant issues highlighted
例 4:インラインコンテンツのクイックチェック
User: /digital-marketing-pro:check "Our amazing product boosts conversion by 347% — visit example.com today!"

Skill:
1. Detect inline content (not a file path)
2. Write content to a temp file
3. Run quick eval
4. Report:
   CRITICAL: 2
     - Placeholder URL "example.com" — replace with real URL before publishing
     - Unattributed statistic "347%" — fabricated stat or missing citation
   Decision: BLOCKED

各モードを使う場面

シナリオ推奨モード
下書き中の通常のコンテンツチェック/digital-marketing-pro:check <file>(クイック)
外部向けコンテンツを公開する前/digital-marketing-pro:check <file> --full --brand <slug>
規制対象業界のコンテンツ(医療/金融/アルコール/大麻/ギャンブル)/digital-marketing-pro:check <file> --compliance --brand <slug> --evidence <facts>
クライアント向け成果物(Growth Plan、Yearly Planner、月次レポート)/digital-marketing-pro:check <file> --full --brand <slug>
広告コピー専用/digital-marketing-pro:check <file> --schema ad_copy --brand <slug>
メール専用/digital-marketing-pro:check <file> --schema email --brand <slug>
ブログ記事専用/digital-marketing-pro:check <file> --schema blog_post --brand <slug>

動作ルール

  1. 重大な問題がある場合は、絶対に PASS と報告しないでください。 常に BLOCKED とします。
  2. 複合スコアと評価を必ず報告してください。 PASS の場合も、改善の余地を示します。
  3. 実行可能な提案を必ず含めてください。 各問題には修正の推奨案を添えてください。
  4. 指定がない場合は、有効なブランドを特定してください。 ~/.claude-marketing/brands/_active-brand.json を確認します。有効なブランドがない場合は、--brand を指定せずに実行します(ブランドボイスの評価項目はスキップ)。
  5. コンテンツを変更しないでください。 このスキルはレポートのみを行います。修正はユーザー(またはコンテンツを作成したエージェント)が行います。
  6. スキップした評価項目を明示してください。 ユーザーが --evidence または --schema を指定していない場合、対応する評価項目をスキップしたことを記載します。

関連スキルとコマンド

  • /digital-marketing-pro:engagement growth-plan — Part 8 の成果物を作成します。クライアントへの納品前に /digital-marketing-pro:check --full --schema content_brief でチェックしてください。
  • /digital-marketing-pro:content-engine — マーケティングコンテンツを作成します。推奨ワークフローは /digital-marketing-pro:content-engine → レビュー → /digital-marketing-pro:check → 公開です。
  • /digital-marketing-pro:eval-content — このスキルに処理を渡す旧エイリアスです。

関連リファレンス

  • scripts/eval-runner.py — このスキルがラップするマスターオーケストレーター
  • skills/context-engine/eval-framework-guide.md — 評価フレームワークの全ドキュメント
  • skills/context-engine/eval-rubrics.md — 評価項目ごとの採点基準
  • docs/architecture.md セクション 16(評価レイヤー)— 評価フレームワークのアーキテクチャ

コメント