Audit · 2026-10-17

公众号为什么老是「炒剩饭」
全面审计与已上线的修法

两号 394 篇已发表逐条比对 · 排期公式实证 · 查重口径拆解 · 上线 6 项修复

一句话结论:不是「推」推错了,是三个结构缺陷在自动生产旧内容。 ① 每号的功能池只有 7 个,排期公式把整池铺满一周,第 8 天原样重来; ② 查重只查草稿箱——稿子一发布就离开草稿箱,查重当场失明,同一篇可以无限次重发; ③ 甜柿预售是 %7 死循环,10-19 起原样重开第二轮。 三处都已当场改掉并在服务器生效。

一、硬数据(接口逐条拉,不是估的)

账号已发表不同标题重复发布最严重的一条
智游大别山 153 篇146 个 7 次 《出发前一晚,我把想问的都问了个遍》发了 4 次
09-19 / 09-26 / 10-10 / 10-11
罗田旅游 241 篇234 个 7 次 《罗田哪里好玩?先看看刚回来的人怎么说》发了 3 次
09-17 / 10-03 / 10-11

其余重复:智游《甜柿预售常见问题》《别人刚玩完,照片还没修就发上来了》《整装出厂直接吊装落地》《直播带货不止会播》; 罗田《甜柿开预售了》《中国板栗之乡开竿》《请3休13》《罗田人自己的直播课》《被进士河治愈了我的班味》。 全部是标题逐字相同的同一篇。

另一层两号之间「同一篇改个地名」——8 对

  • 0.91 智游《武汉40度薄刀峰21度》 ≈ 罗田《武汉40度薄刀峰19度》
  • 0.85 智游《不想开车?在大别山包一辆带司机的车》 ≈ 罗田《不想开车?在罗田包一辆带司机的车》
  • 0.80 智游《在大别山,找一位懂光的旅拍师》 ≈ 罗田《在罗田,找一位懂光的旅拍师》
  • 甜柿预售 7 篇:10-13 罗田发一遍,10-14 智游原班再发一遍

这不是 bug,是「两号同源出稿」的必然结果。要不要继续镜像,需要你定(见第四节)。

二、四个根因(每个都能复现)

根因 1功能池只有 7 个 → 7 天一个完整循环,第 8 天从头再来

排期原本是「每号 7 个功能,按 (星期几 − 周号) % 7 取位」。取位结果永远落在 0~6,正好把 7 个功能铺满一周。

实测排期(改之前):10-11 周日 智游=ai → 10-20 周二 智游=ai;10-13 智游=youke → 10-21 智游=youke;罗田同样一一对应。

同一个功能配同一套模板,标题就是逐字相同的那一句 —— 所以「第 8 天」必然发出和上次一模一样的一篇。

池里其实有 20 个功能,两号合计只用了 14 个,6 个从来没排过(联系我们 / 团购套餐 / 文旅活动 / 甜柿预售 / 资讯快报 / 本周任务)。

根因 2查重只查草稿箱 —— 稿子一发布,查重就失明

建稿前的查重索引只拉了 draft/batchget(草稿箱)。可稿子一旦发布,就离开草稿箱、进了已发表库,从此不在查重范围里。

后果就是上面那条「4 次」「3 次」:每次重新生成的标题在草稿箱里查不到,于是畅通无阻地又建了一条。

实测:修复前查重索引里只有草稿箱条目;修复后智游 159 条、罗田 252 条(草稿箱 ∪ 已发表)。

根因 3甜柿预售是 %7 死循环

角度公式 (今天 − 10-12) 天数 % 7:10-12 首发 → 10-18 第七个角度 → 10-19 回到第一个角度,一模一样再走一遍,无限循环。

而且这 7 个角度 10-13 已在罗田发完、10-14 又在智游发完 —— 第一轮其实已经用尽。

根因 4「同一个主题换个说法」标题查重拦不住

比如《航拍大别山梯田:看秋收后的大地纹理》(10-05)和《航拍大别山梯田:初秋的纹理与热闹》(10-17),标题字面差得够远,相似度不到门槛,但读者看得出是同一篇。

这类只能靠「选题台账 + 冷期」(同一个景区/主题 N 天内不许再出),需要你定口径。

三、今天已上线(服务器已生效,实测过)

改了什么怎么做实测结果
查重口径
三处同源
从「只查草稿箱」改为 草稿箱 ∪ 已发表(拉近 200 篇), func_daily / server_push / _presale_series 全部改齐。 索引 159 / 252 条
《出发前一晚…》当场判重
相似度升级为硬拦 原来相似度 ≥0.90 只打一行提示、照建不误;现在 ≥0.92 直接中止建稿,0.85~0.92 告警。 不再「换个词就放过」
功能池扩容 每号 7 个 → 9 个,两号完全不重叠(合计 18 个),周期 7 天 → 9 天。 60 天模拟:两号同日撞车 0 次,9 天序列无重复
顺延去重 排期只给「起点功能」。命中已发标题就自动换下一个功能; 整池都发过 → 当天不出稿并告警(宁缺毋滥,绝不再拿旧内容凑数)。 10-18 起实测:连续顺延 6 个重复功能后落到未用功能
预售第二轮闸门 首轮 7 角度截止 10-18,之后默认拒发;确要重开必须显式加 --allow-repeat。 10-20 预演 → 拒绝出稿
顺手修好一个哑火功能 「最近热问」这个位从建库起就报错(_cta 少两个参数、_foot 函数不存在), 从来没出过一篇稿。已修好,单个功能出稿报错也不再拖垮整轮。 智游 6081 字 / 罗田 6179 字,首次出稿成功

回归:出稿器全量 560 组 · 不合格 0;副本关键分裂 0;去重口径已写进源码级守卫,改坏当场报错。

四、两号镜像:已按你选的 C 执行

你选了 C —— 跨号去重,一篇只发一个号。三条路原样留档:

  • A 镜像:两号都发,但标题和开头必须明显不同(原状态);
  • B 分工:智游发深度/攻略,罗田发本地/生活,同一主题只发一次;
  • C 去重(已执行):跨号也查重,一篇只发一个号,另一个号当天换选题。

C 的落地细节与实测见第六节。

五、一个必须先说的操作事实

10-15 到今天(10-17),两个号加起来「已发表 0 篇」。
草稿箱现在积压:罗田 8 个多图文(11 篇)、智游 3 个多图文(6 篇)。 系统只建稿、从不发布 —— 这 17 篇发不发、什么时候发,都在你手上。 所谓「新的一条没推」,一半是内容重复,一半是这批新稿压根还没发出去。

六、方案 C 已落地(三处,逐项实测)

落点改了什么实测
每日一工具
func_daily.py
新增 cross_titles():出稿前把另一号的「草稿箱 ∪ 已发表」一起当黑名单; 起手功能撞上就顺延,整池撞完当天不出稿 另一号历史可见:智游 245 条 / 罗田 152 条
日刊 / 网页版稿
server_push.py
新增 cross_dedup():另一号已有的同题从本批摘掉;整批都撞(镜像批次)时 按标题哈希定归属、对半分,谁都不落空 拿智游已发《出发前一晚…》打罗田 → 1.00 命中;随机新标题 → 无冲突
甜柿预售
_presale_series.py
同一角度只上一个号:单日智游、双日罗田;要镜像必须显式 --mirror 10-17 只排智游、10-18 只排罗田(已跑 dry 验证)
补充
功能冷却
同一功能 7 天内不重复用(热问 / 本周任务 / 资讯 / 游客圈 / 视频除外,它们内容天天变) 标题查重拦不住「同功能换个后缀」,冷却补住这个洞

回归:出稿器全量 560 组 · 不合格 0;方案 C 已写进源码守卫,改坏当场报错。

七、C 落地后暴露的真问题:选题库存见底

全站能推的功能一共 20 个,两个号已经全部用完了。
出稿器不是「会写」的,它是按固定功能出稿 —— 20 个功能对应 20 个固定标题。 查重一旦收紧,明天的结果就是:智游只剩「最近热问」、罗田只剩「我的」; 10-19 起两号会连续「当天不出稿」。这不是报错,是没有新选题可出了。

要恢复每天都有新内容,只有一条路:加新内容方向。先说清楚现状 —— 站上目前没有红叶页、也没有温泉页(实测 /hongye.html、/wenquan.html 均 404), 所以这几条都得先做页面、再出稿,不能拿旧稿改个字充数。

  • 红叶:大别山红叶期逐周播报(哪片先红、哪条线顺路)—— 当季,天然可更新;
  • 温泉:三里畈温泉 + 山里住宿的组合(两天一夜怎么排);
  • 古柿树:錾字石村 6000 余株百年古柿树,一棵树一个故事(真实素材已有);
  • 线路报价:罗田几条自驾线的真实里程、过路费、油费(已有 /routes/ 数据);
  • 红叶 / 甜柿 / 温泉 三选一决策:这个周末该看哪个(按花期与到货期);
  • 客人真问:从站上真实提问里挑一个,一天答一个(热问已有数据源)。

前两条是当季最急的,你说一声我就做页面、接进出稿链。

智游大别山 · 罗田旅游
公众号重复内容审计 · 2026-10-17