Back to skills
SKILL.md
Blog Post Optimizer
ASecurityAnalyze blog posts for SEO, readability, headline quality, and content structure. Generate meta tags and optimization recommendations with scoring.
- 99 stars
- 0 votes
- 0 copies
- 0 views
- Added February 7, 2026
Works with
Security analysis
100/100Pro scans all 4 files and shows the line behind each finding
npx -y skills add dkyazzentwatwa/chatgpt-skills --skill blog-post-optimizer --agent claude-codeAre you the author of Blog Post Optimizer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dkyazzentwatwa-blog-post-optimizer)---
name: blog-post-optimizer
description: Analyze blog posts for SEO, readability, headline quality, and content structure. Generate meta tags and optimization recommendations with scoring.
---
# 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
```python
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
```python
optimizer = BlogPostOptimizer()
```
### analyze_headline(headline: str) -> Dict
Analyze headline effectiveness.
**Returns**:
```python
{
'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**:
```python
{
'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**:
```python
{
'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**:
```python
{
'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**:
```python
{
'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**:
```python
{
'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**:
```python
{
'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
```bash
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)
```bash
python scripts/blog_post_optimizer.py \
--input article.txt \
--headline "Ultimate Guide to Python" \
--keywords "python,programming" \
--format json
```
### Headline Analysis Only
```bash
python scripts/blog_post_optimizer.py \
--headline-only "10 Productivity Hacks You Need to Know"
```
## CLI Arguments
| Argument | Description | Default |
|----------|-------------|---------|
| `--input`, `-i` | Input file (txt/md/html) | - |
| `--headline` | Blog post headline | Extracted from content |
| `--keywords`, `-k` | Comma-separated keywords | - |
| `--output`, `-o` | Output file path | stdout |
| `--format`, `-f` | Output format (json/html) | json |
| `--headline-only` | Analyze headline only | False |
## Examples
### Example 1: Full Analysis with HTML Report
```python
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
```python
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
```python
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
Files in this skill
- SKILL.md
- scripts/blog_post_optimizer.py
- scripts/power_words.json
- scripts/requirements.txt
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.