blog-analyze について
ライターや編集者向けに、ローカルファイルまたは公開 URL のブログ記事を5つの品質カテゴリで採点し、優先度付きの改善案を示すスキルです。AI文章の兆候も分析でき、任意で編集ルーブリックと節ごとの認知負荷レポートを追加します。
主な機能
- 015つの品質カテゴリで記事を採点
- 02SEOとE-E-A-Tの指標を分析
- 03AI文章のリスク指標を評価
- 04ローカルファイル・URL・ディレクトリを監査
- 05Markdown・JSON・表形式でレポートを出力
- 06ルーブリックと認知負荷分析を追加
活用シーン
- 01公開前にブログ原稿を確認
- 02ディレクトリ内の記事を比較・並べ替え
- 03監査結果をダッシュボード向けに出力
- 04認知負荷の高い節を特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill blog-analyzeインストール後、Claude Code で/blog-analyzeを入力して読み込まれたか確認します。
詳細
ブログ分析:品質監査とスコアリング
ブログ記事を5つのカテゴリにわたって0〜100の尺度で採点し、優先度順の改善案を提示します。AI コンテンツの検出分析も含まれます。ローカルファイルと公開 URL のどちらにも対応します。
参照ドキュメント(リポジトリのルートからのパス):
skills/blog/references/quality-scoring.md:スコアリングチェックリストの全文skills/blog/references/eeat-signals.md:E-E-A-T 評価基準skills/blog/references/ai-slop-detection.md:2段階の反射的手法(v1.8.0)skills/blog/references/editorial-heuristics.md:序数による0〜4の評価基準、P0〜P3の重大度(v1.8.0、--rubricと併用)skills/blog/references/cognitive-load.md:セクションごとの概念密度(v1.8.0、--cognitive-loadと併用)
入力の処理
- ローカルファイル:ファイルを直接読み込みます
- URL:WebFetch で取得し、コンテンツを抽出します
- ディレクトリ:ブログファイルをスキャンし、すべてを監査します(バッチモード)
- フラグ:
--format json|table、--batch、--sort score、--rubric、--cognitive-load
オプションモード(v1.8.0)
--rubric:100点満点のスコアに加えて、序数による0〜4の editorial-heuristics 評価基準をP0〜P3の重大度タグ付きで出力します。skills/blog/references/editorial-heuristics.mdを参照してください。100点満点の JSON スキーマは維持され、兄弟フィールドrubricが追加されます。--cognitive-load:記事に対してscripts/cognitive_load.pyを実行し、セクションごとの負荷ヒートマップを兄弟フィールドcognitive_loadとして埋め込みます。skills/blog/references/cognitive-load.mdを参照してください。
どちらのモードも追加機能です。デフォルトの動作(フラグなし)に変更はありません。
スコアリングの手順
ステップ1:コンテンツの抽出
ブログ記事を読み込み、次の項目を抽出します。
- Frontmatter(title、description、date、lastUpdated、author、tags)
- 見出し構造(階層を含む H1、H2、H3)
- 段落数と段落ごとの単語数
- 統計情報(出典の有無を問わず、数値を含む主張)
- 画像(数、代替テキストの有無、形式)
- チャート/SVG(数、種類の多様性)
- リンク(内部、外部、リンク切れ)
- FAQ セクションの有無
- スキーママークアップ(含まれる種類)
- メタタグ(タイトル、説明、OG タグ、Twitter カード)
- 文章のリズム分析用の文の長さ
- 多様性スコアリング用の語彙トークン
ステップ2:各カテゴリの採点
完全なチェックリストは references/quality-scoring.md を読み込んでください。各項目を採点します。
コンテンツ品質(30点)
| 項目 | 点数 | 合格基準 |
|---|---|---|
| 深さ/網羅性 | 7 | トピックを徹底的に扱い、重大な抜けがない |
| 読みやすさ(Flesch 60-70) | 7 | Flesch 60-70が理想、55-75は許容範囲。学年相当7〜8、Gunning Fog 7〜8 |
| 独自性/独自価値の指標 | 5 | 独自データ、事例研究、実体験 |
| 文と段落の構成 | 4 | 文の平均15〜20語、20語超は25%以下。段落は40〜80語、200〜300語ごとにH2 |
| エンゲージメント要素 | 4 | まとめボックス、コールアウト、多様なコンテンツブロック。次を使用できます:"TL;DR"、"Key Takeaways"、"The Bottom Line"、"What You'll Learn"、"At a Glance"、"In Brief" |
| 文法/アンチパターン | 3 | 受動態10%以下、AI トリガーワードは1,000語あたり5個以下、つなぎ言葉20〜30%、文章が明快 |
読みやすさの範囲(ペルソナごとに適用するか、デフォルトを使用):
| 対象読者 | Flesch の学年 | Flesch の読みやすさ | スコアへの影響 |
|---|---|---|---|
| 一般消費者 | 6〜8 | 60〜80 | 範囲内なら満点 |
| 専門職 | 8〜10 | 50〜60 | 範囲内なら満点 |
| 技術者 | 10〜12 | 30〜50 | 範囲内なら満点 |
| デフォルト(ペルソナなし) | 7〜8 | 60〜70 | 現行のスコアリングを維持 |
コンテンツの明瞭さは、AI に引用される可能性を左右する要因の第2位です(スコア差は+32.83%)。米国の成人の平均的な読解力は、学年相当で7〜8年生です。
SEO 最適化(25 点)
| チェック項目 | 点数 | 合格基準 |
|---|---|---|
| キーワードを含む見出し階層 | 5 | H1 -> H2 -> H3 の順で、飛ばさず、2~3 個の見出しにキーワードを含める |
| タイトルタグ(40~60 文字、キーワード、訴求語) | 4 | キーワードを前方に配置し、肯定的な印象にする |
| キーワードの配置と密度 | 4 | 不自然に詰め込まず自然に取り入れ、最初の 100 語以内に含める |
| 内部リンク(文脈に沿ったものを 3~10 個) | 4 | 説明的なアンカーテキストを使用し、双方向にリンクする |
| URL 構造 | 3 | 短く、キーワードを含め、ストップワードを避け、小文字にする |
| メタディスクリプション(150~160 文字、統計情報) | 3 | 事実を豊富に含み、統計情報を 1 つ含める |
| 外部リンク(ティア 1~3) | 2 | 信頼できる情報源への発リンクを 3~8 個含める |
E-E-A-T シグナル(15 点)
| チェック項目 | 点数 | 合格基準 |
|---|---|---|
| 著者の明記(実名、略歴付き) | 4 | 実名と資格を記載し、売り込みになっていない |
| 出典の引用(ティア 1~3、本文内) | 4 | 独自の統計情報が 8 件以上あり、捏造がない |
| 信頼性を示す情報 | 4 | お問い合わせページ、概要ページ、編集方針がある |
| 経験を示す情報 | 3 | 「テストしたところ……」などの記述、独自の写真やデータがある |
E-E-A-T に基づいて出典の引用を評価する際は、公開されている統計情報それぞれに、FLOW のエビデンストリプル(本文中の年の明記、発行元とタイトルを含む本文内引用、出典ブロック内の取得日付き URL)が揃っているかを確認してください。ティア 1~3 の出典を引用していても取得日が記載されていない記事は、トリプルがすべて揃っている記事より、この小項目の評価が低くなります。標準については skills/blog/references/flow-alignment.md を参照してください。
技術的要素(15 点)
| チェック項目 | 点数 | 合格基準 |
|---|---|---|
| スキーママークアップ(3 種類以上でボーナス) | 4 | 最低限 BlogPosting + FAQ + Person を含める |
| 画像の最適化 | 3 | AVIF/WebP を使用し、説明的な代替テキストを設定し、LCP 対象以外は遅延読み込みにする |
| 構造化データ要素 | 2 | 表、リスト、比較ブロックを含める |
| ページ速度のシグナル | 2 | LCP < 2.5s、レンダリングをブロックする JS がない |
| モバイル対応 | 2 | レスポンシブで、タップ領域が 48px 以上 |
| OG/ソーシャルメタタグ | 2 | og:title、og:description、og:image、twitter:card |
AI 引用への対応(15 点)
| チェック項目 | 点数 | 合格基準 |
|---|---|---|
| 段落単位での引用可能性(120~180 語) | 4 | 統計情報と出典を含む、単独で意味が通じるセクション |
| Q&A 形式のセクション | 3 | H2 の 60~70%を質問形式にし、FAQ を設ける |
| エンティティの明確さ | 3 | 曖昧さのないトピックエンティティと、一貫した用語 |
| 抽出しやすいコンテンツ構造 | 3 | 回答を先に示し、thead を含む表や比較形式を使用する |
| AI クローラーからのアクセス性 | 2 | SSR/SSG を使用し、JS によってアクセスが制限されるコンテンツがない |
ステップ 3:AI 生成コンテンツの検出
記事を分析し、AI 生成コンテンツのリスクを評価します。
バースト性スコア(文の長さのばらつき):
- 記事全体の文の長さの標準偏差を計算する
- 人間の文章:ばらつきが大きい(短く切れのある文と、長く複雑な文が混在)
- AI の文章:ばらつきが小さい(中程度の長さの文が一貫して続く)
- スコア:0~10(10 = 人間らしいバースト性が非常に高い)
既知の AI らしい表現の検出:以下の 17 個の表現の出現を検出します。
- 「重要な点として」
- 「今日のデジタル環境では」
- 「深く掘り下げる」
- 「複雑さを乗り越える」
- 「詳しく見ていきましょう」
- 「さらに」
- 「結論として」
- 「言及する価値があります」
- 「踏み出す」
- 「最先端」
- 「活用する」(金融以外の文脈で動詞として使われる場合)
- 「ゲームチェンジャー」
- 「革命を起こす」
- 「効率化する」
- 「力を活用する」
- 「深く掘り下げる」
- 「可能性を解き放つ」
- エムダッシュ(-):すべての出現数を数え、AI 文章のパターンとしてフラグを立てる
語彙の多様性(タイプ・トークン比):
- 異なり語数 / 総語数を計算する
- 人間の文章:長文では TTR が通常 0.4~0.6
- AI の文章:TTR が 0.35 未満になることが多い(語彙の反復)
AI コンテンツのリスク評価:
- 複合的なシグナルに基づく AI 確率が 50%を超える場合はフラグを立てる
- フラグの原因となった具体的な箇所を示す
- 人間らしい文章にするための提案:個人的な逸話、文のリズムに変化をつける、専門分野の用語
ステップ 4:評価を判定する
| スコア | 評価 | 対応 |
|---|---|---|
| 90-100 | 卓越 | そのまま公開し、看板コンテンツとして扱う |
| 80-89 | 優秀 | 軽微な調整を行えば公開可能 |
| 70-79 | 許容範囲 | 対象を絞った改善が必要 |
| 60-69 | 基準未満 | 大幅な修正が必要 |
| < 60 | 書き直し | 根本的な問題があるため、アウトラインから作り直す |
ステップ 4.5:任意の序数評価基準(--rubric)
--rubric が渡された場合は、skills/blog/references/editorial-heuristics.md で定義されている10項目の編集上のヒューリスティックについても追加で採点します。各項目に0〜4のスコアと重大度タグ(P0 / P1 / P2 / P3 / なし)を付与します。
評価基準は100点満点のスコアに代わるものではありません。評価基準を併用することで、修正を妨げる指摘と、仕上げのための指摘を明らかにします。
評価基準は次のいずれかの形式で出力します。
- Markdown テーブル(デフォルト)。メインレポートの末尾に
### Editorial Heuristics Rubricの見出しを付けて追加します。 - JSON。
--format jsonが指定されている場合は、rubricフィールドに出力します。
評価基準の JSON スキーマ:
{
"rubric": {
"heuristics": [
{ "id": 1, "name": "Visibility of intent", "score": 3, "severity": "P2", "note": "Summary box generic" },
...
],
"p0_count": 0,
"p1_count": 1,
"p2_count": 2,
"p3_count": 3
}
}
ステップ 4.6:任意の認知負荷ヒートマップ(--cognitive-load)
--cognitive-load が渡された場合は、scripts/cognitive_load.py <file> --format json を実行し、JSON 出力では結果を cognitive_load フィールドに埋め込むか、Markdown 出力では ### Cognitive Load Heatmap セクションを末尾に追加します。しきい値と解釈については、skills/blog/references/cognitive-load.md を参照してください。
ステップ 5:レポートを生成する
デフォルトの出力形式(Markdown):
## Blog Quality Report: [Title]
**Score: [X]/100** - [Rating]
### Score Breakdown
| Category | Score | Max | Notes |
|----------|-------|-----|-------|
| Content Quality | X | 30 | [1-line summary] |
| SEO Optimization | X | 25 | [1-line summary] |
| E-E-A-T Signals | X | 15 | [1-line summary] |
| Technical Elements | X | 15 | [1-line summary] |
| AI Citation Readiness | X | 15 | [1-line summary] |
| **Total** | **X** | **100** | |
### AI Content Risk
- **Burstiness score**: [X]/10 ([human-like / moderate / flat])
- **AI phrases detected**: [N] ([list phrases found])
- **Vocabulary diversity (TTR)**: [X] ([high / acceptable / low])
- **AI probability**: [X]% - [No concern / Review recommended / High risk]
- **Flagged passages**: [quote specific flat or formulaic sections, if any]
### Issues Found
#### Critical (Must Fix)
- [ ] [Issue with specific location and fix]
#### High Priority
- [ ] [Issue with specific location and fix]
#### Medium Priority
- [ ] [Issue with specific location and fix]
#### Low Priority
- [ ] [Issue with specific location and fix]
### Quick Stats
- Word count: [N]
- Paragraphs: [N] (X over 150 words)
- H2 sections: [N] (X as questions, X with answer-first formatting)
- Statistics: [N] sourced / [N] unsourced
- Images: [N] (X with alt text, formats: ...)
- Charts: [N] (types: ...)
- Internal links: [N]
- External links: [N] (tier breakdown: ...)
- Schema types: [list]
- OG/social tags: [present/missing]
### Recommended Actions
1. [Most impactful fix: Critical items first]
2. [Second most impactful]
3. [Third]
Run `/blog rewrite <file>` to apply these optimizations automatically.
エクスポート形式
デフォルト:Markdown レポート
上記の標準的な詳細レポートです。
JSON エクスポート(--format json)
CI/CD やダッシュボードとの連携に使える、機械可読な出力です。
{
"file": "post.md",
"title": "...",
"score": 78,
"rating": "Acceptable",
"categories": {
"content_quality": { "score": 22, "max": 30 },
"seo_optimization": { "score": 18, "max": 25 },
"eeat_signals": { "score": 12, "max": 15 },
"technical_elements": { "score": 13, "max": 15 },
"ai_citation_readiness": { "score": 13, "max": 15 }
},
"ai_detection": {
"burstiness": 6.2,
"ai_phrases_found": ["Furthermore", "Let's explore"],
"ttr": 0.44,
"ai_probability": 32
},
"issues": {
"critical": [],
"high": [],
"medium": [],
"low": []
}
}
テーブルエクスポート(--format table)
すばやく確認するための簡潔な概要です。
File | Score | Rating | Content | SEO | EEAT | Tech | AI-Ready | AI Risk
post.md | 78 | Acceptable | 22/30 | 18/25 | 12/15 | 13/15 | 13/15 | 32%
バッチモード
ディレクトリまたは --batch フラグが指定された場合は、ブログファイルを検索して概要テーブルを作成します。スコア順に並べ替えるには --sort score を使用します(デフォルトでは昇順です)。
## Blog Audit Summary: [N] Posts Analyzed
| File | Score | Rating | Content | SEO | EEAT | Tech | AI-Ready | AI Risk | Top Issue |
|------|-------|--------|---------|-----|------|------|----------|---------|-----------|
| post-1.md | 85 | Strong | 26/30 | 20/25 | 13/15 | 14/15 | 12/15 | 18% | Missing OG tags |
| post-2.md | 42 | Rewrite | 10/30 | 8/25 | 5/15 | 9/15 | 10/15 | 71% | 12 fabricated stats |
| post-3.md | 71 | Acceptable | 20/30 | 16/25 | 10/15 | 12/15 | 13/15 | 25% | No answer-first |
### Priority Queue (Lowest Scoring First)
1. post-2.md (42): Full rewrite needed, high AI content risk
2. post-3.md (71): Answer-first formatting + stats needed
3. post-1.md (85): Add OG tags, minor polish
Run `/blog rewrite <file>` on each, starting from lowest score.