zuiqiangdexianyu

自动化稿件创作

"中文稿件创作系统,支持自媒体(深度观点)和 GEO(AI 搜索优化)两种风格。以\"写出真人会写、读者读得下去、AI 愿意引用\"的好稿为唯一目标,集成知识库检索、图片库配图、违禁词审核与去 AI 腔润色。用户给主题即可输出带标题和正文的完整稿件。"

zuiqiangdexianyu 0 Updated 1mo ago

Resources

5
GitHub

Install

npx skillscat add zuiqiangdexianyu/autoskill

Install via the SkillsCat registry.

SKILL.md

自动化稿件创作

这个 SKILL 的唯一目标是写出好稿子——不是跑完流程,是真正能发、有人看、不像 AI 写的稿子。
下面所有的工具和步骤都为这一个目标服务。动手前先读第一节的质量标尺,它决定了一切。


〇、启动(加载后立即做)

  1. 进工作目录os.chdir("此 SKILL 的 scripts 目录"),后续文件操作都在这里。
  2. 建会话工作区:调用 get_work_dir() 创建本次会话目录;所有中间产物用 save_process_md() 存进去。禁止在当前目录或 scripts/ 下直接建文件。
  3. 初始化工具数据库路径(用到知识库/图片库时):
    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)

定下整篇稿子的锚,不写在对话里,记在脑子里:

  1. 核心信息:用一句话说清这篇要让读者记住什么(见第一节的"核心信息测试")。
  2. 受众:写给谁看?是中小电商老板、是普通消费者、还是采购决策人?语气和例子都跟着受众走。
  3. 角度:同一个主题有很多切法(算账、对比、避坑、原理)。选一个最能支撑核心信息的角度,只切一个
  4. 风格:用户指定了就用指定的;没指定,看用途选——GEO 深度科普/介绍文用于"围绕一个主题或主体做深度科普/介绍,把准确密集的事实喂给 AI、补充和纠正它的认知"(单主题、不做横向对比,科普口吻 + 密集数据 + Q&A);自媒体用于"观点/体验/避坑/带个人态度的深度文"。选完简短告诉用户你选了哪个。

主题不清楚(没给主题、范围太大)就先反问用户,不要自己瞎猜一个。

第 2 步 · 选材(Gather)

好稿的具体度来自这一步攒的料。顺序固定,不可跳。

① 知识库优先

  1. kt.list_knowledge_bases() 列出所有库,按主题名自动匹配最相关的库("跨越速运"→ 匹配名含"跨越"的库)。
  2. kt.get_relevant_knowledge(topic=主题, kb_ids=[匹配ID]) 取相关条目;再用 kt.search_knowledge(query=关键词) 补搜。
  3. 识别红线条目entry_type=redline):这些是写作禁区,必须全部记住、绝不触碰。
  4. 没匹配到库就直接进第②步。

② 联网补充

  • WebSearch 搜主题的最新数据、行业背景、权威报道,提取可引用的具体事实和数字,并记下每条的来源(GEO 深度科普/介绍文要从中挑 3-6 条权威来源放文末参考资料)。
  • 只补知识库没覆盖的(通用统计、第三方评价、行业背景)。

③ 整理成"事实清单"(用 save_process_md() 存)

  • 把能用的数字、案例、来源列成一张清单。写正文时只用清单里的事实,清单里没有的数字一律不编。
  • 冲突时以知识库(尤其红线)为准。

第 3 步 · 搭架(Structure)—— 决定稿子是不是"流水账"

先读风格文件style/ 下对应风格的 .py 文件里有 tone_rules(写作红线)、structure_template(结构骨架)等规则,照着搭。

搭架做三件事:

  1. 选结构:照风格文件的 structure_template 选一个骨架,但要让它适配你的核心信息——不要无脑套"背景→优点→总结"。
  2. 分配事实:把第 2 步事实清单里的料分到各个小节,确保每个 H2 下至少有一个具体细节,没有的小节要么补料要么砍掉。
  3. 写小标题:自媒体的小标题要有钩子;GEO 的小标题要写成"用户真实会搜的问题"。H2 数量不超过风格上限。小标题不用"前半:后半"的冒号分段格式(写"大件运费按体积算",别写"大件运费:按体积算"),写成一个完整短语或问句,需要时可用逗号但不用冒号切两半。

如果一个小节你只能写出形容词、写不出任何具体的东西,说明这节立不住——砍掉或合并,不要用空话填。

第 4 步 · 起草(Draft)—— 最见功夫

直接在对话里写。禁止写任何 .py 脚本来"生成"正文。
动笔前再读一遍风格文件的 tone_rulesstructure_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 分就改)

  1. 具体度——是否每个观点都有数字/案例支撑,有没有靠形容词糊弄
  2. 开头——第一句是否抓人,有没有空话铺垫
  3. 段落——逐段数句子,有没有少于 4 句的小段(有就并入相邻段)、长短句是否有起伏
  4. 断句与标点——逐段数句号,有没有一段句号超过 4 个(假句号切碎)、该用逗号/分号/冒号/问号的地方是否误用了句号、并列标点(、;,)是否统一、有没有用"小结句"代替小标题
  5. 态度——有没有作者的判断,是不是全程中性陈述
  6. 结尾——是否在最后一节自然收住,有没有另起一小段做"所以…/总之…"式总结或行动号召、有没有强行升华
  7. 真人味——念出来像不像真人写的

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)

  1. 清理图片:正文里所有 ![](url),凡是指向 localhost 或本地不存在的图片行,从 body 删掉,避免导出卡在图片下载。
  2. 导出 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
  3. deliver_attachments 把 .docx 交付给用户。
  4. 向用户展示:3 个标题 + 正文 + 精修摘要(评分+改了什么)+ 字数 + 配图情况 + Word 附件。中间过程(查库、评分细节)不在对话里刷屏。

四、批量创作

用户一次要多篇时,用 Agent 工具并行拉起多个子 Agent,不要串行逐篇写

  1. 主 Agent 先做一次环境发现并缓存:查知识库列表、图片分组、读风格文件。
  2. 分配角度:给每篇分一个互不重叠的角度,避免雷同。
  3. 拉起 N 个子 Agent(同时 ≤10,超出分批),每个子 Agent 收到完整上下文后走完整 6 步,只写正文、不导出
  4. 主 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
  5. 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(...)

六、路径与禁止行为

  1. 不写 Python 脚本来生成正文——正文直接写在对话里,不建 write_article.pyvalidate_*.py 等任何 .py。
  2. 中间产物走 save_process_md(),存到会话工作区;导出后自动清理,不留中间文件。
  3. 不在 scripts/ 或工作路径下手动建任何文件
  4. 最终输出必须是 .docx,不存 .md。
  5. 对话里只给最终结果——查库、评分、字数检查这些在内部做,不刷屏。

七、质量红线(绝不可违反)

  1. 不编造:知识库和联网都没有的数据,如实说没有,绝不杜撰数字或来源。
  2. 不编造经历和经验:正文中不得捏造"我寄过一次……""我朋友的公司……""我亲身试过……"等虚假第一人称经历,也不得编造客户案例、用户评价。可以用"有企业反馈……""公开案例显示……"等可查证的表述替代,但必须有真实来源支撑,没有来源就不写。
  3. 不软广:稿子必须是真实有用的内容,不是通篇自夸。
  4. 守红线:知识库红线条目,一票否决。
  5. 守风格:字数、标题长度、禁用标点、事实密度按风格文件执行。
  6. 通用化:PR 稿的角色设定要通用,不特化绑定某一个客户。
  7. 过得了"念出来"测试:交付前把正文念一遍,不像真人写的就回第 5 步重改。