|
|
@@ -30,7 +30,7 @@ MODALITY = ["视频", "图片"] # 被创作内容的形态(与教学帖本身
|
|
|
# 创作阶段意图轴(脊柱):灵感/选题/脚本 展开成创作者真会搜的词(query构造.md)。真实数据里
|
|
|
# "脚本"0次、但 开头/钩子/标题/封面/选题 各几十次——故用展开词,不用三个干阶段词。
|
|
|
STAGE_INTENT = {
|
|
|
- "灵感": ["找素材", "内容方向", "案例拆解", "灵感"],
|
|
|
+ "灵感": ["找素材", "内容方向", "案例拆解"],
|
|
|
"选题": ["选题", "爆款选题", "选题方向"],
|
|
|
"脚本": ["脚本", "文案", "开头", "钩子", "结构", "标题", "封面", "结尾"],
|
|
|
}
|
|
|
@@ -109,29 +109,30 @@ def main():
|
|
|
SHI = _nonleaf(idx, "实质", depths=(3, 4), under="理念") # 类目层,非元素
|
|
|
XING = _nonleaf(idx, "形式", depths=(3, 4), under="架构") # 类目层,非元素
|
|
|
POOL = _leaves(idx, "作用") + _leaves(idx, "感受") + _leaves(idx, "意图")
|
|
|
- print(f"实质 {len(SHI)} / 形式 {len(XING)} / 目的池 {len(POOL)} / 阶段意图 {len(INTENT)}")
|
|
|
+ print(f"实质 {len(SHI)} / 形式 {len(XING)} / 目的池 {len(POOL)} / 阶段 {len(INTENT)}")
|
|
|
|
|
|
def pick(seq):
|
|
|
return rng.choice(seq)
|
|
|
|
|
|
# 每家族:生成器 + 用到的轴(给前端标列)
|
|
|
- # 阶段意图=脊柱,每族必带;模态+知识类型固定收尾;前面配 实质/形式/目的 之一或组合
|
|
|
+ # 阶段=脊柱,每族必带;模态+知识类型固定收尾;前面配 实质/形式/目的 之一或组合
|
|
|
families = [
|
|
|
- {"key": "f1", "name": "实质 × 阶段意图", "axes": ["实质", "阶段意图", "模态", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"实质": pick(SHI), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f2", "name": "形式 × 阶段意图", "axes": ["形式", "阶段意图", "模态", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"形式": pick(XING), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f3", "name": "实质 × 形式 × 阶段意图", "axes": ["实质", "形式", "阶段意图", "模态", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"实质": pick(SHI), "形式": pick(XING), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f4", "name": "(作用/感受/意图) × 阶段意图", "axes": ["作用/感受/意图", "阶段意图", "模态", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"目的": pick(POOL), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f5", "name": "纯阶段意图", "axes": ["阶段意图", "模态", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f1", "name": "实质 × 阶段", "axes": ["实质", "阶段", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"实质": pick(SHI), "阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f2", "name": "形式 × 阶段", "axes": ["形式", "阶段", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"形式": pick(XING), "阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f3", "name": "实质 × 形式 × 阶段", "axes": ["实质", "形式", "阶段", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"实质": pick(SHI), "形式": pick(XING), "阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f4", "name": "(作用/感受/意图) × 阶段", "axes": ["作用/感受/意图", "阶段", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"目的": pick(POOL), "阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f5", "name": "纯阶段", "axes": ["阶段", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
]
|
|
|
- # 各部件按固定顺序拼成原串(内容维度在前,阶段意图+模态+知识类型固定收尾)
|
|
|
- order = ["实质", "形式", "目的", "阶段意图", "模态", "知识类型"]
|
|
|
+ # 各部件按固定顺序拼成原串(内容维度在前,阶段+模态+知识类型固定收尾)
|
|
|
+ order = ["实质", "形式", "目的", "阶段", "模态", "知识类型"]
|
|
|
|
|
|
- out = {"axis_values": {"实质": SHI, "形式": XING, "目的池": POOL, "阶段意图": INTENT, "模态": MODALITY, "知识类型": KTYPE},
|
|
|
+ # 阶段值存「分组结构」(STAGE_INTENT),前端按 灵感/选题/脚本 分组+缩进展示;其余轴是扁平数组
|
|
|
+ out = {"axis_values": {"实质": SHI, "形式": XING, "目的池": POOL, "阶段": STAGE_INTENT, "模态": MODALITY, "知识类型": KTYPE},
|
|
|
"families": []}
|
|
|
for fam in families:
|
|
|
seen, items = set(), []
|