中国农村金融 · 电子刊微信推送排版
Overview
把《中国农村金融》电子刊文章(最新一期单篇)整理成公众号图文编辑器可直接粘贴
的内联样式 HTML。解决两件事:
- 抓取:用 Playwright 从电子刊 H5 提取文章结构化数据(标题/作者/期号/正文/图片)。
- 排版:把结构化数据渲染成符合公众号规范的微信推送 HTML(导语框、小标题、
引用、配图、页脚署名,农金绿品牌色)。
输出是一段纯内联样式 HTML,复制到公众号编辑器即可,无需第三方工具。
何时使用
- “把电子刊最新一期那篇文章做成微信推送”
- “把这篇《中国农村金融》文章排成公众号图文”
- “生成一篇农金文章的微信推送 HTML”
读者画像与撰稿红线(最高优先级)
本官微(「中国农村金融」/智汇农商)500万粉丝,主体是农商银行员工及其客户,绝大多数是普通老百姓(非行业领导、非金融专业读者)。所有选题与写法必须以此为准,优先级高于「传播度矩阵」「独家性五源」等技巧:
- 说人话、去官方腔:标题与开头从「具体的人/事/痛点」切入,不堆宏观数据、不端着。普通人看标题就决定看不看——「夏粮首破3000亿斤」这种宏观标题会直接劝退,要换成「手机点几下,200万当天到账」这种身边故事。
- 必须踩当下时间点:策展稿要有「现在为什么发这篇」的由头,不能拿几个月前的内容硬推。时效性(如当天发布会、当月政策)是普通读者共鸣的前提;2 月的内容放到 8 月推就显奇怪。
- 互动克制、合时宜:严肃/情感向内容(如养老防骗)末尾硬塞「投票选标题」很违和。
titlePoll慎用于此类文章,默认不挂。 - 视角是「农金人/农户身边」:写给普通客户和农商行员工看「和我有关」,不是给领导看的数据报告。
> 应用:上述原则已落实到 scraper/curation_v2/ 三篇策展稿的修订版(去官方腔标题、补 8 月时效由头、撤末端投票)。
分类输出:三模式(荐读 / 独家 / 综合)
根据稿件性质,推送分三种模式,由 JSON 的 type 字段控制(recommend / exclusive / curation;缺省按 curation,保证历史/已推送稿件兼容)。三种模式的标题格式、开头模块、末尾模块各不相同,已在 build_wechat_html.js 内统一实现,Agent 只需在 JSON 正确设置 type 与相应字段。
1. 荐读模式(recommend)—— 杂志刊发的领导署名文章
- 适用:董事长、理事长、局长等具体领导署名文章。
- 标题:
荐读 | 某单位某岗位某人:原标题,由leaderUnit+leaderPos+leaderName+magTitle(或title)自动拼接;JSON 也可直接用wechatTitle整体覆盖。 - 开头:「📖 荐读」标记 + 2–3 行推荐理由(
recommendText字段,编辑性导语,讲清“为什么该读这篇”、吸引读者继续读),不出现「热点关联 / 钩子 / 导读」。recommendText是正文之外的推荐语,不算改写原稿。 - 正文:逐字忠实杂志原文(
blocks用p/h2,按原文自然段落 / 小标题切分),仅对关键词、核心数据**加黑**做版面强调。严禁改写、缩写、增补、翻译式重写原文(读者要的是领导文章的本来面貌)。 - 末尾:用「🎓 农金课代表说」(
classRep字段,专业又活泼的点评 + 互动引导)代替「标题小调查」;classRep正文不要再带“🎓 农金课代表说:”前缀(标题已由渲染层统一输出,避免重复显示)。再接固定「延伸阅读·杂志精选」+「金融+APP 引流卡」+ 通用页脚。 - 示例字段:
json { "type": "recommend", "leaderUnit": "安徽铜陵农商银行", "leaderPos": "党委委员、副行长", "leaderName": "孙广辉", "magTitle": "全流程管理打通信贷营销“最后一公里”", "author": "孙广辉", "recommendText": "信贷营销,难就难在“最后一公里”……(2–3 行推荐理由)", "classRep": "孙行长这篇没有一句空话……(不要带“农金课代表说:”前缀)", "magazineRefs": [ { "title": "构建协同新生态 精准滴灌小微田", "issue": "2026年第13期", "page": 67 } ] }
2. 独家模式(exclusive)—— 杂志刊发的非领导署名 / 非署名文章
- 适用:杂志刊发、但非具体领导署名的文章(含栏目署名、专家署名、无署名)。
- 标题:
独家 | xxx(爆款新媒体转化);wechatTitle写去官方腔的吸睛标题,脚本自动加独家 |前缀(viralTitle亦可)。 - 开头:「🔒 独家钩子」(
hook的variant:"exclusive",蓝色,强调权威/一线真实,不接热点)+「📌 导读」(lead)+「💡 推荐理由」(recommendText,绿色块,与荐读同款但标签不同;编辑性导语,吸引阅读,不算“修改原稿”)。 - 正文:逐字忠实杂志原文(
blocks用p/h2,按原文自然段落 / 小标题切分),仅关键词、核心数据**加黑**。不再使用quote课代表笔记块(划重点改为文末「农金课代表说」统一承载)。严禁改写、缩写、增补原文。 - 例外:杂志原文的「专题版权页 / 极短编者按」(如仅 1–2 段导语、非完整文章)属非正文,可参照综合报道方式以真实信源为依据扩写为完整独家新媒体稿(须标注真实出处、不编造)。
- 末尾:用「🎓 农金课代表说」(
classRep,与荐读一致)点睛点评;再接固定「延伸阅读·杂志精选」+「金融+APP 引流卡」+ 通用页脚;不用「标题小调查」「资料来源」。 - 示例字段:
json { "type": "exclusive", "wechatTitle": "别再追大模型了!农商行用“算力池”把AI成本砍掉七成", "hook": { "variant": "exclusive", "text": "……" }, "lead": "……", "recommendText": "……(编辑性推荐理由,绿色块呈现)", "magazineRefs": [ { "title": "金融链上“科技芯” 科创沃土育新芽", "issue": "2026年第13期", "page": 53 } ] }
3. 综合模式(curation)—— 非杂志刊发的农金热点综合报道
- 适用:自选题、策展主流媒体(监管官网/人民网/新华社/财联社等)内容的热点综合报道。
- 标题:
wechatTitle(无前缀);source填「综合 XX 等公开报道整理」。 - 开头:「🔥 热点关联」(
hook的variant:"hotspot",橙色,接当下真实热点)+「📌 导读」(lead)。 - 正文:
blocks含主流媒体事实 + 本刊权威视角交叉 +quote(课代表笔记/防骗口诀)。 - 末尾:「📊 小调查|你更喜欢哪个标题?」(
titlePoll,3 个候选,轻量互动)+「📚 资料来源」(sources,纯文本标注出处)+ 固定「延伸阅读·杂志精选」+「金融+APP 引流卡」+ 通用页脚。 titlePoll与sources仅综合模式渲染;综合模式一般不用relatedArticles(改用sources指向原始权威出处)。
> 三模式均由同一 type 字段驱动,渲染差异见 build_wechat_html.js 的 build();草稿箱「标题栏」与正文 H1 的标题(含 荐读 | / 独家 | 前缀)由 titleFor() 统一生成,二者始终一致,不会出现在正文有前缀、标题栏没前缀的割裂。
工作流(核心:抓取 → 微信化改编 → 排版)
本 skill 不只是“原文搬运”,目标是产出符合微信传播规律的推送:吸引人的标题、
钩子导语、关键词加黑、文末附原文链接。其中抓取和排版由脚本完成,微信化
改编(编辑改写)由 Agent 在两者之间完成——脚本无法替你写吸睛标题,这一步交给大模型。
> 标题前缀「独家 | 」与「独家性」五源
> - 每篇微信标题统一加前缀 独家 |(如 独家 | 云南大山深处,4个人怎样守住一个民族的"钱袋子"?)。这是官微首发/精选的定位信号,不是字面"独家新闻"——杂志内容本无信息独家性,独家感靠下面五源"造"出来:
> 1. 视角独家:政策话语→生活场景("投资于人"翻译成"和你的养老/孩子/工作有关")。
> 2. 信息增量:补采访花絮、未刊金句、延展数据、当事人原声(当前最缺的一环)。
> 3. 形式独家:把数字/案例做成信息长图、数据卡、60 秒口播 Vlog(杂志是图文,新媒体能视频+互动)。
> 4. 首发独家:官微抢在纸刊前发"短视频精华版",纸刊发"深度长文版",形成独家节奏。
> 5. 原声独家:行长/特派员第一人称口播("我是农商行行长,进羊圈、泡热茶,才算真正放了贷"),最易被转发。
> - 爆款标题公式(去政策套话,用 痛点 / 反差 / 数字 / 对话体):
> - 反差式:2.7万金融特派员下沉:金融正从"锦上添花"变成"雪中送炭"
> - 场景式:云南大山深处,4个人怎样守住一个民族的"钱袋子"?
> - 第一人称:我是农商行行长,进羊圈、泡热茶,才算真正放了贷
> - 加前缀时若标题已含 独家 | 则不再重复添加。
电子刊由方正飞翔数字出版平台(founderfx.cn)托管,链接形如:
https://www.founderfx.cn/elecPublish/digitalArticleMobile?id=...&type=book&albumId=...
抓取脚本已内置 founderfx 适配器(content_type_0002=标题、0008=作者/栏目/小标题、
0004=导语、0007=正文段落),无需手工调选择器即可直接跑通。
步骤 1:抓取原文 → article.json
前提:从公众号“智汇农商→电子刊”打开目标文章,点右上角“…”复制链接。
# 脚本自带 playwright(scripts/node_modules),直接 node 运行,不用设 NODE_PATH
node scripts/fetch_ejournal.js --url "<电子刊文章链接>" -o article.json
# 若 H5 提示“请在微信中打开”,加 WECHAT_UA=1 重试
步骤 1b:抓取整期(枚举某一期全部文章,批量用)
若用户要“某期所有文章的微信版本”,先枚举该期文章清单,再对每篇走 步骤1→2→3。
- 拿到期本
bookId:从任意一篇该期文章 URL 的id=已知,或调
GET https://www.founderfx.cn/ebook/mobile/getOne?id=<bookId>(带 cookie),
其data.fileName含期号、data.catalog是该期目录 JSON。 - 解析
data.catalog(字符串,需 JSON.parse)→catalogList[].children[],
每项含label(标题)、xiaoYangId(文章 id)、page。这就是该期全部文章清单。
(2026年第13期 bookId=44361,共 59 篇;albumId=1320。)
如何定位目标期 bookId(若不知道):先枚举专辑全部期——调
GET https://www.founderfx.cn/ebook/getAlbumById?id=1320(专辑ID 1320 即
《中国农村金融》电子刊),返回 data.ebookList(每期一条,含 fileName 期号与
id=该期 bookId)。按 fileName 找目标期即可。注意:该专辑仅到 2026年第13期
(半月刊,更后期尚未上架电子刊),无 2026年第14/15期;要"第15期"请用 2025年第15期
(bookId=36504)等已发布各期。
3. 对每篇构造文章 URL:
https://www.founderfx.cn/elecPublish/digitalArticleMobile?id=<xiaoYangId>&type=book&from=content&albumId=<该期albumId>
(albumId 取该期任意已知文章 URL 的值即可,同期内通用)。
4. 循环调 fetch_ejournal.js --url ... 抓取每篇 → 走 步骤2 改编 → 步骤3 排版。
长文只需在代表性段落加 **加黑**,短讯(卷首/编者按)可整体加黑。
> 注意:founderfx 的 getEpaperByPage/getArticleListByEpaperId 等列表接口被鉴权
> 拦截(返回 status:-1),枚举某期文章请用 getOne 的 catalog 字段,这是已验证可行路径。
步骤 1c:按传播度矩阵选稿(爆款导向,推荐)
默认不要"按页码取前 10"——那是纸刊头条逻辑,不等于微信传播逻辑。改用传播度评分矩阵选稿:
- 六维打分(每篇 1–5 分):具体性 / 反差新知 / 情绪钩子 / 地域认同 / 实用价值 / 互动性。
- 板块优先级:红色金融、农信人·文化(情怀/基层动态)、资讯速览 → 高分(具体故事/数据/第一人称,最易传播);
合规/风控/数字化/内审、科创技术、农金传播经验(融媒/IP/内刊)→ 低分,通常不建议转(从业者向、缺大众钩子)。 - 剔除规则:栏目速览的"索引页"本身(若无独立故事)、与正文重复的卷首导语页、纯政策/理论评论(如"金融新逻辑""精准赋能"类,传播天花板低)。
- 爆款组合:3 篇权威调性(政策高度,给领导/行业看)+ 6–7 篇爆款潜力(具体故事/数据/地域/民生),按地域(粤/浙/皖/陕/滇/赣…)错峰发布,最大化"地域转发"。
- 一键初筛:用启发式脚本先出推荐清单,再由 Agent 人工定稿——
node scripts/select_by_spread.js --catalog <某期catalog.json> [--bodies <a_*.json目录>]
脚本输出评分表 +「★候选」id 列表(总分≥19)。Agent 据此挑 10 篇左右并做微信化改编。
> 选稿决策卡(速查)
> - 高分信号:标题/正文有数字、首笔/首次、全国、唯一;含红色/情怀/初心/守护/托举等情绪词;带省份城市名;涉就业/养老/健康/教育/农保/贷款等民生;第一人称"我/自述"。
> - 低分信号:标题含逻辑/思考/探讨/体系/管理/清单;栏目是合规/风控/数字化/内审/科创/融媒/IP;纯政策解读无具体人事。
步骤 1d:策展主流媒体内容(爆款策展模式,无原稿/不搬运自家旧稿时)
> 何时用本模式:用户要"策展爆款"而非"杂志稿被动转化";无专职记者、只能编辑挑拣搭配;
> 要把养老防骗、返乡创业、涉农信贷/农险、数字鸿沟适老化等全民关切话题做成破圈稿。
> 这是"先有热点/选题 → 再组织内容"的正确范式,优于"把杂志稿重排套热点"的被动转化。
核心原则(已验证的纠偏):
- 素材取自主流/监管信源,不拿自家官微旧稿当正文:用
金融监管总局官网、人民网、新华社、财联社、央视 等公开报道作为事实与数据来源
(真实、可溯源、经 WebSearch 核实)。禁止把《中国农村金融》官微几年前发的旧稿
当作策展正文素材——那属于"拿自家旧内容拼装",既无增量也不专业。 - 本刊的价值是"农金系统权威视角":把主流媒体的硬新闻翻译成农金人/农户语言,
并点出农商行、农信社、邮储、农发行、农行三农金融部在其中的位置("最后一公里"
"下沉网""绿色通道")。这就是农金刊抢不走的专业护城河。 - 双高选题评估(行业关注度 × 社会关注度):双高=破圈潜力(养老防骗、返乡创业第一笔钱、
涉农信贷/农险数据、老人数字鸿沟);一高=垂类(政策解读、行业数据);双低=避坑。 - 结构模板:
hook(热点/独家钩子) →lead(导读) →blocks(主流媒体事实 + 本刊视角
交叉) →quote(课代表笔记/防骗口诀) →sources(资料来源)。 - 合规边界:热点/事实必须真实可检索,绝不编造杂志未写的内容与数据;热点不与
社会负面/争议事件蹭;政策数字以发布当日最新为准,旧数据须核对仍有效。
sources 字段(策展稿专属,已加进 build_wechat_html.js):
- 数组,每项为字符串或
{title, source},渲染为文末「📚 资料来源」纯文本卡片
(不嵌外链,规避微信草稿 API 拒绝跨域<a>的限制)。 - 作用:规范标注策展素材的权威出处,既避抄袭灰区,又方便读者溯源。
- 例:
"sources": ["国家金融监督管理总局贵州监管局《养老领域非法集资风险提示》", "央视新闻(2026-08-03):湖南沅江种粮大户贷款案例"] - 策展稿的"推荐阅读"应指向原始权威出处,而非自家官微旧稿;故策展稿一般不用
relatedArticles(那是给"杂志稿转化"模式推官微旧文用的),改用sources。
文末固定引流模块(每篇自动带,已升级为默认行为,无需手写)
《中国农村金融》官微推送的文末标准结构由两段组成,渲染层保证每篇都带,
Agent 不必每篇手写;JSON 不提供相应字段时用内置默认值,提供了则以 JSON 为准(覆盖默认)。
-
「📕 延伸阅读·杂志精选」(
magazineRefs) —— 关联《中国农村金融》杂志某期真实文章,
给内容权威背书、把读者引流回杂志。文章标题/page从book44361.json等期刊目录取
(data.catalog解析后catalogList[].children[]含label(标题)、page、xiaoYangId)。
纯文本不嵌外链(微信草稿 API 拒跨域<a>),需可点击跳转请在编辑器手动插入杂志文章链接。
即使 JSON 未提供magazineRefs,也渲染「📕 延伸阅读·杂志精选」区段 + 一句通用引流语,
保证每篇末尾结构一致。
magazineRefs:[{ "title":"以人为本 作答长寿时代民生题", "issue":"2026年第13期", "page":21 }, ...]。 -
「📲 下载/订阅引流卡」(
magCallToAction) —— 在杂志精选下方再接一段金底卡片 + 配图,
承接官方"引导复制"的原文话术(含 加黑)与一张图(如"金融+APP"推广 banner)。
banner字段可填本地绝对路径(build 阶段自动 base64 内嵌到 HTML 预览;推送时
push_to_wechat.js用media/uploadimg上传到微信 CDN 替换为 mmbiz URL,完整传到草稿箱),
也可填 http(s) URL。若 JSON 完全不写magCallToAction,自动用内置默认值
(标题"📲 想读更多农金一线深度报道?来"金融+"" + 金融+APP 下载引导语 + skill 内置
assets/finance_plus_banner.jpg默认 banner),确保每篇都带引流卡。
可用于:APP 下载二维码、上级主管单位图标、杂志订阅通道、本刊合作活动图等等。
json "magCallToAction": { "title": "📲 想读更多农金一线深度报道?来“金融+”", "body": "想读更多农金一线深度报道与政策解读?欢迎订阅《中国农村金融》杂志,或“金融plus”APP“农村金融”频道。扫描下方二维码下载“金融plus”APP,可查阅《中国农村金融》电子刊↓↓↓", "banner": "C:/abs/path/finance_plus_banner.jpg" }
提醒:banner只支持一张图;若要更复杂(如多张/排版),放blocks末尾加type:"img"。
默认值定义在build_wechat_html.js的DEFAULT_CTA;resolveCTA(a)负责把 JSON 覆盖项
与默认值合并,push_to_wechat.js也用它兜底注入默认 banner 并上传。
策展稿 JSON 示例(字段同步骤 2,只是 title/blocks 不再来自 magazine 抓取,
而是由 Agent 据主流媒体素材 + 本刊视角撰写;source 字段填
"综合国家金融监督管理总局等公开报道整理"):
{
"title": "养老领域非法集资风险提示(策展稿)",
"wechatTitle": "爸妈的养老钱,正被人惦记:这4类骗局专坑老年人",
"titleOptions": ["…", "…", "…"],
"author": "中国农村金融",
"source": "综合国家金融监督管理总局等公开报道整理",
"column": "防非拒非·守护钱袋子",
"date": "2026-08-18",
"hook": { "variant": "hotspot", "text": "🔥 …(真实热点,WebSearch 核实)" },
"lead": "…(钩子导语,点出全民关切)",
"blocks": [
{ "type": "p", "text": "据国家金融监督管理总局披露……(主流媒体事实 + **加黑**)" },
{ "type": "h2", "text": "农金系统的位置:守住村口那道防线" },
{ "type": "p", "text": "农商行、农信社遍布县域乡镇……(本刊权威视角)" },
{ "type": "quote", "text": "课代表笔记/防骗口诀:三不三要……" }
],
"titlePoll": ["…", "…", "…"],
"sources": ["国家金融监督管理总局贵州监管局《养老领域非法集资风险提示》", "…"]
}
> 已产出的可参考成品:scraper/curation_v2/cur_a_pension_fraud.json(养老防骗)、
> cur_b_return_startup.json(返乡创业)、cur_c_rural_credit.json(涉农信贷/农险数据)。
步骤 2:微信化改编(Agent 编辑,关键)
读 article.json,做以下改写,另存为 push_draft.json(字段见
references/wechat_style_guide.md 第五节):
- 三个备选标题(必做)→ 写入
titleOptions数组(3 个不同风格,供用户挑选):
- 风格建议覆盖:① 悬念提问式 ② 数字/场景式 ③ 金句观点式。
- 例(本文):《金融活水精准滴灌!广东农信这样托起稳就业“压舱石”》/
《当“南粤家政”遇上2.7万金融特派员,就业这道题怎么解?》/
《2.7万金融特派员走村入户,广东农信把活水引向就业最前线》
- 从中挑最合适的一个写入wechatTitle(作公众号“标题”栏标题);原文保留在title,
渲染为“原标题”副标题。三个候选也会以发布不可见的 HTML 注释嵌进正文,
方便用户择一填到编辑器“标题”栏。
注意:推送到微信草稿箱时(forApi模式),正文不再重复渲染该标题为 H1,
因为微信已用title字段在标题栏单独展示,避免“大标题栏 + 正文又一段大标题”双显;
只有「粘贴预览 HTML」(非 API 模式)才在正文顶部保留 H1。 - 推荐阅读导语(必做,新媒体钩子)→ 写入
lead:写成「推荐阅读理由」风格——
1–3 句、与标题呼应、点出文章亮点(关键数据/场景用**加黑**强调),像在劝读者“为什么该读这篇”,
制造钩子、增强传播力。禁止照搬杂志原文摘要(那是summary,仅作兜底)。
若省略lead,脚本自动用原summary作导语(原文内容,偏呆板,不推荐)。 - 关键词加黑(版面设计)→ 在
blocks文本里用**关键词**包裹核心词(政策名、数据、产品名),
渲染时转成农金绿加粗<strong>。只做加黑/课代表笔记等版面处理,不改写正文。 - 课代表笔记(版面设计,推荐)→ 用新媒体语言把杂志硬核内容“翻译”成划重点的笔记,
写成{"type":"quote"}块(text字段),渲染为带「📒 课代表笔记 / 敲黑板·划重点」标签的
浅绿卡片(深入浅出、有趣有料,帮读者深度读懂杂志)。内容须忠于原文事实与数据,可换通俗表达、
可提炼亮点,但不得杜撰原文没有的结论或数字(原句提成也可,鼓励用新媒体语言重构表达)。
若文章本身有特别亮眼的原句,也可直接引用并附一句通俗解读。 - 原文链接 → 把电子刊文章链接写入
originalLink,渲染为文末“阅读原文 →”按钮。 - 文末自动推荐阅读(文末模块,默认开启)→ 写入
relatedArticles数组:
[{ "title": "官微已发布文章标题", "url": "https://mp.weixin.qq.com/s?__biz=...&mid=...&idx=1&sn=..." }, ...]
(3 篇,必须是「中国农村金融杂志社」官微已发布的真实文章,由 Agent 按本文主题挑选,
与本文主题相关)。脚本在「阅读原文」之后渲染「📚 推荐阅读」浅绿卡片(每篇一个 📖 标题文字卡片)。
本模块取代原「🗳 互动时刻·投票」模块(投票模块已按需求移除)。
> 推荐文章来源(必须是官微自己已发布的内容,禁用搜狗/外部索引链接):用本账号
> access_token 调 cgi-bin/material/batchget_material(type=news)拉取账号创建过的全部图文
> 素材(即官微已发布文章,返回真实 mp.weixin.qq.com 链接),按 url 去重后按主题匹配 3 篇写入
> relatedArticles。切勿用 weixin.sogou.com 等搜索重定向链接——那不算官微自身内容,且微信会拦截。
>
> ⚠️ 微信草稿箱 API 不能嵌可点击链接:draft/add/draft/update 会拒绝正文里指向
> mp.weixin.qq.com 或其他非白名单域名的 <a> 链接(errcode 45166 invalid content hint),
> 仅纯文本可过审。因此推荐阅读以纯文字卡片呈现官微文章标题(不嵌超链接);真实链接保留在
> relatedArticles[].url 中,若需可点击,请在 mp.weixin.qq.com 编辑器用「插入公众号文章」选择器
> 手动添加(API 无法嵌入跨文章链接)。
- 热点关联(开头借势,强推荐) → 在
blocks最前面插入一个{"type":"hot","text":"..."}块。
渲染为带「🔥 热点关联」标签的橙色框,紧跟「📌 导读」之后、正文之前。作用:
- 时效/首发独家 + 信息增量:用发布当日实时检索到的真实新闻热点把文章"接"进当下语境,
制造杂志没有的当下感与相关性(微信"搜一搜"、朋友圈转发都偏爱带热点的内容)。
- 合规边界(务必遵守):热点事实必须真实、公开、可检索(发布时用 WebSearch 核实),
绝不编造杂志未写的内容、不杜撰数据;只借势引出本刊观点,不蹭社会负面/争议事件;
热点须与本文主题真相关(如:助学贷款季↔文教金融、汛期农险理赔↔农保赔付、
乡村振兴通知/中央一号文件↔涉农金融、养老金新政↔养老金融)。
- 示例(文教金融篇接 2026 年生源地助学贷款集中办理季):
🔥 热点关联:眼下正值 2026年生源地信用助学贷款集中办理季——8月起多地启动,本专科生每年最高可贷2万元……当"助学贷款"成为千万家庭8月最关心的事,我们换个视角看:银行还能怎样把金融力量投到"教育"这件大事上?
- 配合lead(导语)同步点出热点数字,强化钩子。
> 推荐阅读做「热点聚合」(与热点关联配套):relatedArticles 不再只推随机官微旧文,
> 而是围绕同一热点挑 1 篇官微已发布强相关旧文 + 2 条「🔥 延伸热点」指引
> (纯文字卡片,标注"公众号内搜 XX 看最新",不编外部链接)。既借势、又导流站内,
> 同时规避草稿 API 不能嵌外链的限制。
> 内容保真原则:正文 blocks 必须忠实于 article.json 原文,只允许加 **加黑**、把原句提成
> quote(课代表笔记)块;不得改写、删减或重复段落。改标题/导语/课代表笔记时若动了正文需回原始数据复核。
>
> 改编示例见 references/wechat_demo.json(由真实抓取的《立足南粤守民生 金融聚力稳就业》
> 改编而来,含 3 个备选标题),可作为格式模板。
步骤 3:排版 → push.html
node scripts/build_wechat_html.js push_draft.json -o push.html
# 或 JSON 经 stdin 传入: cat push_draft.json | node scripts/build_wechat_html.js -o push.html
步骤 4:推送到公众号草稿箱(推荐,免手动粘贴)
用微信官方草稿箱 API(cgi-bin/draft/add)把文章直接推到你公众号的「草稿箱」,
你进后台审核后一键群发。不自动发布,安全可控;也无需扫码登录。
# 1) 先 dry-run 校验拼接结果(不联网、不需凭证)
node scripts/push_to_wechat.js push_draft.json --dry
# 2) 配置凭证后推送(凭证见下方“凭证配置”)
WX_APPID=wxXXXX WX_APPSECRET=xxxx node scripts/push_to_wechat.js push_draft.json
# 或用本地密钥文件: node scripts/push_to_wechat.js push_draft.json --config ./wechat_secret.json
# 3) 就地更新已存在的草稿(按标题归并,每标题仅留 1 份并覆盖为最新内容;
# 自动删除重复副本与“未命名文章”垃圾草稿;绝不删除标题不匹配的用户自有草稿)
node scripts/push_to_wechat.js push_draft_*.json --config ./wechat_secret.json --cover-file ./cover.jpg --update
推送脚本会:① 取 access_token(缓存 ./.wx_token.json,2 小时);② 把正文里的外链图
通过 media/uploadimg 上传到微信 CDN 再内嵌(微信拒绝外部图);③ 上传封面得到
thumb_media_id(必填);④ cgi-bin/draft/add 写入草稿箱。
> 封面必填:在 push_draft.json 加 "cover": "<封面图URL>"(脚本自动上传),
> 或用 --thumb-media-id <已上传的media_id> 指定。无封面会报错退出。
> 摘要(digest)取自 lead/summary,自动截断到 120 字。
> ⚠️ 已知限制:「原创」标签无法用接口打。微信草稿箱 API(draft/add、freepublish)
> 均无原创声明 / 来源声明 / 合集参数(微信官方社区明确“不支持”)。要加「原创」标签,
> 只能在 mp.weixin.qq.com 后台:草稿箱 → 打开该草稿 → 编辑页勾选「声明原创」→ 保存。
> 注意:原创声明需账号已开通原创保护,且内容须通过原创检测;本批内容系杂志内容改编,
> 声明原创可能不通过或被判定非原创,请按平台规则谨慎勾选。
凭证配置(推送草稿箱用)
- 登录 mp.weixin.qq.com → 「设置与开发 → 基本配置」,记下 AppID 和 AppSecret
(AppSecret 仅显示一次,妥善保存)。 - 确认账号为已认证的服务号/订阅号(个人未认证订阅号无高级接口,用不了草稿 API)。
- 凭证不要写进仓库/脚本。推荐:环境变量
WX_APPID/WX_APPSECRET,或放一个
本地wechat_secret.json(已 gitignore 思路,切勿提交)。
{ "appid": "wx...", "secret": "..." }
备选:推送到 135 编辑器(半自动,免凭证)
若没有公众号 AppSecret(或个人未认证订阅号无草稿 API),可改走 135 编辑器:
编辑内容不需要登录,保存到你自己的 135 账号才需登录。脚本用可见的持久浏览器
打开 135 编辑页,在页内直接调 UEditor ue.setContent(html) 注入排版好的内容,
并保持窗口打开,由你登录、检查、保存。
# 需要本地图形界面;首次运行会在打开的浏览器里登录一次 135(之后因持久化自动保持)
node scripts/push_to_135.js push_draft.json
# 也可直接喂已生成的 HTML: node scripts/push_to_135.js push.html
脚本会:① 打开 beautify_editor.html ② 注入内容 ③ 打印“请登录 135 账号并保存,
完成后按 Enter 关闭”。你在浏览器里登录 → 检查排版 → 点“保存/同步到我的文章”即可。
注入失败时会回退为“聚焦编辑区 + 粘贴剪贴板 HTML”。
> 注:这是半自动方案,依赖你本地浏览器与 135 登录态;比草稿箱 API 更轻,但每次
> 仍需你手动确认保存。持久化目录为 ./.135_profile(勿提交)。
方式 B:自动定位“最新一期·最新文章”(可选)
设置 EJOURNAL_HOME 为电子刊书架地址,并按 founderfx 前端微调
scripts/fetch_ejournal.js 顶部的 NAV 选择器后使用:
EJOURNAL_HOME="<电子刊书架URL>" node scripts/fetch_ejournal.js --latest -o article.json
(改编步骤 2 照常由 Agent 完成。)
方式 C:手动输入(无链接时)
把文章整理成 push_draft.json(含 wechatTitle/lead/**加黑**/originalLink),
直接跑排版:node scripts/build_wechat_html.js push_draft.json -o push.html。
发布前检查
- 把
push.html内容全选复制,粘贴进公众号图文编辑器正文。 - “阅读原文”按钮已内嵌文中;同时在编辑器“阅读原文”处也填一次原文链接更稳妥。
- 文中外链图片可能变灰/失效,发布前先将图片上传到公众号素材库并替换
src。 - 封面图在编辑器“封面”处单独上传(建议 900×383 或 383×383),不在正文 HTML 内。
资源
scripts/fetch_ejournal.js— Playwright 抓取脚本(内置 founderfx 适配器 + 通用兜底,导航选择器可配)。scripts/build_wechat_html.js— 结构化文章 JSON → 公众号内联样式 HTML(支持 wechatTitle/导语/关键词加黑/hot热点关联块/hook开场钩子块/课代表笔记/阅读原文/sources资料来源/magazineRefs延伸阅读·杂志精选/magCallToAction下载订阅引流卡(可携banner);--api模式去外层包裹,供草稿 API 用)。scripts/push_to_wechat.js— 把push_draft.json通过微信草稿箱 API 推送到公众号草稿箱(--dry校验、--config密钥文件、--thumb-media-id指定封面、--cover-file上传本地封面并复用、--update就地更新同标题旧草稿并清理重复/垃圾副本)。scripts/select_by_spread.js— 按传播度评分矩阵(6 维)对某期目录启发式选稿,输出评分表 +「★候选」id 列表,供 Agent 定稿(用法见步骤 1c)。scripts/push_to_135.js— 半自动把push_draft.json/push.html注入 135 编辑器编辑区(可见持久浏览器,登录后保存;免 AppSecret)。references/wechat_style_guide.md— 公众号排版硬约束、品牌色、JSON 字段、founderfx 块结构。references/wechat_demo.json— 微信化改编格式示例(含 wechatTitle/lead/加黑/originalLink)。references/wechat_style_guide.md— 公众号排版硬约束、品牌色、JSON 字段说明、取链接方法。
关键约束(务必遵守)
- 公众号只保留内联样式,剥离
<style>/<head>/class/JS/外链 CSS(详见 reference)。 - 改样式只动
build_wechat_html.js顶部的BRAND常量,不要引入 class 或外链。 - 抓取脚本按 founderfx 的
content_type_*块结构解析;若电子刊换平台或改版,
在fetch_ejournal.js的PLATFORMS/适配器处补充即可。 -
封面图(头图)不再由 AI 自动生成。沿用文章自带封面(抓取脚本拿到的正文首图 /
用户指定的图片),写入push_draft.json的cover字段即可。切勿调用 ImageGen 或
任何图像生成工具为推送文章生成头图。若用户要求换头图,请使用用户提供的图片,
不要自行生成替代图。 -
作者字段(
author)限 8 个汉字以内:微信草稿 API 硬性限制(errcode 45110 author size out of limit),
"中国农村金融杂志社" 是 9 字会直接报错。统一用 "中国农村金融"(6 字)作 author。 -
引号规范(排版硬约束,禁止犯基础错误):正文里标注术语、专有名词、引用语时,
一律使用中文双引号" ",禁止混用中文单引号' '或直角引号『』。
中文双引号区分左右("左 /"右),左右必须配对(如"三不三要"、"金融+")。
代码/JSON 字符串定界符用 ASCII 双引号"不受影响;但内容文本中的引号必须是中文双引号,
出现' '/『』一律视为排版错误,发布前需全量替换为" "。
运行模式与云端部署(断网 / 关机自动工作须知)
本 skill 的运行强依赖本地文件环境。“切到云端就自动跑”并不会自动成立—— deploy 前务必看清下面的模式差异与本地依赖约束,否则流水线在云端会因读不到文件而失败。
两种运行模式
- 云端沙箱模式(用于断网 / 关机场景):任务在服务端(腾讯云沙箱)独立执行,电脑无需开机或在线。启用方式二选一:
- 微信小程序搜「WorkBuddy」→ 对话界面顶部切到「云上」即启用;
- 桌面端:右上角头像 → 设置 →「CloudAgent / 云端智能体」→「立即开通」(需微信扫码授权腾讯云,通常含免费试用额度)。
云端模式自带定时任务:进“自动化”模块 → 添加定时任务 → 设内容 / 时间 / 重复周期 → 配结果推送(微信 / 邮件 / 企微),到点在服务端执行,结果自动推回小程序。 - 本机远程模式(Claw):手机 / 小程序发指令,由已开机、联网、运行着 WorkBuddy 桌面端的电脑执行。需桌面端 右上角 →「Claw 设置」绑定微信 / 企微 / QQ / 飞书。电脑关机或断网则任务无法跑。
⚠️ 本工作流的关键约束:强依赖本地文件
「抓取 → 改编 → 排版 → 推草稿箱」全程依赖本地磁盘文件,而云端沙箱模式读不到本地 PC 文件(仅认微信 / 云端文件,“云端处理、不留本地”):
scraper/下抓取到的电子刊正文 JSON(如issue13/a_*.json、category_v1/*.json);- skill 脚本
scripts/fetch_ejournal.js/build_wechat_html.js/push_to_wechat.js; - 公众号凭证
scraper/wechat_secret.json(AppID / AppSecret)。
结论:纯云端沙箱模式不能直接跑这套微信推送流水线——拿不到上面的脚本、正文与凭证。因此“切云端”不等于“这套推送自动跑”,必须先做云原生化迁移(见下)。
让“断网 / 关机也能自动推送”的两条路
- 方案 A(保留本地执行,靠常开):不切云端,让电脑保持开机、桌面端常驻,由 Agent 用
automation_update建一个每日 / 定期定时任务本地自动跑。代价:执行机必须一直在线(关机即停)。 - 方案 B(真·云端 7×24):把流水线“云原生化”——将脚本、凭证、已抓取正文迁移到云端存储 / 腾讯文档,并把推送改造为可在云端智能体里执行的形态,再在云端建定时任务。代价:需做一次迁移改造。
> 落地建议:先用方案 A 验证定时任务的编排与时效;确有“人不在、电脑要关”的刚需,再投入方案 B 的云原生化迁移。当前 session 已产出的 6 篇稿件(scraper/category_v1/*.json + *.html)与全部脚本(~/.workbuddy/skills/zgncjr-wechat-push/scripts/)均在本地,迁移时整目录带走即可。