ricoocuii-source

rico-xhs-dense

把长文章/Twitter/链接转化为高密度小红书图文系列。内容驱动分页,文案为主体(300-500字/页),视觉为辅(内容页≤25%)。10种布局模式 + 3种美学风格(手绘水彩/极简技术/现代SaaS)+ 30+ 具象隐喻物件库,按内容性质匹配。

ricoocuii-source 0 Updated 6d ago

Resources

8
GitHub

Install

npx skillscat add ricoocuii-source/rico-xhs-dense

Install via the SkillsCat registry.

SKILL.md

小红书高密度图文生成流程(Dense 版)

把文章/链接转化为高密度小红书图文系列。与 rico-xhs-stable 的核心区别:内容驱动而非原型驱动,每页文字极密(300-500字,目标350+),插画极克制(内容页≤25%),宁可少页不稀释。

环境配置

首次使用前需要安装依赖和配置 API 密钥。详见 references/setup.md

前处理流程

URL → 抓取原文和图片 → 翻译(非中文,派老陈 agent)→ 确立 zh-translation.md 为后续主文本源 → voice 识别。详见 references/preprocessing.md。老陈的角色画像详见 references/laochen.md

主文本源规则(强制)

  • 非中文来源必须先完整产出 zh-translation.md 再进入后续步骤;中文来源也保存为 zh-translation.md 作为唯一文本源。
  • source.md / page-plan / tutorial-rewrite 不能作为上图文案来源。
  • 图片中的文字必须先转录进 zh-translation.md,才能上图。

Step 1: 分页规划

读完 zh-translation.md 后输出 page-plan.md。

核心原则:内容驱动,不选原型

不要先选"痛点页/教程页/概念页"再填内容。流程是:

  1. 读完原文,按章节划分页面
  2. 每页对应原文 1-2 个完整章节
  3. 根据该页内容的性质,匹配一种布局模式(见 references/page-archetypes.md

page-plan 格式

voice: 工程方法论
style: A  # A 手绘水彩 / B 极简技术 / C 现代 SaaS,全套统一

- page: 01
  layout: cover
  title: "主标题"
  subtitle: "副标题"
  source_sections: "zh-translation.md 第1-3段"
  est_chars: 450
  visual_budget: "hero隐喻'桥贯穿画面' 55%"
  modules: []  # 0-3 个可组合模块(见 visual-rules.md 第 6 节)
  on_canvas_text:
    - "60-120字的完整段落,从原文直搬"
    - "另一段完整叙事"
  negative:
    - "不要什么"

voice 类型见 references/copywriting-rules.md 第 9 节。
style 三选一见 references/visual-rules.md 第 4 节。
visual_budget 必须写明 hero 隐喻名称(从 visual-rules.md 第 5b 节选)+ 占比。
一页 = 基础布局 + 0-3 个模块(叠加单位,见 visual-rules.md 第 6 节)。视觉合计仍 ≤25%。

分页密度规则(强制)

规则 要求
每页目标字数 300-500 字(目标 350+,封面和数据面板型 I 除外)
合页门槛 章节预估 < 300 字 → 必须与相邻章节合并
拆页门槛 仅当章节 > 500 字且含 2+ 独立子话题时才拆
系列页数 宁可少页,不稀释信息

CLI 命令/代码的处理

原文含 CLI 命令、配置文件、API 调用时,用 J 布局(代码+说明分区)或在其他布局内加深色代码块。命令完整展示,不省略不缩写。

痛点/风险等内容的处理

不强制开独立页。只有原文明确包含"问题描述 + 数据佐证"时,才在某页内做一个痛点 zone。原文没有痛点就不做——不编造、不强塞。风险、对比等同理。

on_canvas_text 规则

  • 每条 60-120 字,是原文的完整段落,不是 30 字摘要
  • 原文信息不砍不缩,只删重复修饰和过渡连接词
  • 一个卡片 = 原文一个完整段落,不是一个要点

覆盖率自查(强制)

page-plan 写完后,拿 zh-translation.md 逐段比对,覆盖率 ≥ 95%(排除推广类)。不通过 → 扩充或加页。


Step 1.5: 教程化改写(按需)

仅教程类文章需要。对每页对应章节做操作视角重写,产出 tutorial-rewrite.md。视角转换(作者→读者)、每步3层(动作+命令+判断)、不新增概念。


Step 2: 逐页 prompt(并行模式)

page-plan 定稿后,用 Agent 工具并行写各页 prompt。每个 agent 负责 1-2 页,收到完整的 style prefix + page-plan 对应条目 + zh-translation.md 对应章节原文。所有 agent 在同一条消息中派发,最大化并行度。

并行派发规则

  1. 封面单独一个 agent
  2. 内容页按 2 页一组分配(如 P02-03、P04-05、P06-07、P08 单独),总共 4-5 个 agent
  3. 每个 agent 的 prompt 必须包含:style prefix 全文、该页的 page-plan 条目(layout/title/subtitle/on_canvas_text/visual_budget/modules/negative)、zh-translation.md 中 source_sections 指定的原文段落
  4. agent 写完后把 prompt 文件写入 prompts/ 目录
  5. 所有 agent 完成后,主 agent 执行 Step 2.5 覆盖率反查和收尾自检

每个 prompt 由 4 层组成。

Layer 1 — Style Prefix(每个 prompt 顶部嵌入)

做一张 3:4 竖版的小红书高密度信息图。
风格要求:
- 整个页面背景必须暖白色(#FAFAF8),正文用深色文字,不要深色/黑色背景,不要白色文字
- 文字边缘必须锐利清晰,无弥散、无模糊
- 标题颜色:H1 统一 #4A4A4A 深灰加粗,副标题统一 #888 中灰
- 所有标题和副标题一律左对齐(封面也左对齐)
- 编辑型插画风格:轻 3D 体积感、2-3px 黑色描边、pastel 空气刷阴影
- 插画带手绘笔触和纸张纹理
- 圆角卡片(8-12px)+ 1px 细描边(#E0E0E0)+ 浅阴影
- 终端和代码块用深色底(#1E1E2E),等宽字体
- 文字是绝对主体,占页面 75-95%
- 视觉合计 ≤25%(小 icon + hero 隐喻插画 + 信息图组件 + 装饰累加),封面可达 50-60%
- hero 隐喻插画从 visual-rules.md 第 5b 节隐喻库选,含义对应原文概念
- 配色盘:绿 #2E7D32 / 紫 #6A1B9A / 蓝 #1565C0 / 橙 #E65100 / 粉 #AD1457
- 信息密度极高——每页 300-500 字真实内容,不要大留白
- 必须简体中文,禁止繁体中文
- 图上所有中文必须严格按指定文案渲染,不允许模型自由发挥
- 不要出现作者名、平台名、链接、水印、logo、乱码、伪中文

Layer 2 — 布局描述

用自然语言描述布局,从 10 种布局模式中匹配。见 references/page-archetypes.md。禁止写百分比数字。

Layer 3 — 写死的上图文字

所有中文在 prompt 里写死。标题和正文写法详见 copywriting-rules.md

关键约束:

  • 单卡 60-120 字,每页 300-550 字(封面和数据面板型 I 除外)
  • 每段必须追溯到 zh-translation.md 原句,禁从 page-plan / source.md 转写
  • 不新增原文没有的概念/标签/判断
  • 深色锚点条只装 CLI 命令/代码/数据,没有就不加
  • 允许:术语展开为"定义+场景+例子",品类名补 1-2 个代表公司/工具名

Layer 4 — 视觉资产 + 负约束

视觉:30-50px 功能图标,从 references/visual-rules.md 物件库选。同一组图内同一物件不重复。

负约束:不要出现的东西。

最后一页底部署名

底部加一行小灰字:原文:@作者名。从 source.md 的 author 字段读取。

Step 2.5 反查(强制,prompt 写完后立即执行,三步串行)

所有 prompt 写完后,依次执行三步:覆盖率检查 → 主 agent 补写 → 老陈冷读终审。不能合并成一个 agent,原因见下文。


Step 2.5a:覆盖率检查(Agent)

派发一个 agent,给它:

  • zh-translation.md完整绝对路径
  • prompts/ 目录的完整绝对路径
  • page-plan.md完整绝对路径(仅供定位章节对应关系,不作为反向溯源的比对源)

任务(双向检查)

正向覆盖率:拿 zh-translation.md 每个自然段(跳过纯代码块和 YAML 示例),检查该段核心信息是否出现在某个 prompt 的上图文字中。

反向溯源:拿每个 prompt 的上图文字(标题、副标题、卡片正文),检查其中的概念、判断、术语是否能在 zh-translation.md 中找到对应。标记所有在原文中找不到来源的内容——包括但不限于生造的词、原文没有的判断、自行补充的对比项。

输出

## 正向覆盖率
- 判定:PASS / FAIL
- 覆盖率:XX%
- 缺失清单(如有):
  - 行 XX:「原文摘要」→ 未出现在任何 prompt → 建议补入 page-XX

## 反向溯源
- 判定:PASS / FAIL
- 问题清单(如有):
  - page-XX「prompt 中的表述」→ 原文无对应 → 建议改为「原文原话或自然中文表述」

权限:只报告,不改文件。


Step 2.5b:主 agent 补写

覆盖率 agent 返回后,主 agent 处理两类问题:

正向覆盖率缺失

  • PASS(≥ 95%)→ 跳过
  • FAIL(< 95%)→ 主 agent 按缺失清单补写 prompt:
    • 优先扩充已有卡片(到 120 字上限)
    • 卡片满了 → 在最相关的页面新增卡片
    • 页面满了(> 500 字)→ 新开页、更新 page-plan、写新 prompt

反向溯源问题

  • PASS → 跳过
  • FAIL → 主 agent 逐条修改:改回原文的说法,或删掉原文没有的内容。不要用另一个新造的表述替换。

两类问题都处理完后,进 Step 2.5c。


Step 2.5c:老陈冷读终审(Agent,模式 B)

老陈角色画像、冷读终审的完整规则(三关检查、评分维度、输出格式、修改权限)详见 references/laochen.md 模式 B 章节。

主 agent 预处理:生成读者视角文案稿

派发老陈之前,主 agent 从所有 prompt 文件中只提取 Layer 3(标题、副标题、卡片正文、段落正文、底部文字),按页码顺序拼成一个干净的纯文案文件 reader-view.md,写入 run 目录。格式:

## P01 封面
标题:XXX
副标题:XXX

## P02
标题:XXX
副标题:XXX

卡片 1:正文正文正文...
卡片 2:正文正文正文...
...

不含 style prefix、布局描述、视觉资产、负约束——任何技术噪音都不要。老陈读这个文件审文案,改的时候回 prompt 文件改。

派发要求

laochen.md 派发规则表的模式 B 行执行:只给 reader-view.md 路径 + prompts/ 目录路径。禁止给原文、page-plan、规则文档等任何上下文。


主 agent 汇总

老陈返回后,主 agent 执行收尾自检

Step 2 收尾自检(并行反查通过后执行)

  • 文字:每页 ≥ 300 字 | 标题功能直述 | 无收束句 | 无禁词(详见 copywriting-rules.md)
  • 视觉:内容页合计 ≤ 25% | 美学风格全套统一 | hero 隐喻对应原文概念
  • 结构:相邻页布局不重复 | 末页有署名且不重复前页信息

Step 3: 批量生图

出图方式判断(先做这一步)

  1. 如果你是 Codex(或其它带原生出图能力的 agent),且当前账号可直接调用 GPT-Image-2:直接用你的原生出图能力,按各页 prompt 出图,无需 API Key / 中转站,跳过下面的脚本方式。
  2. 否则(如 Claude Code):用下面的 batch.json + 脚本方式,需先在 ~/.rico-xhs/.env 配好生图 API(中转站或官方,详见 references/image-api-setup.md)。

模型选择

  • 默认模型 gpt-image-2(走中转站,provider: openai)。
  • 若用户在对话里指定了模型(如「这次用 nano-banana-2 出图」「封面用 gpt-image-2」),就把 batch.json 里对应任务的 model 改成用户指定的值,provider 保持 openai
source ~/.rico-xhs/.env && OPENAI_API_KEY=$OPENAI_API_KEY OPENAI_BASE_URL=$OPENAI_BASE_URL bun <skill-path>/scripts/image-gen/main.ts --batchfile batch.json --json

batch.json 格式:

[
  {
    "promptFiles": ["prompts/page-01-cover.md"],
    "image": "output/page-01-cover.png",
    "ar": "3:4",
    "quality": "2k",
    "provider": "openai",
    "model": "gpt-image-2"
  }
]

分波执行:先跑前 4 张,检查效果后再跑剩余。


参考策略

  • 封面独立生成
  • 内容页第一张作为锚点,独立生成
  • 后续同类内容页参考锚点,不链式串联

输出目录

runs/YYYY-MM-DD-descriptive-name/
├── source/
├── images/
├── output/
├── prompts/
├── zh-translation.md
├── page-plan.md
├── reader-view.md       ← Step 2.5c 产出
├── tutorial-rewrite.md  ← 仅教程类
├── source.md
├── 01-analysis.md       ← 前处理产出(voice + 术语表)
├── batch.json
└── batch-wave*.json     ← 分波执行时产出

Final 发布流程

当用户说「触发 final」或「放到 final」时执行。详见 references/final-publish.md

Categories