mcpField
B
blog-post-optimizer

blog-post-optimizer

github.com/dkyazzentwatwaマーケティング・グロース12491 回インストール29 週間前に更新
リポジトリ

blog-post-optimizer について

Blog Post Optimizerは、ブログ記事やウェブコンテンツの見出し、SEO、構成、読みやすさ、統計情報を分析します。評価や改善案、メタタグをPython APIまたはコマンドラインから得たいコンテンツ制作者向けです。

主な機能

  1. 01見出し分析と代替案の提案
  2. 02SEOキーワードとメタデータの確認
  3. 03見出し階層と段落構成の検証
  4. 04読みやすさと文の複雑さの評価
  5. 05記事量と読了時間の集計
  6. 06メタタグとHTMLレポートの生成

活用シーン

  1. 01公開前の記事草稿を確認
  2. 02見出し案を比較
  3. 03キーワード配置とSEO項目を確認
  4. 04分析結果をJSONまたはHTMLで出力

インストール

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

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill blog-post-optimizer

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

同梱ファイル

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

scripts/
blog_post_optimizer.py
power_words.json
requirements.txt

詳細

ブログ記事オプティマイザー

ブログ記事、記事、ウェブコンテンツを最適化するための包括的なコンテンツ分析ツールキットです。見出し、SEO 要素、コンテンツ構成、読みやすさを分析し、スコアと実行可能な改善提案を生成します。

クイックスタート

from scripts.blog_post_optimizer import BlogPostOptimizer

# Initialize optimizer
optimizer = BlogPostOptimizer()

# Analyze a blog post
with open('blog_post.md', 'r') as f:
    content = f.read()

# Full analysis
results = optimizer.analyze_full(
    content=content,
    headline="10 Ways to Boost Your Productivity",
    keywords=["productivity", "time management", "efficiency"]
)

# View scores
print(f"Overall Score: {results['overall_score']}/100")
print(f"Headline Score: {results['headline']['score']}/100")
print(f"SEO Score: {results['seo']['score']}/100")
print(f"Readability Grade: {results['readability']['grade_level']}")

# Export HTML report
optimizer.export_html_report(results, 'report.html')

機能

1. 見出し分析
  • パワーワードの検出 - 感情を引き起こす語句を特定します
  • 文字数 - 最適な範囲は50~60文字です
  • 感情への訴求力 - 見出しがエンゲージメントを促す可能性を測定します
  • A/B テスト用の提案 - 別の見出し案を生成します
2. SEO 最適化
  • キーワード密度 - 主キーワードの目標値は1~2%です
  • キーワードの目立ちやすさ - 最初の100語以内に配置されているか確認します
  • メタディスクリプション - 150~160文字の説明文を自動生成します
  • タイトルタグ - 50~60文字に最適化します
  • URL スラッグ - SEO に適したスラッグを生成します
3. コンテンツ構成
  • 見出し階層 - H1/H2/H3 の構成を検証します
  • 段落の長さ - 理想は3~5文です
  • リストの使用状況 - 番号付きリストと箇条書きを検出します
  • 画像の配置 - 視覚要素があるか確認します
  • 小見出しの配置 - 一貫した間隔が保たれているか確認します
4. 読みやすさの分析
  • Flesch-Kincaid グレード - 目標はグレード8~10です
  • 読みやすさスコア - 理想は60~70です
  • 文の複雑さ - 1文あたりの平均語数です
  • 受動態 - 割合(10%未満を目指します)
5. コンテンツ統計
  • 単語数 - 記事の長さを追跡します
  • 読了時間 - 1分あたり265語として推定します
  • 文字数 - 総文字数です
  • 平均文長 - 1文あたりの語数です
6. メタタグ生成
  • Open Graph - ソーシャルメディアのプレビュー用タグ
  • Twitter Cards - Twitter 固有のメタタグ
  • Schema.org - 記事の構造化データ(JSON-LD)

API リファレンス

BlogPostOptimizer
optimizer = BlogPostOptimizer()
analyze_headline(headline: str) -> Dict

見出しの効果を分析します。

戻り値:

{
    'score': 75,  # 0-100
    'character_count': 52,
    'power_words': ['boost', 'proven'],
    'emotional_impact': 68,
    'suggestions': [
        "10 Proven Ways to Boost Your Productivity Today",
        "Boost Your Productivity: 10 Essential Strategies"
    ]
}
analyze_seo(content: str, keywords: List[str]) -> Dict

SEO 要素を分析します。

戻り値:

{
    'score': 80,
    'keyword_density': {'productivity': 1.8, 'time management': 0.9},
    'keyword_prominence': True,  # In first 100 words
    'meta_description': 'Discover 10 proven ways to boost productivity...',
    'title_tag': '10 Ways to Boost Productivity | Your Site',
    'url_slug': 'boost-productivity-10-ways'
}
analyze_structure(content: str) -> Dict

コンテンツの構成を分析します。

戻り値:

{
    'score': 85,
    'h1_count': 1,
    'h2_count': 10,
    'avg_paragraph_length': 4.2,  # Sentences
    'list_count': 3,
    'warnings': ['Paragraph on line 45 is too long (8 sentences)']
}
analyze_readability(content: str) -> Dict

読みやすさのスコアを算出します。

戻り値:

{
    'flesch_kincaid_grade': 8.5,
    'reading_ease': 65.2,
    'avg_sentence_length': 15.3,
    'passive_voice_pct': 8.5,
    'complexity_score': 72
}
calculate_content_stats(content: str) -> Dict

基本的なコンテンツ統計を算出します。

戻り値:

{
    'word_count': 1250,
    'reading_time_minutes': 5,
    'character_count': 7890,
    'sentence_count': 85,
    'paragraph_count': 28
}
generate_meta_tags(title: str, description: str, keywords: List[str]) -> Dict

ソーシャルメディアと SEO 用のメタタグを生成します。

戻り値:

{
    'open_graph': {
        'og:title': '10 Ways to Boost Your Productivity',
        'og:description': 'Discover proven strategies...',
        'og:type': 'article'
    },
    'twitter_card': {
        'twitter:card': 'summary_large_image',
        'twitter:title': '10 Ways to Boost Your Productivity'
    },
    'schema_org': {
        '@context': 'https://schema.org',
        '@type': 'Article',
        'headline': '10 Ways to Boost Your Productivity'
    }
}
analyze_full(content: str, headline: str, keywords: List[str]) -> Dict

すべてのメソッドを組み合わせた包括的な分析を行います。

戻り値:

{
    'overall_score': 78,
    'headline': {...},
    'seo': {...},
    'structure': {...},
    'readability': {...},
    'stats': {...},
    'recommendations': [
        {'priority': 'high', 'issue': '...', 'fix': '...'}
    ]
}
export_html_report(results: Dict, output_path: str)

グラフと改善提案を含む、色分けされた HTML レポートを生成します。

CLI の使い方

単一ブログ記事の分析
python scripts/blog_post_optimizer.py \
    --input blog_post.md \
    --headline "10 Ways to Boost Your Productivity" \
    --keywords "productivity,time management,efficiency" \
    --output report.html \
    --format html
クイック分析(JSON 出力)
python scripts/blog_post_optimizer.py \
    --input article.txt \
    --headline "Ultimate Guide to Python" \
    --keywords "python,programming" \
    --format json
見出しのみの分析
python scripts/blog_post_optimizer.py \
    --headline-only "10 Productivity Hacks You Need to Know"

CLI 引数

引数説明デフォルト
--input, -i入力ファイル(txt/md/html)-
--headlineブログ記事の見出しコンテンツから抽出
--keywords, -kカンマ区切りのキーワード-
--output, -o出力ファイルのパスstdout
--format, -f出力形式(json/html)json
--headline-only見出しのみを分析False

例

例1:HTML レポート付きの全体分析
optimizer = BlogPostOptimizer()

with open('article.md') as f:
    content = f.read()

results = optimizer.analyze_full(
    content=content,
    headline="The Complete Guide to Remote Work",
    keywords=["remote work", "productivity", "work from home"]
)

optimizer.export_html_report(results, 'seo_report.html')
例2:見出しの最適化
optimizer = BlogPostOptimizer()

headline = "Ways to Improve Your Writing"
analysis = optimizer.analyze_headline(headline)

print(f"Score: {analysis['score']}/100")
print(f"Power words found: {', '.join(analysis['power_words'])}")
print("\nSuggestions:")
for suggestion in analysis['suggestions']:
    print(f"  - {suggestion}")
例3:SEO キーワード分析
optimizer = BlogPostOptimizer()

with open('post.md') as f:
    content = f.read()

seo = optimizer.analyze_seo(
    content=content,
    keywords=["python", "tutorial", "beginners"]
)

for keyword, density in seo['keyword_density'].items():
    print(f"{keyword}: {density:.1f}%")

依存関係

nltk>=3.8.0
textblob>=0.17.0
beautifulsoup4>=4.12.0
pandas>=2.0.0
matplotlib>=3.7.0
reportlab>=4.0.0
lxml>=4.9.0

制限事項

  • HTML の解析:複雑な HTML 構造は精度に影響する場合があります
  • キーワードの文脈:キーワードの文脈(肯定的/否定的)は考慮されません
  • 対応言語:読みやすさとパワーワードの分析は英語のみです
  • パワーワード:主観的なものであり、効果は読者層によって異なります
  • 読みやすさ:数式は目安であり、絶対的な基準ではありません
  • SEO:検索エンジンのアルゴリズムは常に変化します
  • 画像分析:実際の画像コンテンツは分析できません
  • 外部リンク:外部リンクの品質は検証しません

コメント