正推构思 (v2.8)
> 第0关·获客视频商业逻辑基础设施 · 5关链路必经入口
> v2.8: 🔒四层下钻全员覆盖+V_voices强制锚定 / v2.7: 快速通道知识富化 / v2.0: 画像管家独立
> 触发词:@第0关 / @正推构思 / 拿到热搜 / 做一期关于XX的 / 用户说"创作"时由链路自动调用
> 画像+正推6步+钩子+结构推荐 → 写入 forward_deduction → 驱动下游4关
⛔ 角色定位
第0关管"我的生意逻辑是什么"(画像/正推/钩子配对/结构推荐)。前置扫描管"外面发生了什么"。双引擎并行——第0关先跑写 forward_deduction,前置扫描再跑写 signal/dedup。
> 🔧 v2.0 拆分:维护/投喂/验证/初始化四种模式 → 独立为 @画像管家。正推构思专注查询+被动两种模式。
📋 逐步骤汇报协议 🔒
查询模式共 10 个执行节点(Step1–6 主步 + Step1.5 四层下钻 + Step1.6 决策追踪采集🆕 + Step2.5 三锚定位 + Step3.5 数据注入)。每完成一个节点输出 「✅ 节点{X}/10 已完成 → 进入节点{X+1}/10」(X 顺序:Step1=1 → Step1.5=2 → Step1.6=3 → Step2=4 → Step2.5=5 → Step3=6 → Step3.5=7 → Step4=8 → Step5=9 → Step6=10)。
末步输出 「✅ 节点10/10(Step6 写回)已完成 · 自动移交 @创作-前置扫描(标准)/ @创作-选题结构(快路径)」。
📦 state 读写规约 🔒
creation-state.json = { current: {...}, history: [...] }
- 读:链路入口,通常为首次写入
- 写(Step 6):读取现有 state → 若 current.status=="done" 推入 history(保留5条) → 合并写 current,顶层不写 status
📦 forward_deduction 字段结构 🔒
{
"persona": {"id":"P-GX-002","name":"通勤产业驱动型","type":"刚需首套",
"l1":"刚需首套","pain_point":"离上班太远通勤累","credibility":"⭐⭐"},
"sub_persona_id": "P-GX-002",
"three_anchors": {"price_anchor":"🏠低锚+👥错锚",
"info_cocoon":"🎵抖音碎片+📊贝壳半专业",
"social_network":"🏝️孤岛型+🤐冷战"},
"deduction_6steps": {"result":"通勤半径内买对房", "persona":"刚需·小吴",
"pain":"离上班太远通勤累", "cause":"没按工作地反推通勤半径",
"old_way":"盲目看房不量通勤", "solution":"以产业盘为圆心锁通勤半径→匹配周边房源"},
"hook_lead_pairs": [
{"type":"痛点","hook":"是不是每天通勤累到不想看房?",
"lead":"从通勤痛点滑到\"以产业盘为圆心锁半径\"的正文第一段过渡",
"priority":"normal",
"fact_claim":"", "verification":{"status":"n/a","sources":[],"hedge_text":""},
"platform_variants":{"douyin":"通勤累到不想看房?","shipinhao":"每天通勤累到不想看房?"}},
{"type":"热点·情绪","hook":"(热点钩子)","lead":"(热点→本地痛点引线)","priority":"hot",
"fact_claim":"借热点写钩子用到的具体事实(带日期/数字/范围/引述)",
"verification":{"status":"unverified","sources":[],"hedge_text":""},
"platform_variants":{"douyin":"(禁数据)","shipinhao":"(可含数字+板块)"}}
],
"structures": [{"code":"K","name":"避坑清单","priority":1}],
"requirement_drill": {
"triggered": true,
"angle_type": "楼市信号灯",
"L0_5_intent": "真诚",
"L1_surface": "这个信号说了什么",
"L2_confusion": "为什么别人解读错了",
"L3_anxiety": "看到房价涨了想冲进去,手又缩回来",
"L3_sensory": "手伸出去又缩回来——怕追高又怕踏空",
"reversal_beat": {
"common_belief": "降价就是捡漏机会",
"data_truth": "降价的盘往往是最难卖的盘",
"position": "after_L3"
},
"L4_need": "要正确的判断框架",
"L4_5_ruler": "①价格锚定偏离 ②供需倍率(3.9x) ③在售周期(206天)",
"L0_seeds": ["降价的盘为什么不能碰","三信号识别真降价"],
"v_node_ids": ["V_原话_网上便宜现实买不到_01"]
},
"_meta": {
"trigger_hash": "a1b2c3d4",
"trigger_raw": "用户给的选题关键词原文",
"generated_at": "2026-07-11T22:00:00+08:00",
"stale": false,
"bounce_count": 0
}
}
> ⛔ 下游契约:选题结构读 persona(含 L2 子画像 id)+structures · 脚本生成读 deduction_6steps+hook_lead_pairs(含 lead/platform_variants/priority)+three_anchors+requirement_drill(v2.8 起 script 读 drill 映射情绪弧线) · 选题关 3.7 锐度闸门弹回→正推构思走重钻分支(_meta.bounce_count≤2 内重钻,≥2 降级) · 复盘闭环读 sub_persona_id(L2) 路由评论 → 画像📥验证记录 · 任一缺失 → 下游终止(requirement_drill v2.7 为可选,v2.8 升级为必写)。
Step 0:模式判断
| 触发 | 模式 | 路由 |
|---|---|---|
@第0关 {关键词} 或 @正推构思 {关键词} |
查询模式 | → Step 1 |
| 被 @创作-前置扫描 调用 | 被动模式 | → §被动模式 |
更新画像 / 维护 / 投喂客户故事 / 复盘 / 初始化 |
🔀 | → 自动路由到 Skill("画像管家") |
🔌 03_Output 快速通道
当 creation-state.json 的 current.from_output 存在时(由 创作入口 Step2.5 注入),跳过 Step1–5,走精简但保质量的快路径:
from_output 快速通道(v2.8 · 补知识深度 + V_voices)
│
├─ ✅ Step1 解析 → 跳过(卡片已有:标题/角度/人群)
├─ ✅ Step1.5 四层下钻 → 跳过(卡片已有:领域/决策锚)
├─ ✅ Step2 画像 → 跳过(卡片已有:人群)
├─ ✅ Step3 正推6步 → 跳过(卡片已有:角度=痛点+方案)
├─ ✅ Step4 钩子发散 → 跳过(卡片已有:钩子+引线)
├─ ✅ Step5 结构推荐 → 跳过(卡片已有:结构码)
│
├─ 🔒 Step3.5 数据验证 → 必须执行
│ 逐个验证 data_points 中的 [src:TYPE:REF]
│ → 实时查 DB(xuzhou_v3.db)→ 写入 creation-state
│
├─ 🔒 V_voices 强制注入 → 必须执行(v2.8 P0-2)
│ query_asset.py --type V --top 5
│ → 筛选 ≥2 条与卡片领域/情绪匹配的客户原话
│ → 注入 creation-state.consumed_v_voices
│ 无命中 → 标注 ⚠️ 并降级用 V_voices index 模糊匹配
│
└─ 🆕 Step3.6 知识富化 → 必须执行
query_asset.py --root junqi-vault --all --tag {卡片domain+关键词}
→ 返回 Top 10 相关 02_Wiki 节点(M1-M5+V)
→ 筛选 ≥2 个非数据节点(M2方法 > V原话 > M4场景 > M1概念)
→ 注入 creation-state.consumed_knowledge
为什么需要 Step3.6:快速通道跳过正推构思的 Step1.5(四层下钻)+ Step3.5(vault查知识),不补这一步产出只有 DB 数字、没有知识深度——"数据够硬但洞察浅"。卡片告诉你价格差 2400,但没告诉你这 2400 在客户未来五年里意味着什么。
知识富化执行:
1. 读卡片 domain + 标题 → 构建搜索词
→ domain=二手房交易 + "对比" + "刚需" + 小区名
2. query_asset.py --all --tag {词} --top 10
→ 跨 M1/M2/M3/M4/M5/V 全类型返回
3. 筛选 ≥2 个非数据节点(按优先级)
M2方法 > V原话 > M4场景 > M1概念 > M3规则 > M5卡片
**🆕 相关性校验门**(v2.7 补丁·防错配):
对每个候选节点,必须在注入前逐条回答:
```
✅ 这条知识对「当前客户」的「当前决策阶段」有帮助吗?
├─ V原话:必须同决策类型(观望/看房中/已定)且同情绪(恐/贪/不信…)
│ 不同客户的原话不可照搬进另一个客户的台词
├─ M2方法:必须适用当前场景(二选一不能用单盘深耕方法)
└─ M4场景:必须同场景类型(对比类vs单盘类vs政策类)
```
**触发过门策略**:
- 候选节点的决策类型/情绪/场景与卡片 mismatch → 剔除,不递补
- 剔除后剩余 <2 个 → 允许仅保留1个(不强凑),写进 consumed_knowledge 时标注 `relevance: low`
- 所有 candidate 全剔除 → 不注入,知识溯源留空,标记 `⚠️ 知识富化0命中`
4. 注入 creation-state
{
"consumed_knowledge": [
{"id": "M2_xxx", "type": "M2", "why": "解码真实需求"},
{"id": "V_xxx", "type": "V", "why": "客户原话锚点"}
]
}
下游铁律:consumed_knowledge 中 ≥1 个方法的洞察必须写进脚本台词(不是挂在溯源段当摆设)。
查询模式(主模式)
Step 1:输入解析
提取:目标人群(刚需首套/改善置换/卖房业主/学区/投资保值/养老终极置业,未指定→自动推断 L1)、主导核心需求(价格/通勤/学区/时点/资产/赡养/传承,用于选定 L2 子画像)、事件/主题、紧急程度(热搜→快路径 / 常规→标准)、is_hot 标志(选题词含 热搜/快反/突发/今天/刚发生 → true,供 Step4 热点分支判定;⚠️ 勿依赖 _meta.trigger_raw,后者 Step6 才写)。
- fact_claims 提取:选题含热榜/事件/借来的具体事实(带日期/数字/范围/引述)→ 逐条预填 fact_claims[],每条默认 verification.status="unverified"(核验规则见 hot-graft.md §热点事实双源核验铁律 + 审校收工 门9)。纯常识/定性选题 → 空。
📥 查询解析
人群(L1):[刚需首套 / 改善置换 / 卖房业主 / 学区 / 投资保值 / 养老终极置业 / 自动推断]
主导需求(L2):[价格 / 通勤 / 学区 / 时点 / 资产 / 赡养 / 传承 / 自动推断]
主题:[利率 / 新政 / 板块 / 砍价 / ...]
路径:[快路径 / 标准路径]
is_hot:[true / false](含 热搜/快反/突发/今天/刚发生)
fact_claims:[热榜/事件中借来的具体事实断言列表(带日期/数字/范围/引述),默认 unverified;纯常识/定性选题→空]
Step 1.5:客户需求四层下钻 🔒 🆕 v2.8 全员覆盖
> 🔗 消费 junqi-vault 的 M2 方法 + V 原话,不复制方法正文(守 BRIDGE 铁律③)。
> 🆕 v2.8:此前仅"客户问题型选题"触发,导致非客户问题型跳过深度引擎。从现在起全员覆盖。
触发判定:Step1 解析后,所有选题均进入本步,不再区分类型。快速通道(from_output)跳过本步(由 Step3.6 知识富化 + 🔒V_voices 补齐)。
目的:把"选题关键词/数据反常"解码为"真实需求 + 情绪锚点 + 判断标尺"。
选题类型适配表(按 Step1 解析的主题域自动映射):
| 选题类型 | L1·表面问题 | L2·认知困惑 | L3·情绪焦虑 | L4·真实需求 | L4.5·判断标尺 |
|---|---|---|---|---|---|
| 楼市信号灯 | 这个信号说了什么 | 为什么别人/媒体解读错了 | 误读这个信号会亏多少、错过什么 | 正确的判断框架 | 信号→决策的3步验证法 |
| 数据周报 | 本周数字变了多少 | 哪个数字被所有人忽略 | 忽略这个数字的真实后果 | 本周数据的正确解读姿势 | 三个数字一横一纵交叉看 |
| 板块解码 | 这个板块数据怎么样 | 为什么隔壁板块完全不一样 | 选错板块的三五年代价 | 板块选择的底层逻辑 | 产业/人口/库存三围体检 |
| 楼盘真相 | 这个盘价格/品质怎么样 | 为什么看起来便宜/贵 | 踩坑的人最后悔什么 | 这个盘的隐藏规则 | 真成交/在售周期/业主换手率 |
| 客户问题 | 客户字面问什么 | 从哪一步失去判断力 | 真正怕的损失 | 要判断框架而非答案 | 价格锚定偏离/供需倍率/在售周期 |
动作(消费 vault,不复制正文):
1. 取解码模板(M2):
bash
C:/Users/87800/.workbuddy/binaries/python/versions/3.13.12/python.exe \
"D:/Users/87800/Documents/Claw/junqi-vault/scripts/query_asset.py" \
--root "D:/Users/87800/Documents/Claw/junqi-vault" --type M2 --tag 下钻法
→ 定位 M2_客户需求四层下钻法 → Read D:/Users/87800/Documents/Claw/junqi-vault/02_Wiki/M2_methods/M2_客户需求四层下钻法.md 取完整方法体。
2. 按选题类型适配表对该选题逐层下钻(必钻,不可跳层):
- L0.5 意图确认:判选题意图(真诚/反讽/试探)。
- L1 表面问题:按适配表映射,不急于答。
- L2 认知困惑:点出"大多数人在这个问题上卡在哪里"。
- L3 情绪焦虑:点出"最怕发生什么"——必须从 V_voices 找一句客户原话锚定(见③)。
- L4 真实需求:要的是判断框架,不是信息。
- L4.5 判断标尺:3 个可操作的信号(必须含至少 1 个 DB 可查的量化指标)。
- L0 资产转化:这层洞察能衍生哪些选题系列。
- 🆕 L3.5 反转位:在 L3(焦虑)和 L4(需求)之间,插入一个"你以为 X,其实 Y"的翻转——把大众常识和数据真相正面撞一下。这是结构必需节拍,缺则内容深而不跌。
⑤ 🔒 L3.5 反转位生成(v2.8 尾·防深而不跌):
从 L2(认知困惑)中提取"大众常识"→ 从 L4.5(判断标尺)中提取"数据真相"→ 构造一个翻转句。格式:
common_belief: "大多数人以为的常识(≤15字)"
data_truth: "数据告诉你的相反结论(≤15字)"
例:
- 矿井供冷:常识="废弃矿井是工业伤疤" / 真相="它是全中国最便宜的空调"
- AI 房贷:常识="AI 会让收入降低" / 真相="现在签 30 年房贷的人,赌的不是 AI 不来,是 AI 来的时候自己有 12 个月现金"
- 🔒 V_voices 强制锚定 L3(v2.8 新增,替代旧版"仅客户问题型拉 V"):
bash C:/Users/87800/.workbuddy/binaries/python/versions/3.13.12/python.exe \ "D:/Users/87800/Documents/Claw/junqi-vault/scripts/query_asset.py" \ --root "D:/Users/87800/Documents/Claw/junqi-vault" --type V --emotion 恐 --stage 看房中
→ 命中 ≥1 条 V 原话作为 L3 情绪锚点。若--emotion 恐无命中→换焦虑、不信、犹豫重试。强制要求 ≥1 条 V 命中,无则标⚠️ V_voices 0命中(不阻断但下游标注)。记录所有命中的v_node_ids。
🔒 感官转译规则(v2.8 尾·防体感蒸发):
从匹配的 V 原话中提取 ≥1 个具体感官瞬间(动作/身体感受/场景细节/原话里的比喻),直接写进 L3_anxiety 和 L3_sensory 字段。
```
禁止写成抽象情绪标签:
❌ "用户害怕高位接盘"
❌ "用户感到焦虑不安"
必须写成感官画面:
✅ "看到房价涨了想冲进去,手又缩回来" ← 动作
✅ "置业顾问说再不买就没了,手心出汗但不敢签" ← 身体感受
✅ "像站在悬崖边,往前一步是亏,退后一步是错过" ← 原话比喻
> ⛔ 若 V 原话本身缺乏感官细节 → 从上下文推断一个具象场景,标注 `[推断]`。**绝不允许**回退到抽象总结。
4. 把下钻结论写进 `forward_deduction.requirement_drill`:json
"requirement_drill": {
"triggered": true,
"angle_type": "楼市信号灯",
"L0_5_intent": "真诚",
"L1_surface": "按适配表映射",
"L2_confusion": "受众卡在哪一步",
"L3_anxiety": "感官画面(动作/身体感受/场景)",
"L3_sensory": "从V原话提取的具象瞬间(手缩回来/手心出汗/站在悬崖边)",
"reversal_beat": {
"common_belief": "大众常识",
"data_truth": "数据真相",
"position": "after_L3"
},
"L4_need": "要什么判断框架",
"L4_5_ruler": "①信号A ②信号B ③信号C(至少1个含DB量化值)",
"L0_seeds": ["衍生选题1","衍生选题2"],
"v_node_ids": ["V_原话_xxx_01"]
}
```
下游契约:选题结构(S2)读 requirement_drill.v_node_ids → 调 query_asset.py --type V 拉原话做决策校验。脚本生成(S3)读完整 drill → 按 L1→L4 映射情绪弧线 + 在 L3→L4 之间插入 reversal_beat 作为脚本必需反转节拍。
🔍 需求四层下钻 · {angle_type}
L0.5 意图:{真诚/反讽/试探}
L1 表面:{...} L2 困惑:{...} L3 焦虑:{...}
L4 需求:{...} L4.5 标尺:{...}
L0 选题种子:{N}篇
V原话锚定:{v_node_ids}(≥1条)
🔄 弹回重钻分支(v2.8 · 接收端·防死循环)
> 由选题关 Step 3.7 锐度闸门弹回触发。弹回携带 divergence_seed 变异源——改变重钻输入采样,使二次产出≠首次,打破死循环。
触发判定:forward_deduction._meta.bounce_count > 0 且存在弹回信号(选题关传入 target_layers + divergence_seed)。
变异源处理:
| divergence_seed | 动作 | 影响层 |
|-----------------|------|--------|
| v_rotate | 换 2 条 V_voices 样本(跳过首次命中的 v_node_ids) | L3, L3_sensory, reversal_beat |
| db_refresh | 重查 DB 取新量化值 | L4_5, reversal_beat |
| alt_angle | 换 L2 切角(从适配表旁路一个候选切角) | L2, L3, L3_sensory, reversal_beat |
重钻规则:
1. 只重钻 target_layers 指定的层级(级联),未指定层沿用首次结果
2. reversal_beat.position 固定 "after_L3",禁止漂移
3. 重钻后更新 requirement_drill,写回 forward_deduction
4. _meta.bounce_count +1
防死循环:bounce_count ≥ 2 仍不通过 → 标记 锐度待补 降级进下游,不阻塞管线。
🔄 弹回重钻 · 第{bounce_count}次
弹回原因:{fail_reasons}
变异源:{divergence_seed} → 重钻层:{target_layers}
→ 更新 requirement_drill → 回传选题关 3.7 重判
Step 1.6:决策追踪采集 🔒 🆕 v2.9
> 依赖:.workbuddy/skills/_shared/creation_trace_collector.py + .workbuddy/data/clue-library.json
> 目的:记录创作时的决策依据,供复盘时校准判断力(非验证规则效果)
触发条件:clue-library.json 存在 → 执行;不存在 → 静默跳过
动作:
1. 加载注入面板:from creation_trace_collector import load_injection_panel; panel = load_injection_panel()
2. 向用户展示 Top4 线索面板(参考,非指令——用户可随时覆盖)
3. 采集决策:①参考了哪几条线索 ②每条做了什么 ③覆盖了哪几条+理由 ④发布前预期区间 ⑤特殊情境备注
4. 构造 trace:from creation_trace_collector import collect_trace; trace = collect_trace(video_id, user_input)(内部调 _validate,失败抛 ValueError→提示重填)
5. 不在此处写盘——将 trace 暂存会话,Step6 末尾一并写入
> 不变量:①consulted_clues ID 必须存在于 clue-library.json ②decisions.clue_id ⊆ consulted_clues ③overrides 与 consulted 互斥 ④预期间含 shipinhao_completion + douyin_2s_drop ⑤所有字符串非空
输出:
📝 决策追踪采集完成 · {N}条参考 · {M}条覆盖 · 预期区间已记录
Step 2:画像匹配 + 质量自检门
Read references/persona-library.md → 先按人群匹配 L1 主原型(指定→直接取,未指定→推断),再按「主导核心需求」从该类下选定 L2 子画像(persona.id 取 L2 子画像 ID,如 P-GX-002;同时写顶层 sub_persona_id)。子画像缺数据(🔴级)→提示补料,不阻断。
🔒 画像质量自检门(Q1/Q2/Q3·不阻断·只分级)
> ⚠️ 术语澄清:此处 Q1/Q2/Q3 = 画像质量可信度等级(Q1最高),与上文画像层级 L1 主原型 / L2 子画像 是不同概念,勿混。
扫描 triggers/active/ → Read index.json 按 {人群} {痛点} 匹配触发器 → Read 命中文件提取内容。索引若超过 24h 未更新,先运行 python junqi-vault/scripts/rebuild_index.py --root D:/Users/87800/Documents/Claw。
| 级别 | 条件 | 可信度 | 标注 |
|---|---|---|---|
| 🟢 Q1 | 04客户问题≥3条 或 B类≥1+04≥1 | ⭐⭐⭐ | ✅Q1(triggers{N}条) |
| 🟡 Q2 | 04客户问题1-2条 或 B类1条 | ⭐⭐ | ✅Q2(triggers{N}条) |
| 🔴 Q3 | 0条 | ⭐ | ⚠️Q3(现场生成) + 提示补料 |
> L3 不阻断——分级标注让链路能跑,下游知道画像"未经证实",审校重点查。L3 画像在审校收工 Step 7 自动回投 triggers。
🔍 画像质量自检
搜索:04客户问题(57条) + 00钩子B/D类
关键词:{人群} {痛点}
命中:04 {N}条 + 00 {M}条
判定:🟢Q1 / 🟡Q2 / 🔴Q3 · 可信度 ⭐⭐⭐/⭐⭐/⭐
Step 2.5:三锚定位 🔒
Read references/psychographic-depth.md → 查三锚定位(价格锚点/信息茧房/社会网络)→ 注入正推6步。
🎯 三锚定位:{L2-ID} {子画像名}(L1:{主原型})
价格锚点:{锚点类型}
信息茧房:{信息源}
社会网络:{网络类型}
→ 正推6步调整:③痛点破旧锚 · ④原因破信息茧房 · ⑤老办法破熟人经验 · ⑥方案匹配社会网络 · CTA定制
🔒 three_anchors 编码校验规则(v2.8.3 · P0.7)
emoji 编码须严格合法,与 persona.type 一致:
价格锚 ∈ {🏠低锚, 🏡中锚, 🏦高锚}
信息茧房 ∈ {🎵抖音碎片, 📊贝壳半专业, 📺新闻通勤}
社交网络 ∈ {🏝️孤岛型, 👥错锚, 🔗圈层型}
❌ "🏠低锚+👥错锚" 中 emoji 与 persona.type 不匹配
✅ persona.type=="刚需首套" → 价格锚=🏠低锚
判定:编码非法(不在合法集 / 与 persona 不一致)→ 生成失败,须重写
Step 3:正推6步匹配
Read references/forward-deduction-map.md → 按主题匹配(精确→模糊→现场生成)。
🔒 deduction_6steps 五子属性规则(v2.8.3 · P0.7):
① result(结果承诺):须"动作+可交付物",禁止空洞态度
② pain(痛点):须含感官画面(动作/身体感受/场景),禁止抽象标签
③ cause(原因):须专业判断(机制/数据因果),禁止常识复述
④ old_way(老办法):须带"后果锚"——老办法→导致的可量化损失
⑤ solution(方案):须3-5条可执行步骤,每条含具体动作+量化标尺
任一子属性不合格 → 整段重写(divergence_seed="sixstep_rewrite")
📐 正推6步
① 最终结果:[用户要什么]
② 用户画像:[谁在乎这件事]
③ 痛点:[什么让他们焦虑——拍出画面]
④ 底层原因:[为什么——专业判断]
⑤ 老办法:[他们现在怎么做——制造认知冲突]
⑥ 解决方案:[你能给什么——3-5条可执行]
来源:[精确匹配 / 画像推导 / 现场生成]
Step 3.5:数据注入 🔒 四级路由
> 📖 完整协议 + SQL 模板 → Read ../_shared/db-access-guide.md §二+§三。
> 画像中的 {{tag}} 占位符必须替换为当前真实数据。
四级路由:①本地SQL(xuzhou_v3.db) → ②常青库(wiki/) → ③联网搜索 → ④Agent经验值。
口诀:均价成交→①SQL / 利率税费→②常青库→超30天→③联网 / 无匹配→标注⚠️缺失,不伪造数据。
Step 4:钩子+引线对生成 🔒(源头耦合)
① 热点判定:读 Step 1 已解析的 is_hot(≠_meta.trigger_raw,后者 Step6 才写)。
② 钩子素材:
- is_hot=true → Read references/hot-graft.md,调「热点三棱镜解析」(情绪/争议/反差/可迁移点)→ 提炼热点钩子素材,标 priority:"hot"
- is_hot=false → 用正推6步 ③痛点/④原因/⑤老办法/①结果 作素材,priority:"normal"
③ 产出 hook_lead_pairs(每条钩子必配 lead,禁止只产开场不产过渡):
- 每条生成 platform_variants:抖音禁数据陈述(铁律#9)/ 视频号可用数字+板块
- lead = 该钩子→正文第一段的引线设计(桥接逻辑+情绪铺垫),供脚本生成 Step3 消费
🔒 热点·情绪类 hook 结构规则(P0.6 · 防两层直跳):
type=="热点·情绪" 的 hook 必须三层递进,禁止热搜→本地两层跳:
```
① 热搜是什么(一句话交代事实,带具体数字/元素)
② 核心提炼(抽象出与本地受众相关的通用规律)
③ 本地映射(落到徐州具体板块/楼盘/人群决策)
❌ "天津北京1.5h房租省一半上热搜——徐州大庙20分钟"(缺②提炼层)
✅ ①天津北京1.5h房租省一半 → ②说的是用通勤换房价 → ③大庙到新城20分钟
判定红线:hook 或 lead 出现"热搜X→本地Y"直接映射无中间层 → 不合格
时长约束:①②总共15秒内(一句话热点+半句话提炼)→ 立即落③本地
```
🔒 lead 生成规则(P0.5 · 防元语言):
lead 必须是脚本可直接念出的真实过渡台词,禁止写成对 Agent 的描述性注释。
判定:含"引出/过渡到/→/承接/铺垫/引入"等元语言标记 → 🔴不合格
❌ "热搜跨城通勤→引出徐州大庙的真实账本"(元语言·Agent 被锁死)
✅ "你有没有想过——徐州也有这种地方?大庙到新城区只要20分钟?"
合格标准:lead 包含反问钩子(?/吗/呢)或具体数字冲击
- is_hot=true 的 hot pair:从 fact_claims 取对应事实断言填入 fact_claim,并生成 verification{status, sources[], hedge_text}(默认 unverified,待审校收工 门9 双源核验);纯定性热点(如"XX刷屏")fact_claim 可空但须标 status="n/a"
- is_hot=false 的 normal pair:fact_claim=""、verification.status="n/a"
④ 总数 6-12 对,热点路径默认热点对置顶
🪝 钩子+引线对(节选)
【痛点·normal】hook:"{从③}" | lead:"{从③}→{⑥方案}的过渡" | 视频号:"{含数字}" | fact_claim:"" | verification:{status:n/a}
【热点·hot】hook:"{热点三棱镜}" | lead:"{热点}→{本地痛点}的过渡" | fact_claim:"{具体事实断言}" | verification:{status:unverified} | 抖音:"{情绪钩禁数据}"
```
🔒 platform_variants 平台铁律耦合(v2.8.3 · P0.7):
各平台 variant 须遵守铁律#9 源头耦合:
douyin : 禁裸数字/板块名(钩子允许除外),口语化
shipinhao: 可含数字+板块,但须与 base 事实一致
红线:variant 不得为迎合平台而篡改 base hook/lead 的事实或数字
❌ douyin variant 含"铜山区均价8500"(裸数字违规)
✅ douyin:"不用1.5小时,只要20分钟"(口语化,无裸数)
判定:违反平台铁律 或 事实漂移 → 重写该 variant
### Step 5:结构推荐
Read `references/hook-matching.md` §结构配对表 → 按钩子类型+主题推荐 A-O 结构(2-3 个候选)。
🏗️ 结构推荐
| 优先级 | 结构 | 理由 | 情绪配方 |
|:--:|------|------|---------|
| 1 | X·名称 | 钩子匹配+数据密度 | 😰→🤔→😌 |
### Step 6:写回 + 自动路由 🔒
写入 `current.forward_deduction`(合并模式),设置 `current.status="forward_complete"`。**同时写入 `_meta` 子对象**:`trigger_hash`(选题词归一化 SHA1 前8位,算法见下)、`trigger_raw`(选题词原文)、`generated_at`(ISO8601 当前时区)、`stale=false`;默认写 `current.web_verify_pending=false`(v2.4 双源核验·门9 阻断时由审校收工置 true)。
> 📎 `_meta.trigger_hash` 算法:`re.sub(r'[\s\p{P}]+','', 选题词).lower()` → SHA1 → 取前8位(与 `创作-前置扫描/scripts/check_fd_freshness.py` 同一算法,保证一致性)。
✅ 第0关完成 · 画像[{P-ID}] · 可信度[{⭐}]
正推6步:痛点[{pain}] · 方案[{solution}]
钩子+引线对:[{N}]对 · 结构:[{M}]个
**路径判定**(复用 Step1 的 `is_hot`,与 Step4 同源):
> `is_hot=true` → 快路径:`Skill("创作-选题结构")`
> 否则 → 标准路径:`Skill("创作-前置扫描")`
🔒 禁止停在移交文本等用户。
> 🆕 **Step 6.1:决策追踪写回(v2.9)**
> 若 Step 1.6 采集了 `creation_trace`,在写回 creation-state 后追加:
> ```python
> from pathlib import Path; import sys
> sys.path.insert(0, str(Path("C:/Users/87800/.workbuddy/skills/_shared")))
> from creation_trace_collector import patch_trace
> patch_trace(video_id, trace)
> ```
> 失败则打印 ⚠️ 警告,不阻断写回(追踪是增强项,非必须项)。
---
## 被动模式
被 @创作-前置扫描 调用 `Skill("正推构思", "匹配 {关键词}")`。
**返回(精简版)**:
🎯 第0关匹配
画像:[P-ID] {人群}
正推摘要:痛点={} · 方案={}
推荐钩子:[TOP3] · 推荐结构:[TOP2]
---
## 创作链路集成
创作链路 v3.0
数据流:
triggers(B/D/F类) ──→ 正推构思(画像增强) ──→ 脚本生成(顾客语言注入)
数据库(xuzhou_v3.db) ──→ 正推构思(数据注入) ──→ 脚本生成(真实数字注入)
标准创作:
@创作入口 → @正推构思(查询模式) → @创作-前置扫描
→ @创作-选题结构 → @创作-脚本生成 → @创作-审校收工
热点快反:
@第0关 XX热搜 → 正推构思(查询) → 快路径 @创作-选题结构 → 脚本生成 → 审校收工
画像维护:@画像管家(独立技能·自动路由)
```
示例
示例1|标准:@正推构思 刚需首套怕利率再降 → Step1 解析(标准) → Step1.5 四层下钻(信号灯适配表)→ Step2 画像🟢Q1 → Step2.5 三锚 → Step3 正推6步 → Step3.5 注入月供(xuzhou_v3.db) → Step4 钩子+引线对 6-12 → Step5 结构 K·避坑清单 → Step6 写回→路由前置扫描
示例2|热点快反:@第0关 今天央行降准 → is_hot=true → 快路径直路由 选题结构(跳过前置扫描)
示例3|被动:被前置扫描调用 → 返回精简版(画像+正推摘要+TOP3钩子+TOP2结构)
版本
| 版本 | 日期 | 变更 |
|---|---|---|
| v2.8.2 | 2026-07-29 | P0.6 热点类 hook 结构补丁:热点·情绪类 hook 三层递进规则(释义→提炼→映射·15秒内);联动选题结构3.7闸门R5+hot_rewrite路由 |
| v2.8.1 | 2026-07-29 | P0.5 leave漏网字段补丁:hook_lead_pairs.lead 生成规则(禁元语言/必须可念);联动选题结构3.7闸门R4+lead_rewrite路由 |
| v2.9 | 2026-07-29 | 决策追踪采集:新增 Step1.6(clue-library 面板→采集决策→暂存trace)+ Step6.1(patch_trace 写回 publish_log);节点数 9→10 |
| v2.7 | 2026-07-28 | 快速通道知识富化:from_output 新增 Step3.6——数据验证后强制 query_asset 拉 ≥2 个非数据节点(M2/V/M4优先),注入 consumed_knowledge。修快速通道只有数据没有知识深度的缺口。 |
| v2.5 | 2026-07-27 | 单库收口+四层下钻:删除灵感田Skill,消费端全改 junqi-vault直调(Step1.5 query_asset.py、Step2 triggers index.json、Step3.5 SQL→vault);新增Step1.5四层下钻(M2+ V原话)。 |
| v2.3 | 2026-07-24 | 钩子+引线对源头耦合:hooks→hook_lead_pairs(含 lead/platform_variants/priority);Step4 改写产"钩子+引线对",热点分支读 Step1 is_hot(非 _meta.trigger_raw);所有选题根治源头平+桥弱 |
| v2.4 | 2026-07-24 | 热点事实双源核验:hook_lead_pairs 每条加 fact_claim+verification{status,sources[],hedge_text};Step1 提 fact_claims[] 默认 unverified;Step4 挂进 hot pair;审校收工 门9 强闸收口;热点当触发器非信源 |
| v2.0–v2.2 | 2026-07 | F1-F5修复/常见问题/画像拆分(详见历史审查报告,行数 523→222→298) |
❓ 常见问题与反模式
- Q1 卡住不返回? 先查灵感田;超时→降级跳过灵感田用画像库;画像管家不可用→默认模板继续。
- Q2 画像选错? Step0 说"用 P-GX-001"切换,或
@画像管家 维护后重路由。 - Q3 方向重复? 排重归前置扫描,正推只给最匹配方向。
- 🚫 反模式:❌跳过Step0画像匹配 / ❌正推6步伪造数据 / ❌路由画像管家漏模式参数