Files
beige/产品包全流程扒包落盘.md
yangqianqian 6a2632da70 baseline: Clover 独立仓库首次基线提交
将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。
当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包),
M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:30:22 +08:00

10 KiB
Raw Blame History

产品包全流程扒包落盘

目的:把"产品包"的完整内容生产流程摸透,决定 Clover 复用什么、升级什么。 铁律:好的保留,不好的优化升级。 扒包日期2026-06-05扒包人CC


🔴 重大修正2026-06-05·倩倩姐提醒存在两套代码

产品包上了两套,我第一次扒错了源(扒的是旧的开发副本):

路径 性质 状态
旧版 万牛会L1准备/产品包/worker/src 开发副本/精简旧版 我首扒的(结论部分作废)
上线版 万牛会L1准备/worker/src 真正部署上线(有.wrangler/.dev.vars/线上域名wanniuxhs.super-n8n-agen.xyz) 以此为准

两套差异(上线版更新更全):

  • copy.js 上线690行 vs 旧578行差176行
  • image.js 上线871行 vs 旧656行差311行⚠️差异最大
  • split.js 几乎一致差8行
  • 上线版独有ai-judge.js / sop-evaluate.js / feishu.js(飞书提交426行) / X-Auth-Token鉴权

🔴 上线版已实现的"升级项"(我旧版结论里误判为"待升级",实际早做了):

  1. 生图主备可配置(imageProviderOrder读env.IMAGE_PROVIDER_PRIMARY/FALLBACK)——非写死
  2. GPT带产品参考图edits(requestGptImageWithReferences),且禁止纯文生图防产品跑偏
  3. 产品图作"不可修改商品锚点"强约束(禁改包装/换产品/混历史产品)——防串货
  4. 文案正文/开头去重(splitPublishableContent/contentSignature/openingSignature)——直击同质化
  5. 角度槽位(angleSlotsForCategory/angleSame)强制每条不同角度
  6. 内部提示剥离(content只放可发布正文配图建议挪imageBrief)

→ Clover 必须扒上线版,不是旧版。下面"四、好坏评估"的⚠️升级项已据此修正。


一、产品包是什么(以上线版为准)

北哥实际部署运行的小红书种草内容生产系统CF Pages前端 + CF Worker后端。 上线版后端入口 万牛会L1准备/worker/src/index.js15个路由。核心引擎

路由 文件 干什么 调用模型
/api/generate-copy copy.js 文案引擎(去重升级版) Claude→Gemini→本地
/api/generate-image + plan-images + generate-one-image image.js 生图引擎(主备可配+edits) 可配置主备
/api/content-split + generate-complete-notes split.js 裂变+端到端编排 Claude→生图
/api/parse-xhs-reference split.js 链接解析(只扒meta) -
/api/submit-to-feishu 等 feishu.js 飞书提交(上线版独有) -
/api/ai-judge / evaluate-sop ai-judge/sop demo诊断(Clover用不上) Claude

chat.js 是 demo 的"AI业务诊断"对话Clover 用不上,不复用。 另有 product.js产品图视觉分析Gemini Vision 出 visualIdentity带6大品类兜底——可复用做"产品配置"。


二、完整流程拆解(生成文案→生成图→裂变→存档)

2.1 生成文案copy.js · 最值钱的一块)

输入:产品名+卖点+人群+风格+数量+previousCopies(历史去重用)。 处理链路(三层兜底):

  1. Claude 生成 → 失败 → Gemini 生成 → 失败 → 本地模板兜底(buildLocalDrafts6品类×10角度保证永不空手)
  2. 五维打分(scoreCopy满分100过线90)标题吸引力25 / 情绪共鸣25 / 买点表达25 / 关键词覆盖20 / 合规性5
  3. 自动优化循环(maxOptimizeRounds默认2轮):不达标→把"未达标原因"喂回prompt重新生成避开已有标题/角度
  4. 去重系统(dedupeCopies+isSimilarCopy)标题相似度≥0.82 或 (标题≥0.65且正文≥0.72) 判重,与历史和本轮都比
  5. 违禁词处理BANNED_WORDS=[美白/祛斑/速效/医用/药妆] + BANNED_VISUAL=[前后对比/变白/before/after等]sanitizePlanningText 自动改写(变白→自然光泽感,前后对比→质地说明)合规分含禁用词直接0分 输出copies[],每条={title,content,tags,angle,buyingPoint,coverTitle,imageBrief,score,passed,publishable}

2.2 生成图image.js · 编排最复杂)

核心概念 storyboard 分镜一套笔记的N张图每张有固定"叙事角色"。

  • PAGE_ROLES 10种角色hook点击钩子/pain_scene痛点/applied_proof核心证明/texture质感/ingredient成分/social_proof背书/scenario场景/tutorial教程/closer软转化
  • getNarrativeRoles3张=钩子+证明+转化6张=钩子+痛点+证明+质感+背书+转化8张=+多场景+教程
  • proofStrategy按6品类给"证明页"定制画面策略(护肤=手背质地/食品=冲泡口感/服饰=上身材质)
  • buildVisualSystem成组视觉统一(主色/字体/贴纸/符号系统/质感)从product.js的visualIdentity来
  • 素材路由(imagePartsFromAssets):产品图保包装准确 / 客户实拍图给肤感场景 / 爆款图只参考版式贴纸
  • 每张图 prompt = basePrompt(全局规则+违禁限制) + promptFromStoryboard(本张角色/目标/图上文字/画面/禁止) 生图通道(关键升级点)generateOneImage 先 Gemini(多model fallback) 后 GPT/images/generations 纯文生图size 1024x1536。

2.3 裂变split.js · 真正的端到端编排器)

裂变 = 1条爆款参考 → N套完整笔记包(不是只换文案)。

  • 输入originalCopy(爆款)+产品信息+裂变维度(换角度/痛点/人群)+条数+每条图数+generateImages开关+referenceLevel(30-85)
  • 爆款参考度 referenceStrategyFromLevel低参考(只学结构)/中参考/高参考(学标题节奏但替换表达防抄袭)
  • 每套笔记包含:标题+正文+标签+coverTitle+imagePlan(每张图分镜)+dimension+audience+scene+painPoint
  • scoreCompleteNotecopy五维 + 图文完整度15分
  • generateImages=true 时直接串 image.js 出图readyToPublish=文案达标且图全部生成成功
  • 链接解析 handleParseXhsReference本地只能扒 og:title/og:description/og:image(meta),扒不到正文和内页图 → 对应洞1结论原始抓取死路

2.4 存档

⚠️ 产品包没有真正的存档/数据库。它是无状态 Worker产出物直接返回前端靠前端 localStorage 或人工保存。 → 这正是 Clover 必须新建的环节(delivery_packages表+package_exporter+素材打包下载)PRD不能漏。


三、数据流转(端到端)

产品配置(product.js分析产品图→visualIdentity)
   ↓
[路径A 从0生成]  generate-copy → N条文案(打分+优化+去重)
                    ↓ 选中1条
                 generate-image → 该文案的storyboard N张图
   ↓
[路径B 爆款裂变]  content-split(贴爆款链接/手填) → N套完整笔记包
                    ↓ generateImages=true
                 自动串 image.js → 每套笔记的N张图
   ↓
存档打包(❌产品包没有Clover新建) → 按笔记分文件夹+图01/02命名+文案.txt+发布清单.txt

四、好/坏评估(铁律落地)

值得保留(设计得好,直接复用/微调)

  1. 三层兜底(Claude→Gemini→本地模板):永不空手,生产级健壮 → 保留
  2. 五维打分+90分过线:质量可量化,前端能展示分数 → 保留,分值权重北哥可调
  3. 自动优化循环:不达标喂回原因重生成 → 保留,是飞轮的雏形
  4. 去重系统:相似度算法防重复发 → 保留,裂变刚需
  5. 违禁词三级(自动改写sanitize+硬扣分)和洞5方案完全一致 → 保留,升级为可配置三级
  6. storyboard叙事分镜(10角色+品类证明策略)生图的灵魂保证N张图各司其职不重复 → 保留
  7. 素材路由(产品图/实拍图/爆款图分工):和达人交付定位契合 → 保留
  8. 爆款参考度调节(低/中/高防抄袭):裂变合规关键 → 保留
  9. 6品类自适应(inferCategory+品类话术):素颜霜只是其一,未来可扩品 → 保留

⚠️ 必须优化升级(基于上线版重新核对)

注:旧版结论里的"生图主备颠倒/无edits/无重试"上线版已做,下面已剔除/修正。

A. 上线版已做好、Clover直接扒不用重新发明

  • 生图主备可配置(imageProviderOrder) → Clover设 PRIMARY=gpt, FALLBACK=gemini 即可
  • GPT带产品图edits + 禁纯文生图防跑偏(requestGptImageWithReferences)
  • 产品图"商品锚点"防串货约束
  • 文案正文/开头去重 + 角度槽位(治同质化)
  • 内部提示剥离(content只放可发布正文)

B. 上线版仍缺、Clover必须新建真正的升级项

  1. 重试退避上线版生图单次失败即记failure无重试gpt-image-2实测有502 → 加重试退避(baseline验证必要)。⚠️注:上线版copy里有_retry思想但生图通道无需补
  2. 暗水印处理产出直接给前端C2PA水印发小红书被识别 → 新增去水印工序(洞3可扒banana remove_watermark + re-encode安全档)
  3. 存档/数据库无状态Worker → 新建delivery_packages+打包导出(洞6/洞7)
  4. API Key硬编码旧PRD明文key、env散落 → 收口自家中转站urlkey按账号隔离(洞4)
  5. 单租户无隔离:无用户/租户/JWT → 新增多租户逻辑隔离(扒banana JWT)(洞4/7基石)
  6. 同步阻塞Worker同步等生图(每张~4min)串行会超时 → 改异步队列(扒banana Celery)(洞3)
  7. 无偏好飞轮:优化循环不记忆用户选择 → 新增preference_events+三层偏好继承(M9灵魂)
  8. 链接解析空壳只扒meta → 接登录态采集插件(洞1)
  9. 质量同质化(根因):上线版去重/角度槽位是"机制",但缺北哥真实优质样本和判断标准做"内容" → 架构留可调prompt+样本注入位,等北哥方案;飞轮学北哥审美

五、给 Clover 的结论(修正版)

  • 上线版 万牛会L1准备/worker/src不是旧版。copy/image/split三件套算法内核(打分/优化/去重/角度槽位/storyboard/品类策略/违禁词/主备可配/edits/防串货)整体搬是Clover最大存量资产。
  • 真正要新建的升级点(B类9项):重试/去水印/存档打包/Key收口/多租户/异步队列/飞轮/链接采集/质量样本位。
  • chat.js + ai-judge.js + sop-evaluate.js 丢弃(都是万牛会demo诊断用)feishu.js按需(飞书提交Clover若要飞书通知可参考)product.js改造成产品配置。
  • 前端按"前端设计参考图.png"5步流程重做(产品包旧前端是demo展示页不复用)。