Skip to content

About

小红书富人信息差图文生成器 · 三件套(v1 米黄三列 + v2 砂糖橘3:1 + page3 认知加油包)· 纯 Pillow 零依赖 · MIT

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

富人信息差 · 小红书图文笔记 Skill

v2.5.0 升级(增量 · 2026-09-16)

v40 → v20.1 + v20.2 三层强化 —— 0916 用户两条反馈沉淀:

  1. 「新闻事实中间那条应该是专业术语的注释」 → v20.1 内容铁律:term_note 必须是 X=通俗解释 格式(含 =/是/指),禁退化为补充短评
  2. 「为啥有的专业术语注释没显示全」 → 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 信息密度)。

5 分钟上手

# 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 与 page3 的区别

  • 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 用通用方法论(波特五力/生命周期/杜邦三因子)替代政策工具箱

7 种解读句式(每条不重复)

# 句式 用法
① 转折 A 主张 → B 打脸
② 判断 数字+结论(PMI→衰退)
③ 直陈 事实直说(大模型发布)
④ 场景 标志性事件(15年来首次)
⑤ 趋势 数字持续变化(单日涨3%)
⑥ 结论 场景落地结论(订单翻倍/客户破万)
⑦ 预测 趋势延伸意义(出海抢单/卡位窗口)

字数预算:新闻事实 ≤42 字 · 信号解读 ≤10 字

page3 干货维度选型

从 7 条里挑 1 条引申做 page3,提升收藏率:

维度 适用场景 例
产业链梳理 涉及产品/行业结构 存储芯片新闻 → 5 环节产业链(设备/材料/设计/制造/封测)
关键指标解读 涉及经济数据 PMI 新闻 → 制造业 vs 服务业 PMI 怎么看
历史对照 涉及标志性事件 历史 IPO → 历轮 IPO 估值与回报对照
产业地图 涉及区域/集群 大湾区外贸 → 9 市外贸排名与产业分工
工具拆解 涉及通用方法论 周期判断 → 波特五力/生命周期/杜邦三因子

3 段标准结构(工具表型·不点名公司·收藏向):

  1. 01 产业链/逻辑链 — 5 个环节,文字行 + 小编号
  2. 02 关键数字怎么读 — 5 张速查卡,每卡含「指标名 + 阈值 + 标准值 + 作用」
  3. 03 分析方法速查 — 3 件套速查,每条含「工具名 + 全称注解 + 适用场景 + 使用步骤 + 经典案例」

page3 设计哲学:工具表型 > 行业回顾型

收藏率取决于「下次用得上」的概率:

  • ❌ 回顾型(历程/时间线/集中度数字)— 看一眼就忘
  • ✅ 工具表型(数字标尺 + 方法论速查)— 跨主题可复用,看到任何相关新闻都能直接套

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)。

设计要点

page1 / page2 双版本

v1 米黄三列 v2 砂糖橘 3:1
适用 偏信息密度、表格感 偏阅读体验、横排
配色 #FBF6E4 + #F08A24 #FDEBD0 + #FF8232
字号 固定 26pt 动态铺满(4条页为基准统一)

page3 设计哲学:图轻字重

  • 文字占画面 ~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 类覆盖建议(≥5 类)

按合规红线 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

v2.3.0 升级(增量 · 2026-09-13)

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 解析(红线 ㉝)

v2.2.0 升级(增量 · 2026-08-31)

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

v2.1.0 升级(增量 · 2026-08-26)

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 类关键词

v2.0.0 升级(增量 · 2026-08-25)

新增可选 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 红线优先级)

License

MIT

About

小红书富人信息差图文生成器 · 三件套(v1 米黄三列 + v2 砂糖橘3:1 + page3 认知加油包)· 纯 Pillow 零依赖 · MIT

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages