"中文稿件创作系统,支持自媒体(深度观点)和 GEO(AI 搜索优化)两种风格。以\"写出真人会写、读者读得下去、AI 愿意引用\"的好稿为唯一目标,集成知识库检索、图片库配图、违禁词审核与去 AI 腔润色。用户给主题即可输出带标题和正文的完整稿件。"
Resources
5Install
npx skillscat add zuiqiangdexianyu/autoskill Install via the SkillsCat registry.
自动化稿件创作
这个 SKILL 的唯一目标是写出好稿子——不是跑完流程,是真正能发、有人看、不像 AI 写的稿子。
下面所有的工具和步骤都为这一个目标服务。动手前先读第一节的质量标尺,它决定了一切。
〇、启动(加载后立即做)
- 进工作目录:
os.chdir("此 SKILL 的 scripts 目录"),后续文件操作都在这里。 - 建会话工作区:调用
get_work_dir()创建本次会话目录;所有中间产物用save_process_md()存进去。禁止在当前目录或 scripts/ 下直接建文件。 - 初始化工具数据库路径(用到知识库/图片库时):
import knowledge_tools as kt; kt.set_database_path("wrw_agent.db") import image_tools as it; it.set_database_path("wrw_agent.db"); it.set_image_dir("images")
一、什么是好稿子(质量标尺 —— 全文最重要的一节)
写之前、写之后,都拿这把尺子量。烂稿的通病只有三个字:空、匀、装。
| 维度 | 烂稿(要避免) | 好稿(要做到) |
|---|---|---|
| 具体度 | 通篇"强大、卓越、领先、显著提升",没有一个数字 | 每个观点后面跟一个数字、案例或场景,能落地 |
| 开头 | "在当今……时代""随着……发展",三句还没进正题 | 第一句就是一个具体场景/反常识事实/真实痛点,让人想读下去 |
| 结构 | 默认"背景→优点1→优点2→总结"的流水账 | 结构服务于"把那一件事讲透",每节解决一个真问题 |
| 节奏 | 每句都 25–35 字,像节拍器 | 长短句交错,该停就停,有起伏 |
| 态度 | 全程中性陈述,像产品说明书 | 有作者的判断,敢说"这点被高估了""这才是关键" |
| 结尾 | 另起一小段写"所以…/总之…/未来可期/让我们拭目以待"做总结或升华 | 在最后一个实质小节里自然收住,不另起小段总结、不升华 |
| 真人味 | 念出来一股 AI 腔 | 念出来像一个懂行的人在认真讲这件事 |
三个一票否决的硬错误:编造数据/来源;虚构案例、伪造经验(捏造"我朋友""我寄过""我亲测"等没真实发生的第一人称经历,或编造客户案例、用户评价);写成软广(通篇自夸而没有真实有用的信息)。
核心信息测试:写之前先问自己——"这篇稿子要让读者记住的那一句话是什么?" 答不上来,就别动笔,回去想清楚。一篇稿子只为一个核心信息服务。
二、任务路由
| 用户想… | 我怎么做 | 触发词 |
|---|---|---|
| 创作稿件 | 走第三节的创作工作流,输出标题+正文+审核 | 写、创作、生成、写一篇、出一篇、稿 |
| 管理知识库/图片库 | preview_url("http://localhost:8600") 打开前端界面让用户操作 |
编辑、管理、上传、修改、删除知识库/图片库 |
| 查询数据 | 直接用 Python 工具查,文字汇报,不开界面 | 查、搜、有哪些、列出 |
管理界面启动方式:python scripts/server.py --db wrw_agent.db --img images/ --port 8600
三、创作工作流(6 步)
不要把这 6 步当成 6 个要交差的环节。它们是一个人写好一篇稿子的真实思考顺序:
先想清楚要说什么(立意)→ 找够料(选材)→ 搭个好骨架(搭架)→ 用心写(起草)→ 狠心改(精修)→ 交付(导出)。
核心的功夫在第 3、4、5 步。
第 1 步 · 立意(Frame)
定下整篇稿子的锚,不写在对话里,记在脑子里:
- 核心信息:用一句话说清这篇要让读者记住什么(见第一节的"核心信息测试")。
- 受众:写给谁看?是中小电商老板、是普通消费者、还是采购决策人?语气和例子都跟着受众走。
- 角度:同一个主题有很多切法(算账、对比、避坑、原理)。选一个最能支撑核心信息的角度,只切一个。
- 风格:用户指定了就用指定的;没指定,看用途选——GEO 深度科普/介绍文用于"围绕一个主题或主体做深度科普/介绍,把准确密集的事实喂给 AI、补充和纠正它的认知"(单主题、不做横向对比,科普口吻 + 密集数据 + Q&A);自媒体用于"观点/体验/避坑/带个人态度的深度文"。选完简短告诉用户你选了哪个。
主题不清楚(没给主题、范围太大)就先反问用户,不要自己瞎猜一个。
第 2 步 · 选材(Gather)
好稿的具体度来自这一步攒的料。顺序固定,不可跳。
① 知识库优先
kt.list_knowledge_bases()列出所有库,按主题名自动匹配最相关的库("跨越速运"→ 匹配名含"跨越"的库)。kt.get_relevant_knowledge(topic=主题, kb_ids=[匹配ID])取相关条目;再用kt.search_knowledge(query=关键词)补搜。- 识别红线条目(
entry_type=redline):这些是写作禁区,必须全部记住、绝不触碰。 - 没匹配到库就直接进第②步。
② 联网补充
- 用
WebSearch搜主题的最新数据、行业背景、权威报道,提取可引用的具体事实和数字,并记下每条的来源(GEO 深度科普/介绍文要从中挑 3-6 条权威来源放文末参考资料)。 - 只补知识库没覆盖的(通用统计、第三方评价、行业背景)。
③ 整理成"事实清单"(用 save_process_md() 存)
- 把能用的数字、案例、来源列成一张清单。写正文时只用清单里的事实,清单里没有的数字一律不编。
- 冲突时以知识库(尤其红线)为准。
第 3 步 · 搭架(Structure)—— 决定稿子是不是"流水账"
先读风格文件:style/ 下对应风格的 .py 文件里有 tone_rules(写作红线)、structure_template(结构骨架)等规则,照着搭。
搭架做三件事:
- 选结构:照风格文件的
structure_template选一个骨架,但要让它适配你的核心信息——不要无脑套"背景→优点→总结"。 - 分配事实:把第 2 步事实清单里的料分到各个小节,确保每个 H2 下至少有一个具体细节,没有的小节要么补料要么砍掉。
- 写小标题:自媒体的小标题要有钩子;GEO 的小标题要写成"用户真实会搜的问题"。H2 数量不超过风格上限。小标题不用"前半:后半"的冒号分段格式(写"大件运费按体积算",别写"大件运费:按体积算"),写成一个完整短语或问句,需要时可用逗号但不用冒号切两半。
如果一个小节你只能写出形容词、写不出任何具体的东西,说明这节立不住——砍掉或合并,不要用空话填。
第 4 步 · 起草(Draft)—— 最见功夫
直接在对话里写。禁止写任何 .py 脚本来"生成"正文。
动笔前再读一遍风格文件的 tone_rules 和 structure_template,严格按规则写。
标题:生成 3 个正式标题(都正式,不分主备)。每个 ≤ 风格的 title_max_length 字,不用风格 title_forbidden_punctuation 里的标点,含核心关键词,有"为什么/怎么做到"的钩子。
开头(决定 70% 读完率):第一句必须是具体场景 / 反常识事实 / 真实痛点。场景须是真实案例或明确的设想(如"假设你要寄一件……"),不得伪造第一人称经历或客户案例。严禁 style_definitions.FORBIDDEN_OPENINGS 里的任何开场。
正文,边写边守这几条:
- 每个观点都给"凭什么":抛一个观点,立刻跟一个数字/案例/机制。只有观点没有支撑的段落,等于没写。
- 段落要成块:每个 H2 下 2–4 段,每段 4–8 句。同一个意思的几句话连成一段,不要一句一段拆成豆腐块。
- 断句别用"假句号":逻辑连续的话(解释/列举/递进/因果)用逗号连成一个自然的长句,句号只用在一个意思真正讲完时;但别"一逗到底",话题切换处和短句节奏点仍用句号。
- 标点统一:并列的词/短语用顿号(、),并列的分句用逗号(,),内部已含逗号的长分句才用分号(;);同类并列保持同一种标点,不要一会儿用、一会儿用;。
- 分节用小标题,不用"小结句":要引出或概括一整节内容时,升级成 H2 小标题,绝不能在段落里写"真正的关键在于……""接下来说说……""记住三件事就够了"这种承上启下的小结句。需要分节就加 H2,不需要就删掉直接写内容。
- 节奏有起伏:长句之间插短句。别整段都是中长句。
- 有判断:在合适处给出作者的态度和取舍,不要全程中性。
- 守红线 + 风格:绝不碰第 2 步的红线条目;字数、Emoji、事实密度按风格文件来。
- 一边写一边对照风格文件的
tone_rules。
配图(正文写完后):
groups = it.list_image_groups() # 列出分组,按主题匹配最相关的
result = it.insert_images_into_article(body=正文, group_ids=[匹配的分组ID])
body = result["body"] # 返回 dict,body 字段已含图片 Markdown;务必取 result["body"] 覆盖原 body
# 短文(<800字)插1张,长文(≥800字)插2张
# 第1张:第一段之后;第2张:最后一个 H2 小标题之前(避免图片夹在小标题和正文之间)第 5 步 · 精修(Polish)—— 把稿子从"能看"改到"好"
这一步合并了"审核 + 去 AI 腔 + 合规检查",是质量的最后一道闸。最多 2 轮,每轮按下面顺序走:
A. 质量评分卡(对照第一节标尺,每项 1–5 分,<4 分就改)
- 具体度——是否每个观点都有数字/案例支撑,有没有靠形容词糊弄
- 开头——第一句是否抓人,有没有空话铺垫
- 段落——逐段数句子,有没有少于 4 句的小段(有就并入相邻段)、长短句是否有起伏
- 断句与标点——逐段数句号,有没有一段句号超过 4 个(假句号切碎)、该用逗号/分号/冒号/问号的地方是否误用了句号、并列标点(、;,)是否统一、有没有用"小结句"代替小标题
- 态度——有没有作者的判断,是不是全程中性陈述
- 结尾——是否在最后一节自然收住,有没有另起一小段做"所以…/总之…"式总结或行动号召、有没有强行升华
- 真人味——念出来像不像真人写的
B. 去 AI 腔(最关键):对照 skill/humanizer/SKILL.md 的 20 类中文 AI 腔逐条扫,把空泛/套路/翻译腔的句子改成具体、有人味的中文。删掉空话后要补回具体信息,不能只删不补。
C. 硬性合规检查(调工具):
import banned_words
r = banned_words.check_banned_words(标题+正文) # r.safe / r.hits- 违禁词:
r.safe == False则按r.hits逐个改。 - AI 黑话:对照
style_definitions.AI_JARGON扫,命中就换。 - 禁用开场:对照
style_definitions.FORBIDDEN_OPENINGS查开头。 - 占位符:搜
[待补充]、[XXX]等未替换内容。 - 字数:确认落在风格区间内。
- 红线:重点复查有没有触碰第 2 步的红线条目。
改完任何一处后,回到 A 重新过一遍;2 轮后即便仍有小瑕疵也停手交付,不要无限打磨。
第 6 步 · 导出(Export)
- 清理图片:正文里所有
,凡是指向 localhost 或本地不存在的图片行,从 body 删掉,避免导出卡在图片下载。 - 导出 Word 到桌面(不要存 .md):
from word_export import save_article_to_downloads save_article_to_downloads(titles=["标题1","标题2","标题3"], body=body, style_name="自媒体", topic="跨越速运") # → 桌面/跨越速运_20260615_1430.docx - 用
deliver_attachments把 .docx 交付给用户。 - 向用户展示:3 个标题 + 正文 + 精修摘要(评分+改了什么)+ 字数 + 配图情况 + Word 附件。中间过程(查库、评分细节)不在对话里刷屏。
四、批量创作
用户一次要多篇时,用 Agent 工具并行拉起多个子 Agent,不要串行逐篇写。
- 主 Agent 先做一次环境发现并缓存:查知识库列表、图片分组、读风格文件。
- 分配角度:给每篇分一个互不重叠的角度,避免雷同。
- 拉起 N 个子 Agent(同时 ≤10,超出分批),每个子 Agent 收到完整上下文后走完整 6 步,只写正文、不导出。
- 主 Agent 收齐所有篇的标题+正文,统一打包导出:
from word_export import save_batch_as_zip save_batch_as_zip(articles=[ {"titles":[...], "body":"...", "topic":"文章一", "style_name":"自媒体"}, {"titles":[...], "body":"...", "topic":"文章二", "style_name":"GEO"}, ]) # → 桌面/批量稿件_20260615_1430.zip - 用
deliver_attachments交付 zip。
子 Agent 指令模板(主 Agent 填好 {} 变量再发,让子 Agent 不必重复查环境):
你在执行批量子任务。环境已就绪,直接创作,不要重复验证环境。
【知识库: {kb_name}(ID={kb_id})】【图片分组: {group_name}(ID={group_id})】【风格: {style_name}】
风格参数: 字数{min}-{max} | 标题≤{max_len}字 | 禁止标点{forbidden_punct} | 最多{max_h2}个H2
工作目录: {work_dir}(中间产物用 save_process_md())
任务: 写{style_name}风格关于"{topic}"的稿,角度限定为"{angle}"。
其他子 Agent 正在写其他主题,注意角度别和它们撞。
走完整 6 步工作流(重点做好第3搭架、第4起草、第5精修,含去AI腔)。
正文直接写在对话里,不要建 .py,不要导出 Word。
完成后返回: titles=["标题1","标题2","标题3"], body=正文Markdown五、工具速查
# 知识库 (import knowledge_tools as kt)
kt.list_knowledge_bases()
kt.get_relevant_knowledge(topic="主题", kb_ids=[1], max_entries=5) # RAG 检索
kt.search_knowledge(query="关键词", kb_ids=[1]) # 关键词搜
kt.check_content_against_knowledge(content=正文, kb_ids=[1], strict_mode=True) # 红线核查
# 条目类型: brand(品牌素材) / competitor(竞品参考) / redline(写作红线,必须遵守)
# 图片库 (import image_tools as it)
it.list_image_groups(); it.list_images(group_id=1)
it.insert_images_into_article(body=正文, group_ids=[1])
# 违禁词 (import banned_words)
banned_words.check_banned_words(全文) # → .safe / .hits / .summary
# 6 类: 绝对化用语 / 医疗违规 / 金融违规 / 引流诱导 / 虚假宣传 / 敏感话题
# 风格 (from style_definitions import ...)
get_style("zimeiti") # 含 tone_rules + structure_template 等规则
list_styles(); FORBIDDEN_OPENINGS; AI_JARGON
# 工作区与导出 (from word_export import ...)
get_work_dir(); save_process_md(text, "策划Brief")
save_article_to_downloads(...); save_batch_as_zip(...)六、路径与禁止行为
- 不写 Python 脚本来生成正文——正文直接写在对话里,不建
write_article.py、validate_*.py等任何 .py。 - 中间产物走
save_process_md(),存到会话工作区;导出后自动清理,不留中间文件。 - 不在 scripts/ 或工作路径下手动建任何文件。
- 最终输出必须是 .docx,不存 .md。
- 对话里只给最终结果——查库、评分、字数检查这些在内部做,不刷屏。
七、质量红线(绝不可违反)
- 不编造:知识库和联网都没有的数据,如实说没有,绝不杜撰数字或来源。
- 不编造经历和经验:正文中不得捏造"我寄过一次……""我朋友的公司……""我亲身试过……"等虚假第一人称经历,也不得编造客户案例、用户评价。可以用"有企业反馈……""公开案例显示……"等可查证的表述替代,但必须有真实来源支撑,没有来源就不写。
- 不软广:稿子必须是真实有用的内容,不是通篇自夸。
- 守红线:知识库红线条目,一票否决。
- 守风格:字数、标题长度、禁用标点、事实密度按风格文件执行。
- 通用化:PR 稿的角色设定要通用,不特化绑定某一个客户。
- 过得了"念出来"测试:交付前把正文念一遍,不像真人写的就回第 5 步重改。