v40 → v20.1 + v20.2 三层强化 —— 0916 用户两条反馈沉淀:
- 「新闻事实中间那条应该是专业术语的注释」 → v20.1 内容铁律:term_note 必须是
X=通俗解释格式(含 =/是/指),禁退化为补充短评 - 「为啥有的专业术语注释没显示全」 → v20.2 渲染铁律:禁
"".join(note_lines)截断,改为逐行迭代 + 动态 NOTE_BLOCK_H
| 文件 | 类型 | 说明 |
|---|---|---|
SKILL.md §6.8.1 |
新增 | v20.1 term_note 内容铁律 + 7 类模板 + check_32 |
SKILL.md §6.8.2 |
新增 | v20.2 多行完整渲染 + draw_row 标准实现 + check_31 |
generate.py |
升级 | _unpack(item) helper 兼容 4 元组 + NOTE_LINE_H_DYN 动态块高 + for line in note_lines 多行渲染 |
assets/v30_pitfall_check.py |
升级 | check_31 (v20.2 渲染) + check_32 (v20.1 内容) + c.skip → c.pass_ 全替换 |
v20.1 vs v20.2 关系:
| 层 | 约束 | 落地 |
|---|---|---|
| v20 | 视觉强化(底色块+色条+字体) | generate.py · draw_row() |
| v20.1 | 内容约束(必须是术语注解非短评) | NEWS 5 元组第 5 列 term_note |
| v20.2 | 渲染约束(多行完整 + 动态块高) | generate.py · 注解块渲染逻辑 |
v20.2 关键 bug(0916 用户反馈「有的术语注释没显示全」根因):
# 旧版 BUG:合并单行测宽 → 超宽 → 截断+省略号
note_lines = wrap_text(note_text, ...) # ① 拆好行
full_note = "".join(note_lines) # ② 抹掉换行
if bbox.width > max_note_w: # ③ 触发截断
full_note = full_note[:cut] + "…"修复 = 禁 join + 逐行渲染 + NOTE_BLOCK_H 动态扩展(单行 60px / 双行 88px / 三行 116px 自动撑高)。
v20.1 7 类模板:① 财经术语 ② 政策动作 ③ 行业概念 ④ 监管动作 ⑤ 国际机构 ⑥ 经济指标 ⑦ 产业里程碑。
v30_pitfall_check 验证:32/32 全过(含 check_31 + check_32 两条新检查)。
每日 7 条新闻速览 + 干货认知包,纯 PIL 离线生成,零外部依赖。
小红书「3 页图文笔记」自动化生成器:
| 页面 | 用途 | 视觉 |
|---|---|---|
| page1 (v1 米黄三列 / v2 砂糖橘3:1) | 当日 4 条新闻速览 | 信息密度拉满 · 表格化 |
| page2 (v1 米黄三列 / v2 砂糖橘3:1) | 当日 3 条新闻速览 | 同上 |
| page3 (认知加油包) | 7 条选 1 引申的干货 | 文字主导 · 纸感底纹 |
适用场景:金融/经济产业/科技类账号每日图文。设计目标 = 提升「收藏率」(page3 干货)+ 维持「完读率」(page1+page2 信息密度)。
# 1. 准备当天的 7 条新闻(覆盖 ≥5 类: 国际/社会/科技人文/民生/经济产业)
# 2. 编辑 templates 顶部 NEWS 数据
# 3. 跑
python generate.py # 出 page1.png + page2.png (v1 米黄三列)
python generate_v2.py # 出 page1_v2.png + page2_v2.png (v2 砂糖橘3:1)
python generate_page3.py # 出 page3.png (认知加油包)输出文件:page1.png / page2.png / page1_v2.png / page2_v2.png / page3.png,每个 1080×1440。
- v1 / v2:纯模板,复制到任意目录就能跑(
BASE_DIR = __file__通用路径)。改顶部NEWS列表即可。 - page3:含更多内容变量(CHAIN / SIGNAL_CARDS / TOOL_BOX / DATA_SOURCES / FOOTER),推荐
cp到项目目录后改顶部内容常量 +BASE_DIR为目标路径。
| 红线 | 含义 |
|---|---|
| 间接热点切入 | 7 条覆盖 ≥5 类(国际/社会/科技人文/民生/经济产业)。禁直接搜财经、禁 7 条全同质化 |
| 去领导人 | 不点中外元首/央行行长/美联储主席姓名。机构名保留 |
| 去国内军事 | 不写国内军事动作(演训/演习/国防部/战区) |
| 去个股 | page3 不出现具体上市公司/未上市公司全称,也不做公司评级/排序。改用行业结构数据(份额演变/集中度趋势/产业里程碑)。page1/page2 新闻可出现公司名,但避免「推荐/目标价」类表述 |
| 去政策模块 | 不出现政策类内容(含「政策落地」「新政施行」「政策工具」/具体补贴/减免/规划/方案等表述)。允许用市场反应/资金流向/价格异动间接呈现宏观调控效果。page3 §03 用通用方法论(波特五力/生命周期/杜邦三因子)替代政策工具箱 |
| # | 句式 | 用法 |
|---|---|---|
| ① | 转折 | A 主张 → B 打脸 |
| ② | 判断 | 数字+结论(PMI→衰退) |
| ③ | 直陈 | 事实直说(大模型发布) |
| ④ | 场景 | 标志性事件(15年来首次) |
| ⑤ | 趋势 | 数字持续变化(单日涨3%) |
| ⑥ | 结论 | 场景落地结论(订单翻倍/客户破万) |
| ⑦ | 预测 | 趋势延伸意义(出海抢单/卡位窗口) |
字数预算:新闻事实 ≤42 字 · 信号解读 ≤10 字
从 7 条里挑 1 条引申做 page3,提升收藏率:
| 维度 | 适用场景 | 例 |
|---|---|---|
| 产业链梳理 | 涉及产品/行业结构 | 存储芯片新闻 → 5 环节产业链(设备/材料/设计/制造/封测) |
| 关键指标解读 | 涉及经济数据 | PMI 新闻 → 制造业 vs 服务业 PMI 怎么看 |
| 历史对照 | 涉及标志性事件 | 历史 IPO → 历轮 IPO 估值与回报对照 |
| 产业地图 | 涉及区域/集群 | 大湾区外贸 → 9 市外贸排名与产业分工 |
| 工具拆解 | 涉及通用方法论 | 周期判断 → 波特五力/生命周期/杜邦三因子 |
3 段标准结构(工具表型·不点名公司·收藏向):
- 01 产业链/逻辑链 — 5 个环节,文字行 + 小编号
- 02 关键数字怎么读 — 5 张速查卡,每卡含「指标名 + 阈值 + 标准值 + 作用」
- 03 分析方法速查 — 3 件套速查,每条含「工具名 + 全称注解 + 适用场景 + 使用步骤 + 经典案例」
收藏率取决于「下次用得上」的概率:
- ❌ 回顾型(历程/时间线/集中度数字)— 看一眼就忘
- ✅ 工具表型(数字标尺 + 方法论速查)— 跨主题可复用,看到任何相关新闻都能直接套
02 速查卡示例(以存储芯片新闻引申):
- 市场集中度 · TOP3 > 70% · 标准值:国际警戒线 75% · 测供应链垄断程度
- 国产化率 · 突破 10% · 标准值:替代拐点门槛 · 测国产替代进度
- 量产良率 · < 80% · 标准值:盈利线 85% · 测产能爬坡成熟度
- 资本开支增速 · 同比 > 30% · 标准值:周期顶 50% · 测行业扩产热度
- 价格走势 · 连降 3 个月 · 标准值:反转信号 · 测库存出清/反弹时机
03 分析方法示例(通用方法论·不涉及政策):
- 波特五力「Porter's Five Forces」· 适用:判断行业赚钱难度 · 步骤:画 5 维度打分 · 案例:智能手机 5 维评分
- 生命周期「Industry Life Cycle」· 适用:判断赛道所处阶段 · 步骤:导入→成长→成熟→衰退 · 案例:新能源车卡成长后期
- 杜邦三因子「DuPont Identity」· 适用:拆解 ROE 来源 · 步骤:净利 × 周转 × 杠杆 · 案例:ROE 20% 的拆解
更多细节(含版式坐标、设计决策、CHANGELOG)见 SKILL.md。
furen-xinxicha-skill/
├── README.md ← 本文档
├── SKILL.md ← 详细设计文档(含已知坑)
├── generate.py ← v1 米黄三列表格(page1 4条 + page2 3条)
├── generate_v2.py ← v2 砂糖橘 3:1 横排(同上)
├── generate_page3.py ← page3 认知加油包(4段编号·文字主导·纸感)
└── assets/ ← 预览图
- Python 3.8+
- Pillow
pip install Pillow字体:脚本默认使用 Windows 系统字体(simfang.ttf / simhei.ttf / simsun.ttc)。macOS/Linux 用户编辑 FONT_DIR 指向本地中文字体(如 /System/Library/Fonts/PingFang.ttc 或 /usr/share/fonts/truetype/wqy/wqy-microhei.ttc)。
| v1 米黄三列 | v2 砂糖橘 3:1 | |
|---|---|---|
| 适用 | 偏信息密度、表格感 | 偏阅读体验、横排 |
| 配色 | #FBF6E4 + #F08A24 | #FDEBD0 + #FF8232 |
| 字号 | 固定 26pt | 动态铺满(4条页为基准统一) |
- 文字占画面 ~70%
- 彩色筹码 ≤40px(编号 22px 圆、tier 18px 圆)
- 数字作 hero(42pt,如 25%/22%/14%)
- 段编号 01-04 红字强化目录感
- 撕纸细线分隔(sw=2,轻盈)
- 可选 AI 骨架底纹(
PAPER_BG配置路径)
NEWS = [
# ① 国际 · 美伊霍尔木兹 — 转折(美方主张→伊朗打脸)
(1, "美方称已完全控制霍尔木兹海峡,伊朗反驳称海峡仍关闭,不接受条件不会重开。",
"央视新闻 2026-08-13",
"说要开也开不了"),
...
]每条 = (序号, 新闻事实, 来源, 信号解读)。序号 1-7,每条用不同句式(见上 7 种)。
按合规红线 7 类覆盖是「间接热点」要求,避免直接搜财经。建议配比:
| 类 | 占比 | 内容 |
|---|---|---|
| 国际 | 1-2 条 | 大国博弈 / 能源 / 汇率 |
| 社会 | 1 条 | 民生事件 / 行业现象 |
| 科技人文 | 1-2 条 | 大模型 / 机器人 / 文化 |
| 民生 | 1 条 | 消费 / 教育 / 就业 |
| 经济产业 | 1-2 条 | 行业格局 / 资本流向(机构名保留,不点决策者姓名) |
禁止直接搜财经:财经搜索常带政策解读,规避;改用「产业」「格局」「资本流向」切入。
| 坑 | 应对 |
|---|---|
simsunb.ttf 损坏(豆腐字) |
标题降级 simfang.ttf + stroke=2 |
msyhbd.ttf 不存在 |
应改为 msyhbd.ttc |
| page1 4 条可能溢出 | v1 紧凑参数·v2 动态字号 |
| v2 表头仿宋小字号+描边=黑疙瘩 | 表头去描边,只标题保留 stroke |
| v2 两页字号不一致 | 统一用 page1(4条)基准 |
| v2 末行盖页码 | PAGE_H=80 留底部安全区 |
| page3 文字溢底 | BOTTOM 字号 30pt + 红条 y=1396 |
| page3 AI 骨架做底抢戏 | 用 make_paper_bg 重模糊 8 + 0.88 混合奶白 |
- 1080×1440 PNG
- page1: 4 条新闻,每条含序号+事实+来源+信号
- page2: 3 条新闻,同上
- page3: 4 段(产业链/横评/梯队/数据源),文字主导
- 文件大小:v1+v2 各 ≤220KB · page3 ≤250KB
v39 升级为 v40 术语注解加粗版 —— page1/page2 每条新闻下方加 ≤25 字口语注解("术语=通俗解释"格式),用 4 重视觉锤让它与白卡片分层、看得清。
| 文件 | 类型 | 说明 |
|---|---|---|
SKILL.md 红线表 |
新增 4 行 | ㉜ 术语注解加粗铁律 / ㉝ v30 5 元组解析 / ㉞ 数据真伪报告 v40 升级 / ㉟ page3 主题去油气连续性 |
SKILL.md 字体参数表 |
新增 4 行 | FONT_HEI_TERM 22pt / TERM_LINE_H=30 / TERM_BG=(252,240,218) / TERM_BAR=(220,120,40) |
SKILL.md 调参速查表 |
新增 3 行 | 术语注解字太小太浅 / 5 元组 NEWS 解析失败 / page3 主题连续 ≥ 2 天同类 |
SKILL.md 迭代历史表 |
新增 v40 行 | 0913 术语注解加粗版完整说明 |
generate.py |
升级 | FONT_HEI_TERM + TERM_TEXT/TERM_TEXT_STROKE/TERM_BG/TERM_BAR + draw_row 注解块完整重写(浅杏底色块 + 4px 左侧橙条 + 22pt 深橙红描边小字) |
assets/v30_pitfall_check.py |
升级 | parse_news_items 升 5 元组 (idx, news, source, signal, term_note) 兼容旧 4 元组,regex 加 (?:\s*,\s*["\'](.+?)["\'])? 可选第 5 字段 |
v40 vs v39 核心差异:
| 维度 | v39(已弃·注解太浅) | v40(当前生效·注解加粗) |
|---|---|---|
| 注解字号 | 20pt | 22pt(粗·可读) |
| 注解颜色 | 浅橙 (210,130,40) | 深橙红 (170,70,15) + 1px 浅杏描边 (255,240,215) |
| 注解底色 | 细线分隔 | 浅杏底色块 (252,240,218) 圆角 10 + 左侧 4px 橙条 (220,120,40) |
| 数据结构 | 4 元组 | 5 元组 (idx, news, source, signal, term_note) · 兼容旧 4 元组 |
| NEWS 解析 | 旧 regex 收 4 字段 | regex 加 (?:\s*,\s*["\'](.+?)["\'])? 可选第 5 字段 |
4 重视觉锤为什么缺一不可(v40 实战踩坑):
- 0913 v19 用户当场打回"字太小太浅看不见"
- 22pt 单改字号不够 → 颜色必须深到 (170,70,15)
- 深橙字在白卡片上仍然偏淡 → 必须加描边 + 底色块双重对比
- 底色块 + 左侧色条 → 与白卡形成"独立注解区"视觉分层
为什么 v30 regex 必须同步升级:
- v19 加 term_note 时只改了
draw_row,没改v30_pitfall_check.py的parse_news_items - 旧 regex 收 4 字段 → term_note 被吞进 signal → 信号卡变成"信号卡正文 + term_note" → 含空格的"造芯片/导弹必需金属"被 regex 误判为 check_08 失败
- 铁律:升数据结构必同步升级 regex 解析(红线 ㉝)
v34 升级为 v36/v37 视觉清晰度版 —— page3 长段叙事字色加深、字体升级黑体、HERO 主标题同色描边加粗,全部达 WCAG AAA 级对比度(6.2:1+)。
| 文件 | 类型 | 说明 |
|---|---|---|
SKILL.md §6.7 |
新增 | v36 字清晰度 3 件套(A 颜色 / B 字体 / C 描边)+ v37 HERO D+A 方案 |
generate_page3.py(根目录) |
升级 | 颜色加深(GRAY 160→70 2.1→6.2 AAA)· 字体升级(4 类 simfang→simhei)· HERO_SHADOW (180,80,30) · HERO 标题 stroke_width=1 stroke_fill=INK |
v32 升级为 v34 长段叙事版 —— page3 从「1 条消息 4 维单行数字清单」升级为「1 条消息 3 段长叙事 + 4 类增量知识」。
| 文件 | 类型 | 说明 |
|---|---|---|
SKILL.md §6.6 |
新增 | v34 长段叙事版完整写法(4 类增量知识表 + 自检清单 + 渲染示例) |
assets/template_page3_v32.py |
升级 | DEPTH 4 维 → 3 维长段叙事,detail: str → list[str](3-4 行),卡片高度自适应 56 + n_lines*28 + 16 |
assets/v30_pitfall_check.py |
升级 | 26 → 27 项(新增 check_27:v34 长段叙事 + 4 类关键词验证) |
generate_page3.py(根目录) |
升级 | 与 assets/template_page3_v32.py 同步 |
v34 vs v32 核心差异:
| 维度 | v32(已弃·罗列失败) | v34(当前生效·长段叙事) |
|---|---|---|
| DEPTH 段数 | 4 段(周期/信号/历史/A股) | 3 段(机制/反常识/历史镜鉴) |
| 每段 detail | 1 行 ≈ 30 字 | 3-4 行 ≈ 60-90 字 |
| detail 类型 | 字符串 | 字符串列表(list[str],每行 ≤28 字) |
| 卡片高度 | 110px 固定 | 156-184px 自适应(56 + n_lines*28 + 16) |
| 判据 | 数字对齐 | 用户读完能跟别人吹"百度上没有的" |
| 红线条目 | ㉖ | ㉗ |
4 类增量知识必含至少 2 类(红线 ㉗):
| 维度 | 必含 | 0826 实战示例 |
|---|---|---|
| ① 机制 | 公式/规则/传导链 | 国内挂钩布伦特+迪拜+WTI 三地均价,10 个工作日一调 |
| ② 反常识 | 表面矛盾 vs 真实原因 | 国际跌国内涨 ≠ 矛盾,2 周时差,8/25 跌是为 9 月下调埋伏笔 |
| ③ 历史镜鉴 | 上次同类事件具体数字 | 2022 俄乌连涨 7 轮,92# 从 7.8 推到 9.2 涨幅 18% |
| ④ 普通人怎么用 | 今夜/两周/长线三档时间 | 8/27 加满 50L 省 16 元 / 查快递月卡 / 新能源车销量 +12% |
为什么 v34 而不是 v33:
- v33(0826)尝试了"调价幅度/历史对照/A股标的/替代选择"4 维数字清单——当场被用户打回"讲了和没讲一样"
- 数字本身百度就有,"信息差"栏目要提供"知道数字后还能吹牛"的解释
- v34 = 4 类增量知识 + 长段叙事,每段 ≥3 行 + 含至少 1 类关键词
新增可选 page3 路线:v32 单条深度版 —— 从三件套认知加油包升级为「1 条消息 4 维深度 + 4 条行动」单条深度版。
| 文件 | 类型 | 说明 |
|---|---|---|
assets/template_page3_v32.py |
新增 | v32 单条深度版 page3 模板(HERO 大问句 + 4 维深度 + 4 条行动 + 必含风险提示) |
assets/v30_pitfall_check.py |
新增 | 26 项踩坑核查脚本(22 项通用 + v32 专项 4 项:HERO「?」/ DEPTH 含周期·信号·历史·A 股 / ACTIONS 第 4 条风险提示 / RISK「不构成投资建议」) |
assets/generate_template_v15.py |
新增 | v1 generate.py 的 v15 紧凑参数升级参考(NL=54 SL=36 SIG=48 PAD=32 ROW_GAP=14,page1 4 条贴底·不再撑不下) |
SKILL.md 升级:从 182 行三件套概要 → 656 行完整版,含:
- 红线 ㉖:page3 v32 单条深度版铁律
- §6.5:v32 单条深度 page3 写法
- §9:迭代史 v29→v32
- 4 维深度(周期 / 信号 / 历史 / A 股)必填项
- 4 条行动(第 4 条必为风险提示)
为什么不动三件套命令行入口:
generate.py/generate_v2.py/generate_page3.py三个根目录脚本是命令行入口,保留向后兼容- v32 单条深度作为 可选替代,放在 assets/ 里由用户决定是否采用
- v15 紧凑参数是 v1 三列 generate.py 的 升级参考,调用方根据实际情况选用
v32 vs 原 page3:
- 原 page3(v1.1.6 工具表型)= 3 段编号(01-03 政策行/指标名/对照),通用方法论 + 数据源
- v32 单条深度(v2.0.0)= 1 条消息 4 维深度 + 4 条行动,适用选题:油价 / 物价 / 银行 / 召回 / AI / 国际(v28 红线优先级)
MIT
