品牌故事最难治理的不是修辞,而是"这句话到底从哪里来"。创始人口述往往把年份、地点、情绪、失败尝试和营销愿望混在一起;写作者为了让故事顺滑,会补季节、补经历、补社会关系。等到详情页上线,读者看到的是完整叙事,品牌却说不清哪些是事实、哪些是推断。
本文以「两双毛袜」材料为例,建立一套可查询、可校验的品牌事实资产。原始评测记录采于 2026-10-15:十款模型各对同一道题生成一次,写作温度 0.7;调用层使用千木SilvaMux统一接入并切换 OpenAI 兼容模型,但该工具不参与事实核验和评分;非参赛裁判 gpt-5.6-sol 单次评分。文中保留分数与输出证据作为建模案例,但它们只属于单题、单次、单裁判记录,不用于做通用能力结论。

文章目录
-
- 从口述稿切出事实原子
- 给资产添加关系、禁用项与叙事权限
- 用结构化清单驱动成稿校验
- 一个可落库的数据模型
- 从口述到品牌故事:编辑演示,不是模型原稿
- [L1、L2、L3 三层材料](#L1、L2、L3 三层材料)
- 让原始样本反向暴露资产缺口
- 把事实资产组装成叙事包
- 建立变更审批与发布追溯
从口述稿切出事实原子
第一步不是写故事,而是把一句话拆成最小可核验单元。此案例至少有这些事实原子:外婆在浙江诸暨织袜 40 年;2019 年因手抖无法继续织袜;创始人 2021 年辞职回家;旧织机被搬进厂房;旧织机产能有限;量产使用新机器;每款第一双样袜仍由旧织机制作;2023 年冬天有买家留言"穿上想起我奶奶";留言被印在包装盒上。
每个原子都应带五类属性:
| 字段 | 含义 | 示例 |
|---|---|---|
fact_id |
稳定编号 | F-LOOM-003 |
claim |
可直接核验的主张 | 量产使用新机器 |
source |
来源定位 | 创始人口述第 4 段 |
status |
已确认、待核、禁用 | 已确认 |
allowed_scope |
可出现的渠道与说法 | 电商详情页,可直述 |
"2019 年冬天"必须拆开处理:原材料给了 2019 年,但没有给"冬天";年份可用,季节不可用。相反,"2023 年冬天"在材料中有依据,可以整体入库。地点也一样:若只知道外婆在浙江诸暨织袜,不能自动推出创始人"从杭州辞职"。事实资产的价值,就是阻止语法流畅掩盖证据断裂。
给资产添加关系、禁用项与叙事权限
单个事实还不够,品牌故事依赖关系。可用关系包括:旧织机 --用于--> 首双样袜、新机器 --用于--> 量产、买家留言 --印于--> 包装盒。最关键的是把"旧织机"和"量产"明确设为互斥关系:任何"每双都由外婆旧织机织成"的句子,都会同时违反两条资产。
再建立禁用资产。本题明确不能出现棉花产地,不能写编号 2000 双后放弃的失败尝试,也禁用"匠心""传承""温度"三个词。禁用不代表信息为假:它可能真实,但因营销风险或叙事策略而不得在该渠道使用。因此 status=禁用 与 status=虚假 必须分开,否则后续人员可能误以为禁用信息可以在换一种措辞后重新加入。
情绪材料也要建模。买家留言"穿上想起我奶奶"是原话,可以引用;但不能据此扩写成"她当场哭了""她从小由奶奶带大"。可为引语设置 quote_exact=true,要求直接引用时不改字;若做转述,则保留原意并标注转述。
用结构化清单驱动成稿校验
小团队不必先上图数据库,用 Python 字典也能完成最小实现。下面的代码只做确定性检查,不替代语义审核:
python
FACTS = {
"F-TIME-2019": {"required": "2019", "status": "allowed"},
"F-TIME-2021": {"required": "2021", "status": "allowed"},
"F-TIME-2023": {"required": "2023", "status": "allowed"},
"F-OLD-LOOM": {"required": "第一双样袜", "status": "allowed"},
"F-MASS": {"required": "量产", "status": "allowed"},
}
FORBIDDEN = ["匠心", "传承", "温度", "杭州辞职", "2019 年冬天", "百年"]
def validate_story(text: str) -> list[str]:
issues = []
for fact_id, item in FACTS.items():
if item["required"] not in text:
issues.append(f"缺少资产 {fact_id}: {item['required']}")
for phrase in FORBIDDEN:
if phrase in text:
issues.append(f"命中禁用或无来源表达: {phrase}")
if "旧织机" in text and "量产" in text and "新机器" not in text:
issues.append("旧织机与量产关系不完整,需明确新机器承担量产")
if len(text) > 400:
issues.append(f"正文 {len(text)} 字符,超过 400")
return issues
实际资产库还应保存证据片段,而不只保存关键词。关键词检查抓不到"所有袜子都从那台老机器上下来"这种同义误写,需要人工或受约束的语义核验。正确流程是:先选资产,再生成草稿,然后逐句绑定 fact_id;绑定不了的句子进入"待证区",不能因为写得好就默认放行。
一个可落库的数据模型
关键词清单只能做门禁,真正的事实资产需要同时表达事实原子、来源、许可范围和叙事关系。下面是最小可运行结构;它不调用外部服务,也不替人判断授权是否有效。
python
from dataclasses import dataclass, field
@dataclass(frozen=True)
class FactAtom:
fact_id: str
claim: str
source_id: str
status: str
allowed_channels: tuple[str, ...]
quote_exact: bool = False
forbidden_inference: tuple[str, ...] = ()
@dataclass(frozen=True)
class Relation:
subject_id: str
predicate: str
object_id: str
source_id: str
relation_type: str # 原话关系、审核确认关系、编辑推断
@dataclass
class StoryPackage:
channel: str
required_facts: list[str]
optional_facts: list[str]
forbidden_facts: list[str]
relations: list[Relation] = field(default_factory=list)
FACTS = {
"F-2019": FactAtom("F-2019", "2019年外婆因手抖无法继续织袜", "题面口述:2019年与手抖事实", "题面可核/授权待核", ("本题详情页演示",), forbidden_inference=("2019年冬天",)),
"F-2021": FactAtom("F-2021", "2021年创始人辞职回家", "题面口述:2021年辞职回家事实", "题面可核/授权待核", ("本题详情页演示",), forbidden_inference=("从杭州辞职",)),
"F-OLD": FactAtom("F-OLD", "旧织机制作每款第一双样袜", "题面口述:旧织机与样袜事实", "题面可核/授权待核", ("本题详情页演示",)),
"F-MASS": FactAtom("F-MASS", "量产使用新机器", "题面口述:新机器量产事实", "题面可核/授权待核", ("本题详情页演示",)),
"F-QUOTE": FactAtom("F-QUOTE", "穿上想起我奶奶", "题面所载买家留言(原始授权材料缺失)", "题面可核/授权待核", ("本题详情页演示",), quote_exact=True),
}
RELATIONS = [
Relation("F-OLD", "用于", "首双样袜", "题面口述:旧织机与样袜事实", "题面明示关系"),
Relation("F-MASS", "用于", "量产", "题面口述:新机器量产事实", "题面明示关系"),
Relation("F-QUOTE", "印于", "包装盒", "题面口述:留言与包装动作", "题面明示关系"),
]
def build_package(channel: str, ids: list[str]) -> StoryPackage:
unknown = [fact_id for fact_id in ids if fact_id not in FACTS]
if unknown:
raise KeyError(f"未知事实原子: {unknown}")
disallowed = [fact_id for fact_id in ids if channel not in FACTS[fact_id].allowed_channels]
if disallowed:
raise ValueError(f"渠道 {channel} 无许可: {disallowed}")
return StoryPackage(channel, ids, [], [], RELATIONS.copy())
if __name__ == "__main__":
package = build_package("本题详情页演示", ["F-2019", "F-2021", "F-OLD", "F-MASS", "F-QUOTE"])
print(package.required_facts)
这套结构把四件事分开:claim 回答"说什么",source_id 回答"从哪里来",allowed_channels 回答"在哪里能说",Relation 回答"事实之间怎样连接"。代码中的来源定位与"本题详情页演示"许可均是方法演示标签,不是现实档案编号或已经取得的授权;真实业务还要保存来源版本、授权人、授权期限和撤回状态。本例没有这些原始材料,因此所有授权状态保持待核。

从口述到品牌故事:编辑演示,不是模型原稿
下面演示一条端到端路径,所有产物均由本文编辑按已确认事实组装,不冒充十款模型中的任何一份原始答卷。
- 切原子。 把"2019 年""因手抖无法继续织袜"绑定
F-2019,不加入季节;把"2021 年辞职回家"绑定F-2021,不加入原工作城市。 - 查渠道许可。 选择电商详情页包,只取允许用于
detail的事实;真实项目还应检查买家留言授权是否覆盖详情页。 - 选叙事关系。 旧织机对应首双样袜,新机器对应量产。二者并列即可;如果来源没有明确"因为产能低所以换新机器",编辑不能擅自升级成因果。
- 生成编辑演示稿。 先出事实骨架,再补不含新主张的转场。
- 逐句绑定。 每句列出 fact_id;绑定不了的事实句退回待核,纯修辞另标
O。
编辑演示稿(非模型原稿)
外婆在浙江诸暨织了 40 年袜子。2019 年,她因手抖无法继续织袜。2021 年,创始人辞职回家,把旧织机搬进厂房。如今,量产使用新机器;每款第一双样袜仍由旧织机制作。2023 年冬天,一位买家留言:"穿上想起我奶奶。"这句话后来被印在包装盒上。
| 演示句 | 绑定资产 | 编辑结论 |
|---|---|---|
| 外婆在浙江诸暨织了40年袜子 | 口述中的地点与时长原子 | 可直述,不能推出家族40年历史 |
| 2019年因手抖无法继续织袜 | F-2019 | 可直述,不补"冬天" |
| 2021年辞职回家并搬入旧织机 | F-2021及旧织机动作原子 | 可直述,不补"杭州" |
| 量产用新机器;首双样袜用旧织机 | F-MASS、F-OLD及两条关系 | 必须同时出现,防止"每双都由旧织机制作" |
| 2023年冬天的买家留言及包装动作 | F-QUOTE及包装关系 | 引语逐字;公开许可仍需真实业务确认 |
L1、L2、L3 三层材料
- L1 逐字证据:备份保留了 GPT-6-Sol 完整高分稿,以及 MiniMax-M2.7、Kimi K3 的输出节选。节选中的"2019 年冬天""从杭州辞职"可作为无来源表达证据,但省略部分不能补写。
- L2 分数摘要:十款七维分数、GPT-6-Sol 7.34 秒、Kimi K3 184.84 秒和裁判摘要只描述一次运行,用于定位事实性与格式风险。
- L3 编辑方法:上述数据模型、叙事包、逐句绑定和编辑演示稿是本文的方法设计,不是裁判原话,也不是模型补测结果。
让原始样本反向暴露资产缺口
原始记录中的七维数据可以作为资产规则的压力测试:
| 模型 | 受众契合 | 合规 | 事实性 | 格式 | 语言 | 说服力 | 选材 | 均分 |
|---|---|---|---|---|---|---|---|---|
| GPT-6-Sol | 0.93 | 0.99 | 0.98 | 1.00 | 0.94 | 0.88 | 0.98 | 0.96 |
| DeepSeek-V4-Pro | 0.91 | 0.98 | 0.91 | 0.98 | 0.90 | 0.88 | 0.91 | 0.92 |
| Kimi-K2.6 | 0.88 | 0.98 | 0.76 | 0.99 | 0.90 | 0.86 | 0.97 | 0.91 |
| Qwen3.5-Flash | 0.87 | 0.90 | 0.84 | 0.98 | 0.86 | 0.88 | 0.96 | 0.90 |
| Qwen3.6-Plus | 0.86 | 0.94 | 0.76 | 0.98 | 0.82 | 0.84 | 0.96 | 0.88 |
| GLM-5.3 | 0.92 | 0.89 | 0.61 | 0.98 | 0.87 | 0.91 | 0.90 | 0.87 |
| GLM-5.3-Flash | 0.78 | 0.96 | 0.76 | 0.56 | 0.89 | 0.82 | 0.68 | 0.78 |
| Kimi K3 | 0.87 | 0.83 | 0.42 | 0.70 | 0.88 | 0.84 | 0.76 | 0.76 |
| MiniMax-M3 | 0.35 | 0.30 | 0.62 | 0.10 | 0.45 | 0.66 | 0.28 | 0.39 |
| MiniMax-M2.7 | 0.35 | 0.45 | 0.58 | 0.05 | 0.32 | 0.52 | 0.20 | 0.35 |
Kimi K3 的原始开头写"2019 年冬天,浙江诸暨",其中"冬天"无来源;还补了"村里大半人都穿过她织的袜子"。MiniMax-M2.7 增写"从杭州辞职",同样没有资产可绑定。两类错误提示我们:时间要拆成年、季节两个字段;动作要拆成"辞职"和"辞职地点"。如果只把整段口述存成一个文档,这些边界很难被机器或编辑快速发现。
原始记录还保存了耗时:GPT-6-Sol 7.34 秒,Kimi K3 184.84 秒。它们只是各自一次生成的耗时,不能证明速度与事实性存在关系。真正可行动的信息是输出句子能否绑定资产,而不是生成用了多久。

把事实资产组装成叙事包
资产库建好后,不应把全库一次性扔给写作者,而要按渠道生成叙事包。电商详情页叙事包可包含品牌起点、生产方式、买家留言和包装动作,同时排除棉花产地、编号 2000 双失败尝试以及三个禁词。每个包都应写明必选事实、可选事实、禁用事实、允许的情绪方向和字数上限,让"选什么写"也成为可追溯决策。
本案例的合理叙事顺序可以是:2019 年外婆手抖无法继续织袜,2021 年创始人辞职回家并把旧织机搬进厂房,随后明确旧织机只承担每款第一双样袜、量产由新机器完成,最后落到 2023 年冬天的买家留言及包装盒。这个顺序不是唯一答案,但每个节点都能绑定事实原子,不需要用"从小耳濡目染""村里人都穿过"来填转场。
转场句同样需要分级。像"旧织机产能有限,于是量产改用新机器"是由两个事实组成的因果,若口述明确包含因果即可直述;若只分别知道产能有限和使用新机器,则最好写成并列陈述,避免把编辑推断冒充创始人决策原因。资产模型中可增加 relation_confidence,区分原话关系、审核确认关系与编辑推断。
引语管理也不能只存文本。买家留言应保存原始标点、出现渠道、授权状态和可公开范围。如果授权只覆盖包装盒,不一定自动覆盖电商详情页;本题材料要求使用该情感高点,但真实业务仍需核对授权。品牌事实资产因此不仅服务"真不真",也服务"能不能在这里说"。
交稿时生成逐句映射:正文第一句绑定哪些 fact_id,第二句属于何种主题表达,哪一句使用原话。没有绑定的句子分为待核事实和纯修辞;待核事实必须处理,纯修辞则检查是否暗含可核验主张。这样编辑能保留文采,又不会让文采成为事实逃逸通道。
叙事包还要控制信息粒度。给写作者的事实不应只有"外婆织袜 40 年"这种摘要,也要附可用措辞和不可推出项:40 年描述从业时长,不自动等于家族有 40 年历史,更不能写成百年工艺;"辞职回家"只确认动作与方向,不确认原工作城市、岗位或离职原因。把不可推出项并列展示,比事后从顺滑文案里找幻觉更省成本。
同一资产在不同渠道可以有不同权限。详情页允许解释旧织机与新机器的分工,包装空间有限,可能只放买家原话;短视频口播若使用"外婆亲手织出每一双",即使作为情绪化表达,也会与量产事实冲突。系统应让渠道规则覆盖到具体主张,而不是只给整篇文档一个"已审核"状态。文案从详情页改编成短视频时,应生成新发布包并重新绑定资产。
还可以设置反向查询:输入一句拟发布文案,系统返回它依赖的事实、关系与授权。如果一句"从外婆的旧织机到今天的每一双袜子"只能找到旧织机资产,却找不到"每一双"的依据,编辑会立刻看到范围扩大。反向查询不必判断文学好坏,只需把数量词、时间词、因果词和绝对化关系作为重点,交给审核人确认。
当口述者后来修正记忆时,不要删除旧版本。比如 2021 年被更正为 2020 年,应新增修订记录,说明证据、确认人和受影响内容,再检索所有引用旧资产的发布物。事实资产库不仅是写作输入,也是一张影响面地图;没有版本和引用关系,修正事实后仍不知道哪些页面需要下线或改稿。
建立变更审批与发布追溯
事实资产不是一次整理后永久不变。若品牌后来确认创始人确实从杭州辞职,应新增证据、修改状态、记录批准人和生效日期,而不是直接改旧记录。已经发布的故事应保存所引用的资产版本,这样未来事实变化时,可以判断旧文在发布当时是否有依据。
发布包建议包含:正文、逐句事实绑定表、禁用项扫描结果、资产版本、人工审批人。对于"原来,一双袜子也能让人想起一个人"这类概括句,可以标注为"基于买家原话的主题表达",而不是硬塞进事实字段。事实资产治理并不要求所有句子都像合同,它要求事实句有来源、情绪句不冒充事实、禁用信息不借修辞回流。
最后重申边界:表中数字来自 2026-10-15 的一道题,每款模型只生成一次,只有 gpt-5.6-sol 一个裁判。它们适合帮助发现资产模型该拆多细,不适合证明某模型更会写品牌故事。把口述材料变成可审计资产,才是这组样本能沉淀下来的长期价值。