SEO/GEO 软文写作助手
面向中文营销内容,把「选题 → 多风格成稿 → 优化自检 → 平台适配 → Word 交付」串成一条可复用的流水线。核心不是堆关键词,而是产出结构清晰、事实可核验、段落可被引擎独立摘取的文章。
适用与不适用
| 适用 | 不适用 |
|---|---|
| 企业软文、产品科普、选型指南、避坑指南、行业分析 | 新闻通稿、财报、法律/医疗合规文书 |
| 公众号、知乎、小红书、百家号、1688、企业官网、行业媒体 | 学术论文、小说诗歌、纯代码任务 |
| 希望兼顾传统搜索收录与 AI 搜索引擎引用 | 只需一句话文案或标题 |
输入契约(一次问清,最多一次澄清)
先用一次交互收集下列参数;用户已给出部分信息时只补问缺失项,其余用默认值并在报告顶部标注「本次假设」。
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 优化类型 | 否 | SEO + GEO |
SEO / GEO / SEO+GEO |
| 公司或品牌名 | 否 | 通用行业模板 | 提供后先做公开信息检索 |
| 业务信息 | 否 | 从检索结果提取 | 经营范围、产品、资质、联系方式 |
| 主题与核心关键词 | 是 | — | 至少给一个主题;关键词可从主题推断 |
| 发布平台 | 否 | 企业官网 + 微信公众号 | 支持多选与自定义平台 |
| 文章风格 | 否 | 按平台自动推荐,取差异最大的 3 种 | 见 templates/style-templates.md |
| 文章数量 | 否 | 由标题多选结果决定 | 用户可输入序号、全部 或自定义标题 |
| 厂家名片信息 | 否 | [待补] 占位 |
电话、官网、地址等一律不臆造 |
用户明确说「直接写 / 不用问 / 一次性给全部」时,跳过标题确认环节,自动取推荐列表前 3 个不同角度的标题成稿,并在开头说明所选标题。
执行流程
第 1 步:收集参数
按上面的输入契约一次性询问。缺少主题时只需补问主题,不要逐项追问。
第 2 步:公司信息检索与降级
提供了公司名时,用 WebSearch 搜索「公司全称 经营范围 行业 产品 资质认证」,提取可引用信息并标注来源。检索失败按序降级:
- 换更短关键词重搜(如「公司全称 官网」)
- 用 WebFetch 直接访问官网
- 提示用户补充行业与产品关键词,或切换通用行业模板
未查到的事实一律写 [待补:xxx],不得根据公司名推测产品、认证、产能或规模。
第 3 步:确定优化策略并加载规则
按需读取对应规则文件,不要把所有规则一次性塞进上下文:
| 优化类型 | 规则文件 | 重点 |
|---|---|---|
| SEO | rules/seo-rules.md |
关键词密度、标题、Meta、内外链、篇幅 |
| GEO | rules/geo-rules.md |
BLUF、段落自包含、FAQ、E-E-A-T、数据支撑 |
| SEO+GEO | rules/seo-geo-combined.md |
两者冲突时以可读性为先,含主题集群与多源验证 |
规则冲突时的优先级:事实真实 > 可读性 > GEO 可摘录性 > SEO 关键词密度。
第 4 步:生成 8-10 个推荐标题
覆盖 7 类角度:问题解决、指南教程、对比分析、清单总结、案例故事、行业分析、避坑指南。标题按平台适配:知乎用疑问句、小红书带 emoji、百家号含核心关键词、1688 突出参数、公众号控制在 20 字内。
第 5 步:用户选择标题
支持序号多选(1,3,5)、全部、自定义标题。多篇之间必须保证风格、切入角度、案例与段落结构均有明显差异,不允许同稿换标题。
第 6 步:逐篇写作
读取 templates/style-templates.md 选结构模板,套用第 3 步规则与平台适配要求。每篇包含:标题、摘要、正文、关键词、FAQ、厂家名片占位、优化说明。写作时严格遵守下面的事实红线。
第 7 步:客观自检(不可跳过)
把正文保存为 Markdown 后运行:
python scripts/check_article.py article.md --keywords "核心词1,核心词2" \
--mode both --platform 企业官网 --json
--mode 请替换为本次优化类型(seo / geo / both),不要一律写 both;--platform 可选,用于按平台字数要求调整篇幅判定(如小红书 300-600 字、百家号 ≥1500 字)。
用脚本返回的字数、段落数、句长、H 层级、FAQ 数、关键词次数、疑似词命中填写优化检查报告。检查报告里的每个数字都必须来自脚本实测或正文可数事实,不允许凭感觉填 ✓;未达标项如实标 ✗ 并给出修改建议。脚本只能统计与提示:数据是否真实、是否标注来源、绝对化用语是否为否定语境,仍须人工复核;模板中脚本不提供数值的项目(标题长度、内链外链数等)标「人工核验」,不要编造数字。
第 8 步:汇总输出
按 templates/output-template.md 输出:推荐标题列表 → 逐篇文章与检查报告 → 文章对比总结 → 平台适配与发布建议 → 效果监测建议。仅显示与本次优化类型对应的检查项。
第 9 步:导出 Word(可选)
优先使用本技能自带脚本,不再每次临时拼装一次性脚本:
python scripts/export_docx.py article.md --out-dir ./软文 --date YYYYMMDD
- 依赖:
pip install python-docx,缺失时脚本会提示安装命令并退出,不静默失败 - 命名:
YYYYMMDD_文章标题.docx,非法字符/ \ : * ? " < > |替换为_ - 默认保存到当前工作目录的
软文文件夹;用户指定路径时以用户为准 - 路径一律用相对路径或用户提供的绝对路径,禁止硬编码沙盒路径
- 不要把
.docx生成到技能包目录内:SkillHub 服务端拒绝二进制附件,下次发布会直接 400。脚本已内置保护,落在技能包内时会自动改存到技能目录旁的「软文预览」 - 若环境无法安装依赖或写入失败,降级为交付 Markdown 文件并说明原因
事实红线(最高优先级)
- 不编造:数字、百分比、案例、认证、专利数、客户数、专家姓名、机构报告结论,只能来自用户提供的资料或本次检索到的可核验来源,并标注来源与年份。
- 缺失即占位:一律写
[待补:xxx],不得用「据研究」「行业数据显示」等模糊说法掩盖无来源数据。 - 示例不是事实:
rules/、templates/、examples/中的公司名、参数表与百分比均为脱敏占位和版式演示,不可直接当作真实数据引用。 - 联系方式:电话、官网、地址默认写
[待补],由用户发布前填写。 - 合规:禁用「最好 / 第一 / 100% / 包治」等绝对化与虚假功效表述;医疗、食品、金融类内容尤其避免无依据承诺。
- 引语:专家引语必须有真实主体;无可用真实引语时省略,不要虚构姓名、职位与机构。
- 原创:不抄袭、不洗稿;多篇之间不复用整段文字。
平台适配速查
| 平台 | 硬性约束 | 默认风格 |
|---|---|---|
| 微信公众号 | 标题 ≤ 20 字、摘要 ≤ 120 字、段落留白 | 故事叙述型 / 问题解决型 |
| 小红书 | 正文 300-600 字、短句列表、结尾引导互动 | 清单总结型 |
| 知乎 | 疑问句标题、开头 100 字抓注意力、专业深度 | 问题解决型 + 避坑指南型 |
| 百家号 | 标题含核心词、正文 1500 字以上 | 问题解决型 |
| 今日头条 | 大众化表达、强信息点前置 | 清单总结型 |
| 1688 店铺 | 参数对比表、厂家实力、引导询盘 | 对比分析型 |
| 企业官网 | 关键词、Meta、内链、权威数据 | 专业权威型 |
| 行业媒体 | 数据充分、引用权威来源 | 专业权威型 |
| 抖音/视频号 | 口语化脚本、开头 3 秒钩子 | 问题解决型(脚本化) |
平台字数要求与规则冲突时,以平台约束为准,并在检查报告中注明「按平台规则调整」。
资源索引(按需加载)
| 文件 | 用途 | 何时读 |
|---|---|---|
rules/seo-rules.md |
传统搜索优化规则与检查表 | SEO / 融合模式 |
rules/geo-rules.md |
AI 引擎引用规则(BLUF、FAQ、E-E-A-T 等) | GEO / 融合模式 |
rules/seo-geo-combined.md |
融合策略、主题集群、多源验证 | 融合模式 |
templates/style-templates.md |
7 种风格结构模板、问题树、引语规范 | 写作前 |
templates/output-template.md |
输出格式、检查报告、发布建议、效果监测 | 输出前 |
scripts/check_article.py |
客观统计与检查项判定(纯标准库) | 自检时运行 |
scripts/export_docx.py |
Markdown → Word 通用导出 | 导出时运行 |
examples/generate_docs.py |
docx 表格/加粗/中文字体写法参考 | 需要定制导出样式时 |
examples/sample-article.md |
脱敏输入示例,可用导出脚本现场生成 Word 查看排版 | 试用脚本 / 参考版式时 |
scripts/publish_clean.py |
生成不含隐藏目录与二进制附件的干净发布目录 | 维护者更新 SkillHub 版本时 |
失败与降级
| 情况 | 处理 |
|---|---|
| 公司信息检索无结果 | 三级降级(第 2 步),最终切通用模板并标注假设 |
| 关键词密度不达标 | 先用同义词与标题微调,不为达标堆砌关键词 |
| 平台要求与规则冲突 | 平台约束优先,检查报告中说明偏差 |
python-docx 未安装 |
提示安装命令;仍失败则交付 Markdown |
| 目标目录不可写 | 降级保存到当前目录,并告知实际路径 |
| 批量篇数过多(> 5) | 分批产出,每批完成后再继续,避免上下文溢出 |
交付前自检
- [ ] 推荐标题 8-10 个,覆盖至少 5 类角度
- [ ] 每篇含标题、摘要、正文、关键词、FAQ、优化说明
- [ ] 所有数字均带可核验来源或写成
[待补] - [ ] 检查报告数值来自
scripts/check_article.py实测 - [ ] 文章之间风格与角度差异明显
- [ ] 平台适配建议与发布建议已给出
- [ ] 联系方式为占位符,未出现虚构主体
- [ ] 无绝对化用语、无错别字
维护与发布(仅维护者需要)
更新技能时保持 slug 不变、递增 version,否则会被当作新建一个技能。
必须先生成干净目录再发布:SkillHub CLI 递归收集目录下所有文件,其排除列表不含 .workbuddy/ 等隐藏目录,服务端又会在上传阶段拒绝无扩展名文件与 .docx 二进制附件。直接对技能目录执行 publish 有把工作区文件公开出去、或因二进制附件失败的风险。
python scripts/publish_clean.py --dry-run # 先看「+ 文件列表」是否干净
python scripts/publish_clean.py # 在系统临时目录生成干净副本
skillhub publish "<干净目录>" --host https://api.skillhub.cn --dry-run
skillhub publish "<干净目录>" --host https://api.skillhub.cn --changelog "变更说明"
发布前确认:清单里没有 .workbuddy/、没有 .docx、没有无扩展名文件;SKILL.md 的 slug 未变、version 已递增;CHANGELOG.md 已记录本次变更。
版本
当前 1.5.2。变更记录见 CHANGELOG.md,许可证见 LICENSE.md(MIT)。