La interfaz está localizada; las descripciones y documentos de las Skills se traducen automáticamente con IA a su idioma. El código, los comandos, rutas y términos técnicos se mantienen en el original, y prevalece el documento del autor.
Explorar Skills
Desarrollo · SKILL.md

zhililong

zhililong

直隶按察使公众号长文输出技能。基于素材(视频/音频/文字稿)产出 4000-5500 字的中文公众号长文。 触发:用户说"写一篇公众号长文"/"写一篇 4000-5000 字"、粘贴视频链接+"写长文"、已有 transcript_clean.txt+"扩写"。 不适用:短评(zhilicomments)、教程(khazix-writer)、GitHub 项目介绍(zhiligithub)。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentación de la Skill

GitHub

name: zhililong related_skills: [zhili-illustration] description: | 直隶按察使公众号长文输出技能。基于素材(视频/音频/文字稿)产出 4000-5500 字的中文公众号长文。 触发:用户说"写一篇公众号长文"/"写一篇 4000-5000 字"、粘贴视频链接+"写长文"、已有 transcript_clean.txt+"扩写"。 不适用:短评(zhilicomments)、教程(khazix-writer)、GitHub 项目介绍(zhiligithub)。

直隶按察使 · 长文输出(zhililong)

字数判断

输入字数
< 30 分钟视频4000-5000 字
30-60 分钟视频4500-5500 字
用户指定以用户为准(低于 4000 字建议不写)

中文字符计数:re.findall(r'[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef]', text) 含 CJK 标点。

⚠️ CSS / stop-slop / renwei / pre-submit 清单 → zhili-shared/references/zhili-style.md。

写作哲学基础(human-writing)

本技能写作基于 human-writing 活人感写作体系,核心是"材料→推进→中文"三关。

⚠️ 硬性前置要求:每次写作前必须先 skill_view(name='human-writing') 加载写作体系,用它的框架指导写作,而不是凭感觉下笔后依赖 renwei 查漏。 renwei 是中文关的自动化检查器,不是写作工具。

材料关:zhililong 篇幅长(4000-5500字),材料是唯一支撑。Step 1 的真实性核对是材料关的核心——不是改错字,是确认每段背后都有可查证的具体素材。用户给素材才能写,用户只给方向就要先研究再下笔。没有材料的段落,宁可砍掉也不能用想象补。

推进关:5节结构是骨架,每个论点的段落内部才是真正的推进。每个新段落必须带来新事实、新动作、新例子或新后果。5个论点之间要层层递进或互为补充,不能是同一个观点换5种说法。反转段要真的反转——颠覆读者预期,不是换个角度重述。

中文关:白话打底。让主语和动作先出现,再接时间、原因、条件。判断可以偏,把依据放在附近。不要用"更深一层""真正的问题"当路标,靠事情自身的逻辑推进。句尾的"呢""吧""了"是手迹,不要全删掉。

zhililong 现有规则(renwei 三原则、5节骨架)是三关在长文语境下的具体落地。



完整工作流(9 步)

0. 写作前:skill_view(name='human-writing') 加载写作体系,用其三关框架指导写作
Step 1:素材接收 + 真实性核对
Step 2:列 5 节骨架(先列骨架再写内容)
Step 3:renwei 改稿(zhili-style.md 第3节)
Step 4:markdown 落稿(**默认无 `##` 章节标记**,用行内小标题 + 空行分隔)
Step 5:HTML 转码(scripts/markdown_to_html.py)
Step 6:renwei 自检全文(zhili-style.md 第4节)
Step 7:配图(zhili-illustration)
Step 8:一键推送草稿(scripts/publish_lanlong.py)

Step 1:素材接收 + 真实性核对

必做:

  • 读取 transcript_clean.txt(或视频链接的转写)
  • 校对 ASR 常见错("冰箭"→"冰鉴"、"向犹新生"→"向死而生")
  • 提取具体人物名、具体场景、具体数字、具体金句(带书名号引用)

反模式:用"古人说"/"有研究表明"等泛指。每段至少 1 个可查证的具体素材。


Step 2:5 节结构骨架

⚠️ 先找说话位置,再列骨架。human-writing 要求在内部回答5件事:谁在说、他凭什么知道、手里有什么材料、他对哪点有判断、读者会追问什么。这5个答案决定了骨架怎么列,不是先有骨架再往里填内容。

先列骨架,再写内容。每节预估字数,控制篇幅:

一、[论点 1 — 反常识切入,300-500 字]
二、[论点 2 — 具体方法论 1,800-1000 字]
三、[论点 3 — 具体方法论 2,800-1000 字]
四、[论点 4 — 具体方法论 3,800-1000 字]
五、[论点 5 — 具体方法论 4 或整合,800-1000 字]
[反转段 — 颠覆前面某个认知,300-500 字]
[行动段 — 给读者一个今天就能做的事,200-300 字]

结构硬约束:

  • 论点 1 必须用反常识切入("你以为 X,其实是 Y",不要写成"不是 X 而是 Y"句式)
  • 5 个论点必须层层递进或互为补充,不能并列
  • 反转段必须真的反转
  • 行动段必须今天就能做("今天回家观察一下你爸"而不是"用心观察身边的人")

Step 3:renwei 改稿

⚠️ renwei 是 human-writing"中文关"的自动化检查。没有内化就下笔,5000 字长文一定掉进 AI 套话陷阱。

三原则(human-writing 三关的自检映射):

  1. 材料关:开头 3 句话有没有具体场景/数字/来源?模型临时编的不算数。
  2. 推进关:每段比起上一段有没有新东西(新事实/新角度/新后果)?同一观点换说法是 filler。
  3. 中文关:句尾的"呢""吧""了"保留了吗?语气是"见过事的人在讲",不是"导师在教学生"。

五问自检(写每段前心里过一遍):

  1. 谁在说?他凭什么知道这件事?
  2. 手里的材料够不够撑这个段落的结论?
  3. 这个段落比起上一个段落,有没有带来新东西?
  4. 判断有没有落在具体事实旁边,让读者知道这是作者的看法?
  5. 句尾有没有语气词,手迹感够不够?

完整套话清单(11 项,≥3 项命中 → 打回重写)→ zhili-shared/references/zhili-style.md 第 3 节。

作者个人覆盖层(刘生主笔时叠加)→ references/zhililong-voice-overrides.md。


Step 4:markdown 落稿

章节标记:基础仍用 ##(下游依赖),最终人工改稿按作者偏好删

写作时:## [论点]、## 反转、## 行动——这是 markdown_to_html → publish_lanlong 的硬依赖(extract_shot_list() 找 <h2> 注入配图)。

最终人工改稿时(推送前用户在微信草稿箱里二次编辑):按 references/zhililong-voice-overrides.md 偏好删 ##,合并反转段到正文,只留行内小标题。

✅ 基础输出:## 一、xxx、## 二、xxx、## 反转、xxx、## 行动、xxx ❌ 不要在基础输出里直接用行内小标题——会导致配图注入 0 张。

markdown 规范

  • 标题:# [标题]
  • 章节:## [论点]
  • 引用:谨慎使用 > [原话](作者偏好不用)
  • 强调:仅关键词,每节最多 1 处
  • 底部:参考资料 + 不涉玄学声明(如题材是玄学/命理类)

双文件模式(必须)

⚠️ markdown_to_html.py 会把所有 ## 都当 H2 处理——包括大纲和参考资料。

拆分两份 markdown:

  • 公众号-[标题]-body.md:仅含 7 节正文(转 HTML 用)
  • 公众号-[标题].md:body.md + 头部元信息 + 大纲 + 尾部参考资料(用户审稿用)
import re
md = open(full_md, encoding="utf-8").read()
body = re.sub(r"## 大纲\n[\s\S]*?(?=## 一、)", "", md)  # 删大纲
body = re.sub(r"\n## 参考资料[\s\S]*quot;, "", body)           # 删参考资料
open(body_md, "w", encoding="utf-8").write(body)

只对 body 跑转码:python3 scripts/markdown_to_html.py body.md out.html


Step 5:HTML 转码

转换规则:

markdownHTML
# 标题(不写入 HTML,标题传给 draft/add 的 title 字段)
## 章节<h2 style="...">(样式A H2 规范,见 zhili-style.md)
**重点**<strong style="color:#e63946;">重点</strong>
> 引用<blockquote style="...">
普通段落<p style="margin:0 0 16px 0;line-height:1.6;">

HTML 拼接规范:

blocks = [
    '<p style="...">第一段</p>',
    '<p style="...">第二段</p>',
]
html_content = ''.join(blocks)  # 零分隔符

验证:

grep -c '^#x27; /tmp/article.html   # 应为 0
grep -n '\*\*' /tmp/article.html  # 应为空

Step 6:renwei 自检全文

⚠️ 从零写 5000 字 vs 用户给原文让 AI 改:前者清单扫全文,后者只扫动过的句子。

必跑:python3 scripts/post_edit_check.py /tmp/article-body.md

检查项(详见 references/post-edit-checklist.md):

  • 「不是 X 而是 Y」:0 处
  • 排比三连:0 处
  • 破折号 ——:0 处
  • AI 套话:0 处
  • 字数:4000-5500

命中率 ≥ 3 → 先打回重写,不要一边改一边扫。


Step 7:配图

封面图(zhili-illustration):

  • 尺寸 900×540(微信编辑器推荐)
  • 走 zhililong/scripts/cover_pil.py 或 xiaohu-ip-studio 生成底图

正文配图(zhili-illustration):

  • 读取 HTML,按 ## H2 章节提取 shot list(最多 5 张)
  • 调用 xiaohu-ip-studio + mmx-cli 生成图片
  • 按 zhili-illustration/references/html-image-injection.md 规范注入 HTML

Step 8:一键推送草稿

python3 scripts/publish_lanlong.py \
  --title "文章标题" \
  --author "刘生" \
  --digest "文章摘要(≤54字节)" \
  --html /tmp/article.html \
  --cover /tmp/cover.png

# 快速重推
python3 scripts/publish_lanlong.py ... --skip-illustration --skip-cover

# 重推(先删旧草稿)
python3 scripts/publish_lanlong.py ... --delete-first <old_draft_id>

全流程 5 步:配图生成 → 配图上传 mmbiz → 注入 HTML → 封面上传 → 创建草稿

⚠️ WeChat API 关键教训

症状根因解决
errcode 40007 + invalid media_idthumb_media_id 来自 media/upload(临时素材)改用 material/add_material?type=image
草稿图片显示 400mmbiz URL 截断,缺 ?from=appmsg 后缀用完整 mmbiz URL(157-163字符)
errcode 40007 + media_id missingensure_ascii=True 导致中文被 \uXXXX 转义json.dumps(payload, ensure_ascii=False).encode("utf-8")

Step 9:交付格式

每次产出必须给:

# [文章标题]

**字数**:[N] 中文字符(含标点 [M])
**结构**:[5 节 + 1 反转 + 1 行动]
**自检**:✅ [通过项]

## 大纲
1. ...

**markdown 路径**:`/path/to/公众号-[标题].md`
**HTML 路径**:`/tmp/[标题].html`
**草稿 media_id**:(仅当 Step 8 执行后出现)

凭证配置

凭证在 references/config.md,不输出到对话。

已知限制

功能状态解决
execute_code sandbox 破坏含中文 URL 的 HTMLsandbox 替换含敏感词的整行字符串用 terminal Python 而非 execute_code
publish_lanlong.py 内置所有 WeChat API 细节—优先用脚本,不要手搓 inline Python
Skills guardadas