MCPInstall

blog-post-optimizer

Analyze blog posts for SEO, readability, headline quality, and content structure. Generate meta tags and optimization recommendations with scoring.

Installs
91
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

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

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads blog-post-optimizer automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Blog Post Optimizer

Comprehensive content analysis toolkit for optimizing blog posts, articles, and web content. Analyzes headlines, SEO elements, content structure, readability, and generates actionable recommendations with scores.

Quick Start

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')

Features

1. Headline Analysis

  • Power Words Detection - Identifies emotional trigger words
  • Character Count - Optimal range 50-60 characters
  • Emotional Impact - Measures headline engagement potential
  • A/B Suggestions - Generate alternative headlines

2. SEO Optimization

  • Keyword Density - Target 1-2% for primary keyword
  • Keyword Prominence - Check placement in first 100 words
  • Meta Description - Auto-generate 150-160 characters
  • Title Tag - Optimize for 50-60 characters
  • URL Slug - Generate SEO-friendly slugs

3. Content Structure

  • Heading Hierarchy - Validate H1/H2/H3 structure
  • Paragraph Length - Ideal 3-5 sentences
  • List Usage - Detect numbered and bulleted lists
  • Image Placement - Check for visual elements
  • Subheading Distribution - Ensure consistent spacing

4. Readability Analysis

  • Flesch-Kincaid Grade - Target grade 8-10
  • Reading Ease - 60-70 is ideal
  • Sentence Complexity - Average words per sentence
  • Passive Voice - Percentage (aim for <10%)

5. Content Statistics

  • Word Count - Article length tracking
  • Reading Time - Estimated at 265 words/minute
  • Character Count - Total characters
  • Average Sentence Length - Words per sentence

6. Meta Tag Generation

  • Open Graph - Social media preview tags
  • Twitter Cards - Twitter-specific meta tags
  • Schema.org - Article structured data (JSON-LD)

API Reference

BlogPostOptimizer

optimizer = BlogPostOptimizer()

analyze_headline(headline: str) -> Dict

Analyze headline effectiveness.

Returns:

{
    '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

Analyze SEO elements.

Returns:

{
    '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

Analyze content structure.

Returns:

{
    '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

Calculate readability scores.

Returns:

{
    '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

Calculate basic content statistics.

Returns:

{
    '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

Generate social media and SEO meta tags.

Returns:

{
    '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

Complete analysis combining all methods.

Returns:

{
    'overall_score': 78,
    'headline': {...},
    'seo': {...},
    'structure': {...},
    'readability': {...},
    'stats': {...},
    'recommendations': [
        {'priority': 'high', 'issue': '...', 'fix': '...'}
    ]
}

export_html_report(results: Dict, output_path: str)

Generate color-coded HTML report with charts and recommendations.

CLI Usage

Single Blog Post Analysis

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

Quick Analysis (JSON Output)

python scripts/blog_post_optimizer.py \
    --input article.txt \
    --headline "Ultimate Guide to Python" \
    --keywords "python,programming" \
    --format json

Headline Analysis Only

python scripts/blog_post_optimizer.py \
    --headline-only "10 Productivity Hacks You Need to Know"

CLI Arguments

ArgumentDescriptionDefault
--input, -iInput file (txt/md/html)-
--headlineBlog post headlineExtracted from content
--keywords, -kComma-separated keywords-
--output, -oOutput file pathstdout
--format, -fOutput format (json/html)json
--headline-onlyAnalyze headline onlyFalse

Examples

Example 1: Full Analysis with HTML Report

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')

Example 2: Headline Optimization

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}")

Example 3: SEO Keyword Analysis

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}%")

Dependencies

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

Limitations

  • HTML Parsing: Complex HTML structures may affect accuracy
  • Keyword Context: Doesn't account for keyword context (positive/negative)
  • Language: English only for readability and power words
  • Power Words: Subjective; effectiveness varies by audience
  • Readability: Formulas are guides, not absolute measures
  • SEO: Search engine algorithms constantly change
  • Image Analysis: Cannot analyze actual image content
  • External Links: Doesn't validate external link quality

FAQ

What does the blog-post-optimizer skill do?

Analyze blog posts for SEO, readability, headline quality, and content structure. Generate meta tags and optimization recommendations with scoring.

How do I install blog-post-optimizer?

Run npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill blog-post-optimizer in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/blog-post-optimizer/ (personal) or .claude/skills/blog-post-optimizer/ (project).

Which AI agents can use blog-post-optimizer?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is blog-post-optimizer safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains blog-post-optimizer?

It is published by dkyazzentwatwa in dkyazzentwatwa/chatgpt-skills. It has 91 recorded installs.

More from dkyazzentwatwa/chatgpt-skills

View all →

ocr-document-processor

dkyazzentwatwa/chatgpt-skills

Extract text and structure from scans, images, and scanned PDFs. Use for OCR, searchable PDFs, table extraction, receipt parsing, and business card parsing.

Media & Creative4.8K installs

crypto-ta-analyzer

dkyazzentwatwa/chatgpt-skills

Run multi-indicator technical analysis on crypto or market OHLCV data. Use for deterministic trend, momentum, volume, and divergence analysis.

Business & Finance1.6K installs

text-summarizer

dkyazzentwatwa/chatgpt-skills

Generate extractive summaries from long text documents. Control summary length, extract key sentences, and process multiple documents.

693 installs

financial-calculator

dkyazzentwatwa/chatgpt-skills

Run loan, investment, NPV, retirement, savings, and risk calculations with schedules and charts. Use for deterministic financial modeling tasks.

Business & Finance503 installs

document-converter-suite

dkyazzentwatwa/chatgpt-skills

Convert PDFs, Office docs, markdown, HTML, and tables between editable formats. Use for best-effort document conversion, PDF utilities, form filling, and table extraction.

Docs & Writing483 installs

image-enhancement-suite

dkyazzentwatwa/chatgpt-skills

Open the skill to read its SKILL.md instructions.

Media & Creative293 installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs