这一篇按「生产一篇文章的自然流程」讲透:素材从哪来 → 文章怎么写 → 怎么去掉 AI 味 → 套什么皮肤视觉 → 标题怎么定。流程跑通后,每天一篇可以全自动。
好内容是第一步。素材源按优先级排:
采集的三个要点:
选好素材后,写作要有稳定的结构和鲜明的人设。
通用结构(科普类):
写作人设:固定一个"说话的人"——比如「某个生活化科普号」的定位就是生活化、通俗、不端着。人设稳定,读者才有粘性。
AI 生成的内容有固定腔调,读者一眼能闻出来。这是最容易被忽略、也最影响观感的一环。
必须禁用的 AI 腔模板词(黑名单,写进质检规则):
先说结论 / 总而言之 / 综上所述 / 值得一提 / 值得一提的是 不仅...而且... / 让我们来 / 在这个...的时代 / 赋能 / 解锁 总的来说 / 需要注意的是 / 然而值得注意的是
去 AI 味的实操方法:
同一篇文章,排版好坏决定读者看不看得下去。给公众号定一套皮肤(皮肤 = 一套排版风格),全站统一。
皮肤要素:
实现方式:把皮肤写成程序里的排版函数(全行内样式),文章内容自动套用——而不是每篇手动排。这样皮肤是稳定可复用的,换主题 = 换一套皮肤。
# 伪代码:皮肤路由 def create_draft(article): if article["skin"] == "baike_magazine": html = beautify_baike_magazine(article) # 博物风:墨绿+暖金 elif article["skin"] == "ai_digest": html = beautify_ai_digest(article) # 深空靛蓝+信号青 else: html = beautify_minimal(article) # 日系极简兜底
标题决定打开率。写好正文后,标题单独下功夫。
好标题的三要素:
标题生成策略(程序化):
短标题(≤16字) → LLM 生成口号(完整句) → 取第一个标点前的完整分句 → 仍失败 → 前 12 字保底(绝不用 [:16] 硬切,会切出半句话)
title[:16] 硬截断会切出"狗摇尾巴不只是开心?原来尾巴"这种半截话。宁可要短句,不要半句。封面字 = 好标题:封面大图上的字,直接用标题的核心句(疑问句最佳),一句话足以。别放长句。
以上五环全部程序化后,整条流水线跑起来:
# 每日自动
1. 采集脚本 07:30 拉最新素材入库
2. 选题器选 1-2 条(常青/新知轮换)
3. 写稿 LLM 按结构 + 人设成文(注入新素材引用)
4. 质检硬闸:结构 / 字数 / HTML 白名单 / AI 腔黑名单
→ 不过 → 带原因全文重写一次
5. 配图:封面(画字)+ 正文插图(智能路由)
6. 皮肤排版 → 生成公众号 HTML
7. 连微信 API 自动建草稿(见下)
8. 封面视觉质检 → 通过才可发布
人要做的事只剩最后一环:打开草稿箱人工过目,确认无误再发布。
排版完的 HTML 不会自己进公众号后台——要调微信公众平台 API把它建成「草稿」,你最后只需在草稿箱点发布。三步:
① 拿 Access Token(公众号已认证,有 AppID/AppSecret):
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的AppID&secret=你的AppSecret # 返回 {"access_token": "xxx", "expires_in": 7200} → token 2小时有效, 缓存复用
② 把文章 HTML 建成草稿(draft/add):
POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=TOKEN # body: {"articles": [{ "title": "标题", "author": "作者名", "digest": "摘要", "content": "排版后的文章HTML", # 行内样式, 微信编辑器支持 "thumb_media_id": "封面图media_id", # 先传图片素材拿到 "need_open_comment": 1, "only_fans_can_comment": 0 }]} # 返回 {"media_id": "xxx"} → 这就是草稿ID, 存起来
json.dumps(body, ensure_ascii=False):默认 True 会把中文变成 \uXXXX 字面串,标题正文全乱码r.json():微信响应头常不带 charset,requests 按 latin1 猜编码,中文变 mojibake——用 json.loads(r.content.decode('utf-8'))③ 封面图:先调 /cgi-bin/material/add_material?type=image 上传封面图拿 media_id,再填进 draft/add 的 thumb_media_id。
发布:草稿建好后,人工到公众号后台「草稿箱」过目 → 点发布。想全自动直接发,调 /cgi-bin/freepublish/submit(提交发布,仍建议人工确认后再发,避免翻车)。