Get the FREE Ultimate OpenClaw Setup Guide →

blog-post-optimizer

Scanned
npx machina-cli add skill dkyazzentwatwa/chatgpt-skills/blog-post-optimizer --openclaw
Files (1)
SKILL.md
8.1 KB

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

Source

git clone https://github.com/dkyazzentwatwa/chatgpt-skills/blob/main/blog-post-optimizer/SKILL.mdView on GitHub

Overview

Blog Post Optimizer is a comprehensive analysis toolkit that evaluates headlines, SEO elements, content structure, readability, and provides actionable recommendations with scores. It helps writers improve search visibility, reader engagement, and efficiency by generating meta tags and optimization guidance.

How This Skill Works

The tool analyzes full blog content using a provided headline and keywords, returning structured scores for overall, headline, SEO, and readability, along with practical suggestions. It also generates meta tags such as meta description, title tag, and URL slug, and can export an HTML report for stakeholders.

When to Use It

  • Launching a new post and targeting primary keywords
  • Auditing an existing article for SEO and readability
  • Preparing meta tags, OG cards, and schema markup
  • Optimizing headlines for better click-through and engagement
  • Benchmarking against a target readability and word-count range

Quick Start

  1. Step 1: Instantiate BlogPostOptimizer
  2. Step 2: Analyze a blog post with content, a headline, and keywords using analyze_full
  3. Step 3: Review the scores, refine the content, and export an HTML report

Best Practices

  • Define your primary keyword and secondary terms before analysis
  • Run analyze_full with your content, headline, and keywords to obtain composite scores
  • Use the generated meta description, title tag, and URL slug to update on-page SEO
  • Check readability against the target grade (eg, 8-10) and simplify long sentences
  • Review A/B headline suggestions and test variants for higher CTR

Example Use Cases

  • Example: A productivity post titled 52 characters with a headline score of 88, SEO score of 82, and an auto-generated meta description ready for publishing
  • Example: A time management article with keyword density near 1.5%, first-100-word prominence confirmed, and a clean H1/H2 structure
  • Example: A comprehensive guide article showing H1=1, H2=8, average paragraph length of 4 sentences, and readability grade around 9
  • Example: A recipe for busy professionals where image placement is flagged and then optimized within the content structure
  • Example: A beginner finance post with an SEO-friendly URL slug and a Schema.org Article JSON-LD block generated

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers