小红书爆款笔记 1:1 复刻
示例问法
- 帮我 1:1 复刻这条爆款:
https://www.xiaohongshu.com/explore/xxxx - 这条笔记爆了,照它的结构给我写一篇
- 把这条笔记改写一版,别和原稿撞车
- 复刻这条,封面和后面几张图也要重做
适用场景
用户提供一条已跑出数据的小红书笔记(链接、截图或原文),要求照着它做一条新笔记时触发。
核心诉求是:保留爆过的原因,换掉可被判重的表面。
不适用于:从零原创选题(没有对标对象)、单纯搬运(直接抄原文或复用原图)、批量洗稿他人内容。
依赖与前置
脚本都用系统已装的运行时,不需要在技能目录里装任何依赖。缺哪个补哪个:
| 用途 | 依赖 | 缺失时的表现 |
|---|---|---|
| 全部脚本 | Node.js 18+ | 直接报错 |
| 动态图打包 | Python 3.9+ | make_live_photo.py 报错 |
| 采集 / 渲染截图 | Chrome 或 Edge | 脚本会自动找常见安装位置;找不到就报「未找到浏览器」 |
| 动态图转码 | ffmpeg | 只在 Step 6 需要。pip install imageio-ffmpeg 后脚本自动找到,或用环境变量 WB_FFMPEG 指定路径 |
| 生图 / 生视频 | 平台内置的图像与视频生成能力 | 无此能力时只能出文案和文字卡 |
首次采集会自动拉起一个专用 Chrome 实例(独立 profile,不影响日常浏览器),
登录一次小红书后长期复用。
核心原则
爆点一处不动,其余全部换掉。
爆款能爆,靠的是几样具体的东西:产品本身、构图签名、光照性格、钩子句式。
这些一点都不能动;背景、道具、手、遣词造句——才是该换的地方。
动笔前必须先给每张图、每一句话做元素分层(L1 爆点 / L2 骨架 / L3 氛围 / L4 冗余),
判定句只有一句:删掉它,这张图还爆不爆?
不分层就动手,只有两种结局——动了爆点(改完不像了),或者只动边角(改完还是同一张)。
详见 references/element-layering.md。
三条判断标准,改写全程拿来对照:
- 把新稿给原稿作者看,他会说「你在模仿我」而不是「你抄了我」
- 把新稿给平台算法看,它认不出这是同一篇
- 把新稿给读者看,他得到的信息和原稿完全一致
任何一条不满足,就重写。
工作流程
Step 1 采集原素材
node scripts/fetch_note.mjs "<笔记链接>" --out ./clone-work
产出在 clone-work/source/:
| 文件 | 内容 |
|---|---|
brief.json |
结构化数据:标题、正文、标签、互动数、图片尺寸、文本统计 |
orig_note.md |
人读版汇总(先读这个) |
orig_body.txt |
纯正文,供自检脚本对比 |
img_01.jpg... |
全部原图,图生图的参考图 + 视觉拆解依据 |
首次运行会自动拉起一个专用 Chrome。若提示取不到数据,在弹出的窗口里登录小红书后重跑。
用户只给了截图没给链接时,跳过本步,直接让用户把标题、正文、标签贴出来,图片用截图。
Step 2 拆解结构
读 orig_note.md 和原图,写 clone-work/analysis.md。四项都要拆,拆不出的不许动笔:
标题——按七要素拆:人群词 / 痛点词 / 归因词 / 利益词 / 数量词 / 情绪词 / 悬念位。
单独标出核心关键词(一般是痛点词 + 归因词),这几个字后面一个字都不能换。
正文——逐段打标签:钩子句 / 共鸣场景 / 转折自白 / 干货主体(N 条)/ 反向限定 / 行动引导。
记下条目数、每条的具体参数(时间、次数、剂量),这些是干货本体。
标签——按三层归类:赛道大类词 / 场景人群词 / 长尾精准词。
图片——每张图判类型(A 真人出镜 / B 场景实拍 / C 文字干货卡 / D 对比图 / E 清单九宫格 / F 单品特写),
再记四要素:构图结构、视觉焦点、色彩关系、信息层级。
然后必须逐张做元素分层(这一步不做,后面的图一定是白做的):
| 层 | 判定句 | 处理 |
|---|---|---|
| L1 爆点 | 删掉它,这张图就不爆了 | 一个像素不动 |
| L2 骨架 | 还能看,但不是这个味儿了 | 保留形态,等价替换 |
| L3 氛围 | 换成同类的没影响 | 改动全在这里 |
| L4 冗余 | 有它没它都行 | 可删 |
输出格式:每张图一张四行表,写清哪些元素分别属于哪层。
另外横向找出整组图的统一签名(五张都有、决定质感的那几样,通常是光影性格、色调关系、真人痕迹)——
这几样要写进每一张的提示词,不能只在封面写。
分层方法、L3 的五项改动清单、三个常见误判,全部见 references/element-layering.md。做图前必读。
拆解规则详见 references/title-rewrite.md、references/body-rewrite.md、
references/tag-strategy.md、references/cover-taxonomy.md、references/element-layering.md。
动笔前必读对应章节。
Step 3 文案复刻
按参考文档的手法改写,每个候选都要过自检:
# 标题
node scripts/check_similarity.mjs --orig "原标题" --new "新标题" --keep "核心词1,核心词2"
# 正文
node scripts/check_similarity.mjs --orig-file clone-work/source/orig_body.txt \
--new-file clone-work/output/body_1.txt --keep "关键词1,关键词2"
- 标题给 3 个候选,走不同手法路线(前后互换 / 近义替换 / 修饰词增减…),不要三个都是同一招的微调
- 正文给 2 个候选,同样走不同路线
- 标签 1 套,与原稿数量一致,重合率 ≥ 70%
- 自检 FAIL 的候选不得交付,必须改到 PASS
Step 4 图片复刻
图片必须真的生成出来存成文件,不能只在文档里描述。
做图前把 Step 2 的分层表调出来放在旁边:L1 那几行逐项对照、不许走样;所有改动的描述只从 L3 那几个格子里取。
不要在提示词里临时想「这里改一下」——凭感觉改的,最后要么改多了要么改少了。
按 Step 2 判定的类型选路线:
C / D / E 类(文字型)→ 纯文字卡
写 clone-work/output/slides.json,然后:
node scripts/render_cards.mjs clone-work/output/slides.json --out ./clone-work/output/images
版式三选一:cover 大标题封面 / list 干货清单页 / compare 对比页。
风格四选一:warm 暖米 / clean 纯白 / ink 深色 / fresh 浅绿。
A / B / F 类(实拍型)→ AI 生图
用 ImageGen 做图生图,把 source/img_0X.jpg 作为参考图传入。
提示词按 references/cover-taxonomy.md 第三节的骨架写,务必包含「不要出现任何文字」。
核心原则:产品一个细节都不能改,只换背景和手。
爆款之所以爆,往往就是因为那件东西本身。用户点进来是来看货的,你把产品换了,
爆点当场消失,后面做得再精致也没用。
| 爆点是什么 | 必须原样保留 | 可以替换 |
|---|---|---|
| 产品(晒货、种草) | 款式、材质、颜色、饰件形状、排列顺序、大小比例 | 背景材质、光线细节、手的主人 |
| 人物(真人出镜) | 脸、表情、姿态、衣着风格 | 背景、道具、光线 |
参数:input_fidelity: high。
写法四条,缺一条就可能翻车:
- 产品描述写到「形状」级别。 只写颜色材质不够——
「方形弧边宝石」会画成方块,「窄腰四叶草形,四片圆润花瓣、瓣与瓣之间 V 形内凹,
不是方块也不是菱形」才对。这一句是成败关键 - 改动全部来自 L3,而且要「缩略图级别可辨」。
换个颜色(深棕毛绒→米白羊羔绒)、换个物件(托特包→手拿包)、换个方向(光从左→光从右)、
去掉一整个元素(撤掉杂志)——这类改法有效。
反例:把绒布「颗粒变细」、把毛绒「毛略短一点」——自己屏幕上看得出,
缩到手机尺寸完全一样,等于没改。 用户刷手机时的判定粒度是缩略图。
每张至少换三项:光线入射角 / 背景材质与颜色 / 道具款式 / 手(形态·肤色·甲型)/ 取景距离 - 光的性格必须逐字继承,方向才翻转。
原图是硬光就不能写成「柔和自然窗光」,那是把最值钱的质感丢了。
正确写法:「强烈直射阳光,约一半画面落在阴影里,分界线是清晰斜线,影子边缘锐利不发虚」,
然后把方向翻到相反侧。这一句要写进每一张,不只封面 - 一次改多变量失败时,退回单变量迭代。
同时换背景+换手,模型有时会顺手把产品也改了。遇到这种情况先只改背景、
确认产品没走样,再单独改手 - 爆点如果是「真人实拍感」,必须点名要求保留皮肤瑕疵。
裸肤面积大的图(首饰贴肤、护肤、身体护理),可信度全来自瑕疵:
细毛孔、轻微肤色不均、小痣或淡红印、发际碎发、指甲根部的生长痕迹。
模型默认会磨皮、会统一肤色,一旦磨平,图就从「真人分享」变成「商品广告」,
爆点当场失效。提示词要写成「不要磨皮、不要美颜、不要柔焦、不要统一肤色,
画质像手机原相机直出,允许轻微噪点,不要过度锐化」
最容易走样的是「手腕佩戴 + 叠戴」:手链缠在手腕上只露局部,模型推不出完整形制就会自由发挥。
实测这类图一半会翻车(四叶草变方块、圆钻扣变小接扣)。对策是把可见饰件一件一件点名:
「手腕上方是一枚完整的圆形金托密镶碎钻圆扣,往下是链条和一枚四叶草,再往下链条延伸」。
连拍组的参考图,第一张用原图,后面全部用定稿的第一张。
这条实测踩过坑:做 3 张同场景连拍,第 2 张拿原稿的 img_02 当参考图,
模型把原图的次要元素全抄了回来——长款浅粉亮片甲、纯黑直发、米杏色细针织、光斑消失,
等于 L3 白改了一轮。改成拿已定稿的第 1 张当参考图后,人物、发色、衣料、光线自动一致,
只改手势,一次通过。
所以流程是:
1. 第 1 张按上面四条写完,反复调到定稿
2. 第 2、3…张把 image1 指向第 1 张成品,提示词开头写「与参考图同一组连拍,
人物/服装/光线/产品全部不变,只改手势和取景」,然后只描述变化的那一处
3. 原图只用来做并排对比,不要再喂给模型
每张生成 1-2 版。验收标准是像「同一个博主隔天重拍的同一件商品」,不像「同一张图」。
产品对不上就重做,不要凑合——产品错了这张图就废了。
真人/场景 + 大字标题(混合型,最高频)→ 两段式
先生成无字底图,再用文字卡叠字:
{ "style": "warm", "slides": [
{ "layout": "cover", "title": "膝盖疼\n别急着补钙", "subtitle": "58 岁亲测两个月", "bg": "./output/bg_1.png" }
]}
张数与原稿一致,每张承担的功能也要与原稿对应(原稿第 2 张是痛点罗列,新稿第 2 张也得是)。
图片生成后必须过一遍检测,这一步不能跳:
node scripts/check_image_distance.mjs --batch source output/images_v2
它会输出每张的并排对比图 compare_1.png ... compare_N.png。打开并排图,缩到手机大小看一眼:
第一眼认成同一张,就回去换主体姿态、换道具、把参考图镜像翻转后重生。
脚本里的像素指标只能查出「原图被裁切调色后直接复用」,查不出「不同图但构图雷同」——
AI 重绘后毛发、高光、纹理全变了,像素差必然大,可人眼照样觉得像。别被绿色数字骗了,
并排图才是判据。
Step 5 交付
clone-work/
├── source/ 原始素材(采集结果 + 原图)
├── analysis.md 结构拆解报告
└── output/
├── 文案.md 标题 3 候选 + 正文 2 候选 + 标签 + 每项的自检结果
├── publish.txt 可直接复制粘贴到小红书的内容(标题 / 正文 / 标签分行)
├── images/ 1.png 2.png ... 与发布顺序一致
├── slides.json 配图源数据,方便二次调整
└── report.md 复刻说明:继承了什么、替换了什么、自检数据
publish.txt 是用户真正要用的东西,格式:
【标题】
(推荐候选,一行)
【正文】
(完整正文,含标签行)
【标签】
#xx #xx #xx
Step 6 动态图(原稿是实况图时才做)
原稿是 Live Photo 时,复刻也必须给动态版,否则质感差一档。只做封面一张,
视频成本约是单张图的 10 倍。
先判断原稿到底是不是实况图:采集下来的 brief.json 里看图片字段,
或看笔记详情页首图是否有实况标识。不是就别做,白花积分。
生成动效(VideoGen,image-to-video,首帧传封面成品图):
提示词只允许光和皮肤动,产品一处不动。骨架:
保持画面构图与所有物体完全静止,只加入极轻微的真实动态。
允许:光线缓慢移动 / 明暗过渡带轻微偏移 / 皮肤呼吸起伏 / 发丝末端飘动 /
钻石随光线闪动 / 镜头极缓慢推近约 2%(不摇不转不变焦)
必须严格不变:[产品形制、链型、饰件形状与位置、肤色、指甲、发色、衣服、色调]
不要出现:文字、水印、logo;人物转头、眨眼、露脸;磨皮;画面闪烁;物体变形
三件必做的事,缺一不可:
- 去水印。生成的视频左上角会有「AI生成」。
delogo只留糊影,用裁切:
先抽帧确认水印实际下沿(通常比目测低,56px 不够,实测 96px 才干净),
再crop=宽:高-96:0:96。裁完要重新抽首尾帧确认无残留。 - 成 3:4。
crop后scale,别直接拉伸。3:4 = 1080×1440。 - 打包成实况照片才能混进图文轮播,否则只能发视频笔记:
node scripts/render_cards.mjs ... # 静图已在前面做好
python scripts/make_live_photo.py \
--video 动态版.mp4 --out ./livephoto --name IMG_0001 --seconds 3
产出 IMG_0001.JPG + IMG_0001.MOV,两者带同一个 asset identifier。
iPhone 相册靠这个 ID 把两个文件合并成一张实况照片。
两个技术坑:
- JPEG 的 APP1(EXIF) 段必须插在 SOS 之前。插到后面文件看着完好,
但解析器读不到,实况照片绑不上——这个错误极难发现,验证方式见下 - MOV 写自定义键必须加
-movflags use_metadata_tags,
不加这个开关,com.apple.quicktime.*会被 ffmpeg 直接丢掉
验证绑定成功(不能只看文件生成出来):
# JPEG 侧
ex = Image.open("IMG_0001.JPG").getexif()
mn = ex.get_ifd(0x8769)[0x927C] # MakerNote,应为 bytes
assert b"XXXXXXXX" in mn # 换成实际 asset id 前 8 位
# MOV 侧
assert b"com.apple.quicktime.content.identifier" in open("IMG_0001.MOV","rb").read()
两边 ID 必须完全一致。
发布路径:文件要进 iPhone 相册才能发。Windows 上用 iCloud 云盘或
LocalSend 传过去,「文件」App 里选中 JPG+MOV → 共享 → 存储到「照片」,
iOS 会自动合并。微信传文件会压缩图片、破坏 EXIF,不要用微信。
硬约束
- 不复用原图。不用原图裁切、滤镜、镜像后发布,这是搬运
- 信息不换。干货条目的数量、结论、具体参数必须与原稿一致,改了就是编造
- 核心关键词不换。痛点词、归因词、赛道词一个字都不动,那是流量入口
- 自检必须过。标题最长公共子串 ≤ 7 字,正文 4-gram 重合 < 25%
- 生图不出字。任何可读文字、二维码、联系方式都不许出现在生图里,文字统一走文字卡
- 封面图必须实际生成。只写提示词不产出文件,视为未完成
- 产品不能改。晒货类笔记里,产品的款式、颜色、饰件形状、排列顺序一个细节都不能动——
那是爆点本身。只换背景和手,input_fidelity用high。产品走样就重做,不要凑合 - 医疗健康类内容不做疗效断言,不写「治好」「根治」「替代药物」
常见问题
取不到笔记数据
链接缺 xsec_token 被拦截,或未登录。换一条带 token 的分享链接;或在弹出的 Chrome 里登录后重跑。
自检一直 FAIL
不要靠改个别字凑指标。回到 Step 2 看骨架有没有拆错——通常是句式结构照着原稿抄了,
需要换整个句子的组织方式(长句拆短、主被动互换、因果倒装),而不是抠字眼。
生图中文糊成一团
正常,模型画不好汉字。删掉提示词里所有要求生成文字的表述,文字全部交给 render_cards.mjs 叠加。
生成图里的产品走样了
1:1 复刻最常见的失败。按顺序查:
1. 产品描述是否只写到颜色材质、没写到形状 → 补到形状级别(「窄腰四叶草,四瓣、瓣间 V 形内凹」)
2. 是不是同时换了背景又换了手 → 一张图只改一个变量
3. 是不是「手腕佩戴 + 叠戴」这类只露局部的画面 → 把可见饰件一件一件点名描述
4. 生成 2 版挑一版。四叶草被画成方块、圆钻扣被画成小接扣,都算失败
复刻出来没爆
先看互动结构:如果原稿是收藏高(干货型)而你复刻成了评论高(争议型),说明爆点判断错了。
回 Step 2 重看四层分层表,尤其确认 L1 有没有判错。
成品和原图摆在一起,看着还是「同一张」
L3 换得不够,或者换的是缩略图看不出的东西。按顺序查:
1. 并排缩到 200px 宽看一眼——认成同一张就是不合格
2. 是不是只改了材质质地(绒布颗粒变细、毛略短)→ 这类改动缩略图看不见,等于没改
3. 改颜色、改物件、改光的入射方向、去掉一整个元素,四种里选三种
4. 五张图是不是只改了封面,内页没动 → 每张都要独立改,不能只做封面
反过来:改完认不出是同类笔记了
L1 或 L2 被动到了。最常见的两处是换了产品、换了构图签名。
回 Step 2 的分层表,把 L1 那几行逐项对照成品,看是哪一项没守住。