baseline: Clover 独立仓库首次基线提交

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

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
yangqianqian
2026-06-16 11:30:22 +08:00
commit 6a2632da70
253 changed files with 27467 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
# 产品包全流程扒包落盘
> 目的:把"产品包"的完整内容生产流程摸透,决定 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.js`15个路由。核心引擎
| 路由 | 文件 | 干什么 | 调用模型 |
|------|------|--------|----------|
| /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展示页不复用)。