关于 blog-write
blog-write 是根据主题、简报或提纲生成完整博客文章的技能。它指导目标平台选择、研究、模板挑选、提纲和写作,兼顾搜索排名与 AI 引用。
主要功能
- 01面向搜索和 AI 引用场景
- 02从 12 种内容模板中选择
- 03指导研究和提纲编写
- 04采用答案优先的章节结构
- 05提供引用和视觉内容指引
适用场景
- 01根据主题起草文章
- 02将简报整理为结构化提纲
- 03为搜索和 AI 引用准备博客内容
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill blog-write安装后在 Claude Code 中输入/blog-write确认已加载。
详细介绍
博客撰稿:生成新文章
根据主题、简报或大纲撰写完整的博客文章。每篇文章都遵循双重优化的 6 大支柱(Google 排名 + AI 引用)。
关键参考资料(路径相对于仓库根目录;参考资料位于主 blog 技能的 references 目录中,而非 blog-write/ 中):
skills/blog/references/synthesis-contract.md:综合输出的 6 条 LAW(v1.8.0;当文章包含研究综合类文案时适用)skills/blog/references/content-templates.md:模板选择指南和用法skills/blog/references/quality-scoring.md:5 类评分(内容 30、SEO 25、E-E-A-T 15、技术 15、AI 引用 15)skills/blog/references/eeat-signals.md:经验、专业知识、权威性和信任标志skills/blog/references/internal-linking.md:链接策略和锚文本规则skills/blog/references/visual-media.md:图片来源和图表样式
工作流
阶段 0:目标渠道定位(研究前执行)
确定这篇文章旨在覆盖 FLOW 的 5 个渠道中的哪些。选择会影响结构、篇幅、引用密度和行动号召。2026 年的 5 个渠道:
- 自有网站(Google 自然排名)
- SERP(含 AI Overviews)
- AI 助手引用(ChatGPT、Perplexity、Claude、Gemini、Copilot、You.com)
- 本地商家包(不在博客内容范围内;本地内容请使用 claude-seo)
- 社区和视频(Reddit、YouTube、LinkedIn、Quora、垂直论坛)
大多数文章默认面向渠道 1、2 和 3。如果同一查询也出现在社区中(Reddit 帖子、YouTube 评论),请采用双渠道思维:优化文章以便提取内容,并规划社区呼应(详见 /blog repurpose)。
如需了解按渠道细分的详细工作流,请参阅
skills/blog/references/flow-alignment.md 和 /blog flow find。
阶段 1:理解主题
- 明确主题——如果用户只提供了主题,请询问:
- 目标受众(面向哪些人?)
- 主要关键词/搜索意图
- 期望字数(默认:2,000-2,500 字)
- 平台/格式(MDX、markdown、HTML——如果在项目中则自动检测)
- 如果已有简报——加载简报并跳至阶段 1.5
阶段 1.5:选择模板
从 skills/blog/templates/ 中的 12 个模板里选择合适的内容模板(模板目录由主 blog 技能维护)。
-
自动检测内容类型:根据主题和搜索意图判断:
信号 模板 “如何……”,流程、步骤 how-to-guide“最佳 X”、“Top N”、列表形式 listicle客户成果、前后对比、指标 case-study“X vs Y”、比较、替代方案 comparison宽泛主题、综合指南 pillar-page“X 值不值得”,产品评估 product-review观点、预测、行业见解 thought-leadership专家引言、多来源汇总 roundup代码讲解、工具演示、技术内容 tutorial突发新闻、算法更新、事件 news-analysis调查结果、实验、原创数据 data-research问答、知识库、“什么是 X” faq-knowledge -
加载匹配的模板:从
skills/blog/templates/<type>.md读取 -
调整大纲——使用模板的章节结构、标题模式和字数建议来拟定阶段 3 的大纲
-
回退方案——如果没有明显匹配的模板,请使用下方阶段 3 中的通用大纲结构。告知用户选择了哪个模板(或没有匹配的模板)。
详细的选择标准和意图映射请参阅 skills/blog/references/content-templates.md。
第 2 阶段:调研
启动 blog-researcher Agent(或使用 WebSearch 进行内联调研):
- 查找 8-12 项最新统计数据(优先采用 2025-2026 年的数据)
- 搜索:
[topic] study 2025 2026 data statistics - 优先选择第 1-3 级来源(参见
skills/blog/references/quality-scoring.md) - 记录:统计数据、来源名称、URL、日期、方法
- 搜索:
- 查找封面图片(宽幅、高质量、与主题相关):
- 搜索:
site:pixabay.com [topic] wide banner(首选) - 替代方案:
site:unsplash.com [topic] wide - 备选方案:
site:pexels.com [topic] wide banner - 目标尺寸:1200x630(兼容 OG)或 1920x1080
- 或通过
blog-chart生成自定义 SVG 封面(渐变背景上的文字和关键统计数据) - 或通过
blog-image子技能生成自定义 AI 图片(如果已配置 nanobanana-mcp) - 封面图片尺寸详情请参见
skills/blog/references/visual-media.md
- 搜索:
- 从开源平台查找 3-5 张内文图片:
- Pixabay(首选):搜索
site:pixabay.com [topic keywords]- 从页面提取图片 URL
- 直接 URL:
https://cdn.pixabay.com/photo/YYYY/MM/DD/HH/MM/filename.jpg - 使用
curl -sI "<url>" | head -1验证,结果应为 HTTP 200
- Unsplash(替代方案):搜索
site:unsplash.com [topic keywords]- 构建 URL:
https://images.unsplash.com/photo-<id>?w=1200&h=630&fit=crop&q=80
- 构建 URL:
- Pexels(备选方案):搜索
site:pexels.com [topic keywords]
- Pixabay(首选):搜索
- 根据调研统计数据规划 2-4 个数据可视化图表
- 选择多样化的图表类型(参见
skills/blog/references/visual-media.md) - 将数据点对应到图表格式
- 选择多样化的图表类型(参见
- AI 图片生成(可选,如果已配置 nanobanana-mcp):
- 如果图库照片结果不足(少于 3 张合适图片),或主题过于小众
- 通过
blog-image子技能生成自定义主视觉图片和/或内文插图 - 默认仍使用图库照片;AI 生成仅作补充,绝不取代图库照片
- NotebookLM 调研(可选,如果用户有相关笔记本):
- 如果用户提及 NotebookLM 笔记本,或主题与已配置的笔记本相关
- 通过
blog-notebooklm查询用户上传文档中有来源依据的数据 - 将 NotebookLM 的回复视为第 1 级来源(用户自己的第一手文档)
- 如果未配置或未通过身份验证,则静默回退
- 查找相关 YouTube 视频(每篇文章 2-3 个):
- 使用
blog-googleyoutube 命令,或通过 WebSearch 搜索site:youtube.com [topic] [year] - 按照
skills/blog/references/video-embeds.md中的质量标准筛选(最低分数:50/100) - 选择 2-3 个最佳视频。如果未找到,则静默回退。
- 使用
第 3 阶段:生成大纲
写作前先创建结构化大纲。如果在第 1.5 阶段加载了模板, 请调整此骨架以符合模板的章节结构:
# [Title as Question - Include Primary Keyword]
## Introduction (100-150 words)
- Hook with surprising statistic
- Problem/opportunity statement
- What the reader will learn
> **Key Takeaways**
> - [Core finding with statistic and source]
> - [Second key insight or recommendation]
> - [Third actionable takeaway]
> (3-5 bullets, 40-60 words combined)
## H2: [Question Format] (300-400 words)
- Answer-first paragraph (40-60 words with stat + source)
- Supporting evidence
- [Image placement]
- Practical advice
- [CITATION CAPSULE placeholder]
- [INTERNAL-LINK: anchor text → target description]
## H2: [Question Format] (300-400 words)
- Answer-first paragraph
- [Chart: type + data description]
- Analysis and implications
- [CITATION CAPSULE placeholder]
- [INTERNAL-LINK: anchor text → target description]
## H2: [Statement for Variety] (300-400 words)
- Answer-first paragraph
- Real-world example or case study
- [Image placement]
- [CITATION CAPSULE placeholder]
## H2: [Question Format] (300-400 words)
- Answer-first paragraph
- [Chart: type + data description]
- Step-by-step guidance
- [CITATION CAPSULE placeholder]
- [INTERNAL-LINK: anchor text → target description]
## H2: [Question Format] (200-300 words)
- Answer-first paragraph
- Forward-looking analysis
## [CTA Section or Inline Placement]
- See `skills/blog/references/cta-placement.md` for placement rules by content type
- Place CTA after value delivery, not at arbitrary positions
- Single focused CTA per post (266% more conversions)
- [CTA: contextual call-to-action matching article topic]
## FAQ Section (3-5 questions, 40-60 words each answer)
- [INTERNAL-LINK: anchor text → detailed content]
## Conclusion (100-150 words)
- Key takeaways (bulleted)
- Call to action
- [INTERNAL-LINK: anchor text → next logical content]
写作前先将大纲提交给用户审批。
视觉元素的节奏安排:每 300-500 个单词插入 [IMAGE]、[CHART]、[VIDEO] 或 [CALLOUT] 标记。
交替使用不同类型(不得连续使用相同类型)。参见
skills/blog/references/content-rules.md 中的 Visual Rhythm 部分,以及
skills/blog/references/cta-placement.md 中的 CTA 位置说明。
第 4 阶段:图表生成(内置)
当调研人员发现适合制图的数据时(3 个或更多可比较指标、趋势数据、 前后对比):
- 根据多样性规则选择图表类型(每篇文章不得重复类型)
- 调用
blog-chart子技能,并提供:图表类型、标题、数据值、来源、平台格式 - 将返回的 SVG 直接嵌入文章,并用
<figure>标签包裹 - 每篇 2,000 字的文章安排 2-4 个图表
- 均匀分布图表,切勿集中放置
关于图表类型选择和样式规则,请参见 skills/blog/references/visual-media.md。
第 5 阶段:撰写内容
按照以下规则撰写完整文章:
5a. Frontmatter
---
title: "[Question-format title with primary keyword]"
description: "[Fact-dense, 150-160 chars, includes 1 statistic]"
coverImage: "[URL from Pixabay/Unsplash/Pexels or generated SVG path]"
coverImageAlt: "[Descriptive sentence about the cover image]"
ogImage: "[Same as coverImage, or custom OG image URL]"
date: "YYYY-MM-DD"
lastUpdated: "YYYY-MM-DD"
author: "[Author name]"
tags: ["keyword1", "keyword2", "keyword3"]
---
如果平台使用了不同的字段名(例如 image、hero、thumbnail),
请调整以符合项目现有的 frontmatter 约定。
5b. 摘要框(关键要点)
在引言之后(第一个 H2 正文部分之前),立即添加摘要框:
> **Key Takeaways**
> - [Core finding with statistic] ([Source], year)
> - [Second key insight or recommendation]
> - [Third actionable takeaway]
要求:
- 3-5 个项目符号,总计 40-60 个单词
- 必须自成一体,无需阅读文章即可理解
- 包含 1 个注明来源名称的具体统计数据
- 陈述关键发现、建议或答案
- 默认标签:“关键要点”。如果启用了某种角色,则使用该角色的 summary_label
- 向后兼容:改写时接受现有的 TL;DR 框
5c. 答案优先的格式(关键)
每个 H2 部分都必须以一个 40-60 个单词的段落开头,其中包含:
- 至少一个注明来源的具体统计数据
- 对标题隐含问题的直接回答
模式:
## How Does X Impact Y in 2026?
[Stat from source] ([Source Name](url), year). [Direct answer to the heading
question in 1-2 more sentences, explaining the implication and what this means
for the reader.]
FLOW 证据三要素(撰写要求,不只是审核要求):
每项公开统计数据在撰写时都必须包含以下三项:
-
在正文中标明年份。 在统计数据之前,于句子正文中写明“In 2026,” 或 “As of Q1 2026,”。只在括号中提及年份不算。示例:
- 好:“In 2026, Ahrefs found a 58% lower CTR for position one when an AI Overview was present.”
- 弱:“Position-one CTR dropped 58% (Ahrefs, 2026).”
-
行内引用须注明出版方和标题。 写明出版方和文档标题(或报告名称),不能只写品牌名。示例:
- 好:“Ahrefs, AI Overviews CTR update, December 2025”
- 弱:“Ahrefs reported...”
-
在文章底部的来源区块中提供 URL 和检索日期。 严谨记录来源信息,能让未来的读者和 AI 爬虫核实来源是否仍支持所述内容。格式:
- “[Publisher], [Title], retrieved YYYY-MM-DD, [full URL]”
FLOW 质量标准(删除或替换): 公开声明必须使用经过核实的来源,否则应保持定性描述。如果统计数据无法核实,请删除。如果有更新的来源与之矛盾,请用经过核实的替代数据取代。不要为了保留无法找到来源的数字而把语言改得含糊。
有关以证据为导向的优化提示词(CTR 审核、AI 检测器测试、schema、PAA 改写、ChatGPT 可见度),请参见 /blog flow optimize。
5d. 信息增益标记
在文章中分散放置至少 2-3 个信息增益标记。这些标记向搜索引擎和 AI 系统表明,内容包含其他地方无法获得的原创价值。
为每个标记添加注释或可见标记:
[ORIGINAL DATA]- 专有调查、实验、A/B 测试结果,以及作者亲自收集的案例研究指标[PERSONAL EXPERIENCE]- 第一手观察、直接参与的经验教训、“我们尝试 X 后,Y 就发生了”这类叙述[UNIQUE INSIGHT]- 他人尚未提出的分析、有数据支持的逆向观点,以及对现有研究的新颖关联
放置方式:
- 自然地融入正文
- 使用行内注释:``,放在相关段落之前
- 或者,如果格式支持,使用可见提示框:
> **Our finding:** [original observation backed by specific data] - 每篇文章至少 2 个,内容全面的文章以 3 个为目标
这些标记直接对应内容质量评分类别中的“原创性/独特价值标记”标准(参见 skills/blog/references/quality-scoring.md)。
5e. 引用摘要块
为每个主要 H2 部分生成一个引用摘要块——一段 40-60 个单词的独立文本,旨在让 AI 系统能够直接提取并引用。
每个摘要块的要求:
- 40-60 个单词,可独立理解
- 包含:一项具体论断、一项数据点和来源归属
- 采用陈述式、适合引用的风格
- 放在 H2 部分正文中(不要单独作为一个区块)
示例:
According to a 2026 Gartner study, 58% of enterprise buyers now consult AI
assistants before contacting a vendor ([Gartner](https://www.gartner.com), 2026).
This shift means B2B content must answer specific questions concisely enough
for AI systems to extract and cite in their responses.
摘要块对应 skills/blog/references/quality-scoring.md 中的“AI 引用就绪度”评分类别(15 分)。
5f. 内部链接区域
在文章中使用占位符标记内部链接机会。用户(或后续处理步骤)会将其替换为实际 URL。
区域位置:
- 引言 - 链接到相关的支柱内容或主题中心
- 每个 H2 章节 - 链接到辅助文章、深入解读或相关工具
- 常见问题章节 - 将答案链接到能进一步展开说明的详细内容
- 结论 - 链接到读者接下来应阅读的相关内容
格式:
[INTERNAL-LINK: anchor text → target description]
示例:
For a deeper dive into keyword clustering, see our
[INTERNAL-LINK: complete guide to keyword clustering → pillar page on keyword research methodology].
每篇 2,000 词的文章目标为 5-10 个内部链接区域。使用描述性锚文本
(切勿使用“点击此处”或“阅读更多”)。锚文本规则和链接策略请参阅 skills/blog/references/internal-linking.md。
5g. 段落规则
- 每个段落:40-80 词(绝不超过 150 词)
- 每句话:最多 15-20 词
- 每个段落都以最重要的信息开头
- 目标 Flesch 易读性指数:60-70
5h. 标题规则
- 一个 H1(仅用于标题)
- 主要章节使用 H2(其中 60-70% 为疑问句)
- 子章节仅使用 H3,绝不跳级
- 在 2-3 个标题中自然包含主要关键词
5i. 图片嵌入
标准 Markdown:

使用 Next.js Image 的 MDX(如果检测到):

- 将图片放在 H2 标题之后、正文之前
- 在整篇文章中均匀分布图片(不要集中在一起)
- 替代文本应为完整的描述性句子
5j. 图表嵌入
标准 Markdown/HTML:
<figure>
<svg viewBox="0 0 560 380" ...>...</svg>
<figcaption>Source: [Source Name], [Year]</figcaption>
</figure>
MDX 格式:
<figure className="chart-container" style={{margin: '2.5rem 0', textAlign: 'center', padding: '1.5rem', borderRadius: '12px'}}>
<svg viewBox="0 0 560 380" ...>...</svg>
</figure>
5k. 视频嵌入
使用 skills/blog/references/video-embeds.md 中的 srcdoc 延迟加载模式嵌入 YouTube 视频。
添加 aria-label,并提供供 AI 爬虫使用的 noscript 回退内容。将视频放在相关 H2 之后,且彼此间隔 500 词以上。
5l. 引用格式
始终使用行内归因:
Organic CTR declined 61% with AI Overviews ([Seer Interactive](https://www.seerinteractive.com/), 2025).
5m. 常见问题章节
添加 3-5 个常见问题,每个答案为 40-60 词。每个答案都必须包含一项统计数据。
适用于带有 FAQSchema 组件的 MDX:
<FAQSchema faqs={[
{ question: "Question?", answer: "40-60 word answer with statistic and source." },
]} />
适用于标准 Markdown:
## Frequently Asked Questions
### Question text here?
Answer with statistic and source attribution (40-60 words).
5n. 内部链接
- 每篇 2,000 词的文章添加 5-10 个内部链接
- 自然地链接到相关的现有内容
- 使用描述性锚文本(不要使用“点击此处”)
第 6 阶段:质量检查
交付前,请确认:
结构和内容
- 每个 H2 开头都包含一项统计数据及其来源
- 没有段落超过 150 词
- 所有统计数据都标明了第 1-3 级来源
- 包含 2-4 张类型多样的图表
- 包含 3-5 张带有描述性替代文本的行内图片
- frontmatter 中包含封面图片(coverImage + ogImage)
- 包含 3-5 个常见问题
- 标题层级清晰(H1 -> H2 -> H3)
- Meta description 为 150-160 个字符,并包含一项统计数据
新元素验证
- 引言后包含 TL;DR 框(40-60 词,包含统计数据和来源)
- 至少包含 2-3 个信息增益标记(
[ORIGINAL DATA]、[PERSONAL EXPERIENCE]或[UNIQUE INSIGHT]) - 主要 H2 章节中包含引用摘要(40-60 词,内容完整,可直接引用)
- 在引言、H2 章节、常见问题和结论中标记内部链接区域
- 不包含禁用列表中的 AI 可检测短语(参见
agents/blog-writer.md)
突显度与自然度检查
- 句长变化 - 确保句子长短搭配,包括短句(8 个词)和长句(25 个词)。句长过于一致会显得像 AI 撰写。
- 扫描禁用的 AI 短语 - 检查并删除以下短语:
- "in today's digital landscape", "it's important to note", "dive into"
- "game-changer", "navigate the landscape", "revolutionize", "seamlessly"
- "cutting-edge", "harness the power of", "leverage"(作动词时)
- "delve", "crucial", "elevate", "foster", "landscape"(过度使用时)
- "multifaceted", "robust", "tapestry", "embark"
- 完整列表见
agents/blog-writer.md
- 缩写形式 - 确保自然使用缩写形式("it's"、"we've"、"don't"、"isn't")。正式的 AI 文风会避免使用缩写,而自然写作会使用。
- 反问句 - 确保每 200-300 个词至少出现一个反问句,以打破陈述句模式。
- YouTube 视频 - 嵌入 2-3 个视频,并启用延迟加载、设置 aria-labels 和 noscript 回退(参见
skills/blog/references/video-embeds.md)
阶段 6.5:交付契约执行
进入阶段 7 前,按照 skills/blog/references/blog-delivery-contract.md 执行 5 道交付契约关卡。用户绝不会是第一位审核者;这些关卡才是。
步骤:
-
能力发现 + 主视觉图:运行
python scripts/blog_preflight.py --draft <folder> --gate 1,枚举可用路径。如果已加载nanobanana-mcp,则通过 MCP 工具生成主视觉图。否则运行python scripts/generate_hero.py --topic "<title>" --tags "<tags>" --out <folder>(使用 Gemini、Unsplash、Pexels、Pixabay、Openverse 的顺序)。 -
格式完整性:将规范的
.md渲染为.html和.pdf,运行python scripts/blog_render.py --md <slug>.md --out-dir <folder>。所有 3 种产物以及hero.<ext>都必须放入草稿文件夹。 -
内容审核(阻断性):调用
blog-reviewerAgent(Task 工具)审核渲染后的.html。Agent 会将评分卡输出到<folder>/review.md,并以BLOCKING: true|false (reason)结尾。门槛:总分至少为 90/100,且editorial-heuristics.md中的 P0 问题为零。 -
视觉与资源关卡:运行
python scripts/blog_preflight.py --draft <folder> --strict。该命令会运行关卡 3(通过 patchright 在 3 种视口宽度下进行视觉验证)、关卡 4(读取 review.md 中的 BLOCKING 行)和关卡 5(资源与链接完整性)。退出码为 0 = 可以交付;退出码为 1 = 阻断。 -
迭代:遇到任何阻断时,从
<folder>/preflight-report.json获取失败诊断,将该诊断作为输入重新调用 blog-writer Agent,并从步骤 1 重新运行。最多迭代 3 次。第 3 次仍失败时,停止并提供失败诊断,而不是草稿。
编排器负责保存循环计数器;此子技能不会自行循环。
阶段 7:交付
只有在阶段 6.5 的所有关卡均通过后,才能提供完成的文章。将 <folder>/preview/*.png 中的截图一并放入摘要,让用户在阅读文章前就能看到最终内容。
摘要模板:
## Blog Post Complete: [Title]
### Template Used
- [Template name] (or "generic outline - no template matched")
### Statistics
- [N] sourced statistics from tier 1-3 sources
- [N] unique sources cited
### Visual Elements
- Cover image: [source - Pixabay/Unsplash/Pexels or generated SVG]
- [N] inline images (Pixabay/Unsplash/Pexels)
- [N] SVG charts (types: bar, lollipop, donut, line)
- [N] YouTube video embeds (titles: ...)
### Dual-Optimization Elements
- TL;DR box: present (N words)
- Information gain markers: [N] ([types used])
- Citation capsules: [N] across H2 sections
- Internal linking zones: [N] marked
### Structure
- [N] H2 sections with answer-first formatting
- [N] FAQ items with schema
- Word count: ~[N] words
- Estimated reading time: [N] min
### Naturalness
- Sentence length variance: [pass/fail]
- AI phrase scan: [pass/fail]
- Contractions used: [yes/no]
- Rhetorical questions: [N] (target: 1 per 200-300 words)
### Next Steps
- Review and customize for your brand voice
- Resolve [INTERNAL-LINK] placeholders with actual URLs
- Add internal links to your existing content
- Run `/blog analyze <file>` to verify quality score
- Generate VideoObject schema: `/blog schema <file>` (includes video markup)
- Generate audio narration: `/blog audio generate <file>` (optional)