""" AI 引擎中心常量 扒自:worker/src/copy.js + image.js 上线版 业务参数不写死(基石A)——分值权重可由产品档案配置覆盖 """ # ── 合规红线 ────────────────────────────────────────────── # 初始默认词库(数据库 banned_words 表可覆盖,updatable=True) BANNED_WORDS_DEFAULT = ["美白", "祛斑", "速效", "医用", "药妆"] BANNED_VISUAL_WORDS = [ "前后对比", "使用前后", "用前用后", "before", "after", "变白", "瑕疵消失", "治疗前后", ] # 内部提示词(不能混入正文 content 字段) INTERNAL_COPY_HINTS = [ "配图建议", "图片方向", "内页规划", "适合做成", "不要做促销海报", "配图说明", "封面建议", ] # ── 机械五维打分基线(仅轨B导入文案/降级回退用;轨A已切 AI 评委 llm_score_copy)───── # 历史注:轨A原用此5维,2026-06-15切至7维AI评委(6维+合规)后此处只作轨B+回退占位。 # 关键词维度(keyword20)因 products 表无 keywords 字段导致 matched 恒空已知不准; # 轨A不再依赖此权重,轨B展示参考可接受。不按此调分,真过关靠北哥抽检。 SCORE_WEIGHTS = { "title": 25, "emotion": 25, "selling": 25, "keyword": 20, "compliance": 5, } # ── AI 评委 7 维满分分布(倩倩姐2026-06-15拍板·与 llm_scorer._DIM_MAX/_score_prompt 三处同步)── # 6维AI读分(痛点18+情绪18+买点18+钩子15+标题13+真实感13=95) + 合规5 = 100 # "真实感"=富贵"很少提产品/前70%干货后30%植入"原则,替换旧机械维度"产品聚焦一件事(16)" AI_DIM_WEIGHTS = { "痛点人群精准": 18, "情绪张力": 18, "买点转化": 18, "开头钩子": 15, "标题点击力": 13, "真实感": 13, "compliance": 5, # 机械硬拦,不进 AI 评委 } # 过线分。倩倩姐2026-06-15拍板:80是临时观察值(AI评委给分克制,84文案实为合格)。 # 倩倩姐2026-06-15再次拍板:维持80临时线,不准擅自调85。方向=提生成质量顶分数,不降标准。 # 真过关靠北哥抽检;提质量方向=优化生成 prompt,不靠提高门槛凑数。 QUALITY_PASS_SCORE = 80 # ── 文案去重阈值 ────────────────────────────────────────── DEDUP_TITLE_THRESHOLD = 0.82 # 标题相似度≥此值判重 DEDUP_TITLE_CONTENT_TITLE = 0.65 # 标题+正文联合判重时的标题阈值 DEDUP_TITLE_CONTENT_BODY = 0.72 # 标题+正文联合判重时的正文阈值 # ── 自动优化循环 ────────────────────────────────────────── MAX_OPTIMIZE_ROUNDS = 2 # 最多重生成轮次 # ── storyboard 分镜角色(枚举不写死数量)──────────────── # Q6: 北哥6张套路顺序 ①封面痛点大字 ②单品特写+品牌词 ③成分 ④质地 ⑤上脸对比 ⑥促单 PAGE_ROLES = [ {"role": "hook", "name": "封面痛点大字", "focus": "负责点击:强情绪大字标题压痛点,产品露出,真实生活场景,像用户主动分享,不像广告海报"}, {"role": "product_closeup", "name": "单品特写", "focus": "负责种草锚点:单品高清特写+品牌词自然植入,第2/6张都带品牌词,强化记忆"}, {"role": "ingredient", "name": "成分拆解", "focus": "负责信任:核心成分信息、作用说明,避免医疗化和绝对化表达,信息清晰可信"}, {"role": "texture", "name": "质地展示", "focus": "负责种草:质地近景、涂抹过程、肤感说明,真实手部/桌面/日常光线"}, {"role": "applied_proof", "name": "上脸对比", "focus": "负责证明:可感知上脸效果,展示涂抹前后质地变化(不做肤色变白/瑕疵消失等违规暗示),第5张"}, {"role": "closer", "name": "促单收尾", "focus": "负责转化:转化句+品牌词,引导搜索品牌词成交,软性收尾不硬广,第6张再带一次品牌词"}, # 扩展角色(8张链路用) {"role": "pain_scene", "name": "痛点共鸣", "focus": "负责共鸣:展示目标人群的真实困扰和使用前情境,但不做功效前后对比"}, {"role": "social_proof","name": "信任背书", "focus": "负责背书:多人反馈、囤货、复购等真实社交证据"}, {"role": "scenario", "name": "多场景演示", "focus": "负责代入:多场景使用展示,不做夸大效果承诺"}, {"role": "tutorial", "name": "使用教程", "focus": "负责降低门槛:简洁步骤、用量、注意事项"}, ] PAGE_ROLE_MAP = {r["role"]: r for r in PAGE_ROLES} # ── 生图风格预设(扒 image.js STYLE_PROMPTS:26-29)────────── # 按 style 参数选小红书风格调性,注入 base_prompt 的"视觉风格"行 STYLE_PROMPTS = { "xiaohongshu_cover": "小红书种草风,独立3:4图文海报/素材图,1024×1536构图,明亮干净,真实实拍质感,醒目中文短标题,文字在安全区内", "comparison": "小红书说明对比风,独立3:4图文海报/素材图,1024×1536构图,质地/场景/肤感左右或上下对比,信息层级清晰", "ingredient": "小红书成分科普风,独立3:4图文海报/素材图,1024×1536构图,成分卡片布局,浅色商务美妆风,避免医疗化表达", } STYLE_DEFAULT = "xiaohongshu_cover" # ── 叙事链路说明(扒 image.js planImageSet narrativeText:677-681)── # 按图数告诉模型整组图的种草节奏,让每张各司其职不雷同 NARRATIVE_BY_COUNT = { 3: "3张极速链路:第1张负责点击,第2张是按品类变化的核心证明页,第3张负责软性转化。", 6: "6张标准种草链路:封面点击、单品特写带品牌词、成分信任、质地种草、上脸证明、促单转化,每张画面和文字各司其职不重复。", 8: "8张沉浸测评链路:点击、痛点共鸣、单品特写、成分、质地、上脸证明、背书、软性转化。", } # ── 3套正交叙事策略(倩倩姐2026-06-15起草,北哥过目版)────────────── # A痛点先行/B场景先行/C成分背书先行,三套正交轴拉开差异 # 每套叙事链路注入 base_prompt 叙事链路段,替换 NARRATIVE_BY_COUNT 默认值 NARRATIVE_BY_STRATEGY = { "A": ( '【套A·痛点先行】整组基调:紧迫感、强对比、情绪共鸣,文字短促带感叹号,直戳"脸黄显疲惫""素颜不敢出门"。' '6张链路:①痛点暴击封面(强情绪大字直击暗黄/素颜焦虑)→ ②暗黄脸实拍对比(感叹号+对比词制造紧迫感)' '→ ③单品特写+品牌词 → ④成分为什么能救暗黄(成分拆解+信任) → ⑤上脸提亮实证 → ⑥"别再顶着黄脸早八"软性促单。' ), "B": ( '【套B·场景先行】整组基调:轻松、生活化、代入感,突出"快/省时/伪素颜自由",点到性价比不堆砌。' '6张链路:①"早八来不及"场景封面(生活场景钩子) → ②手忙脚乱通勤场景(代入早八焦虑)' '→ ③一抹搞定单品特写+品牌词 → ④养肤成分让你敢素颜 → ⑤30秒上脸效果 → ⑥"伪素颜自由+平价"软性促单。' ), "C": ( '【套C·成分背书先行】整组基调:专业、可信、真实测评感,强调成分逻辑+前后对比+像有用户实证背书。' '6张链路:①成分权威封面(核心成分信息锚定信任) → ②核心成分图解(作用说明+清晰可信)' '→ ③单品特写+品牌词 → ④使用前后时间线对比 → ⑤真实上脸细节 → ⑥"成分党闭眼入"软性促单。' ), } # ── 生图通道 ────────────────────────────────────────────── IMAGE_RETRY_ATTEMPTS = 3 IMAGE_RETRY_BACKOFF_BASE = 2.0 # 指数退避底数(秒) IMAGE_SIZE_DEFAULT = "1024x1536" # ── 生图合规负向约束(方法层常量,全品类共用,可扩展)─────────────────────── # 追加到每个 base_prompt 末尾,防模型脑补违禁词/真实品牌到包装 IMAGE_NEGATIVE_CONSTRAINTS = ( "【包装合规硬性禁止——必须严格遵守】" "①包装/瓶身/标签上禁止出现任何违禁词:美白/whitening/祛斑/brightening/" "医用/medical/drug/药妆/速效/instant,中英文全禁;" "②禁止脑补任何真实品牌名或logo(如水密码/WETCODE/兰蔻/SK-II等)," "产品包装只允许出现用户传入的指定品牌词,未传则画无字素瓶;" "③英文功效词(ANTI-AGING/TONE-UP/BRIGHTENING/FIRMING等)禁止印在包装;" "④如果提供了产品参考图,包装文字以参考图为准,不得自行添加或修改任何文字。" "⑤背景纯净:禁止出现电子设备/笔记本电脑/键盘/手机/桌面杂物等无关物体(参考图若含此类背景一律不沿用)," "只保留浅色简洁台面或产品定制场景,主体聚焦产品本身。" ) # ── 飞轮信号权重(初始默认,北哥可校准)──────────────── FLYWHEEL_WEIGHTS = { "text_select": 3, "image_select": 3, "approve": 5, "reject_with_reason": -3, "regenerate": -1, } FLYWHEEL_LOOKBACK = 50 # 聚合最近N条事件 FLYWHEEL_COLD_START = 5 # 信号不足N条时用产品档案冷启动