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. 02检查 SEO 关键词和元数据
  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 为理想范围
  • 句子复杂度 - 每句平均词数
  • 被动语态 - 所占百分比(目标为 <10%)
5. 内容统计
  • 词数 - 跟踪文章长度
  • 阅读时间 - 按每分钟 265 个词估算
  • 字符数 - 字符总数
  • 平均句长 - 每句词数
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输出文件路径标准输出
--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:搜索引擎算法不断变化
  • 图片分析:无法分析图片的实际内容
  • 外部链接:不验证外部链接的质量

评论

支持 Markdown