5.0 KiB
5.0 KiB
受众群体 JSON 生成规范(add-audience 载荷)
本规范规定大模型生成「受众群体入库载荷」时的 JSON 格式。生成后写入文件,交由 scripts/add_audiences.py --json <文件> 执行入库。
一、整体结构
{
"taskId": 101,
"actionId": 201,
"audienceList": [
{
"targetAudience": "18-30岁智能穿戴尝鲜用户",
"recReason": "对新形态设备接受度高<2>,预热期讨论参与意愿强,是首发销量的核心贡献人群",
"userList": [
{
"id": "mock_fa_0001",
"name": "极客评测室GeekBench",
"platformType": 1,
"platform": "facebook",
"followers_count": 285200,
"interactions": 12713,
"issue": "真无线耳机;手机周边;数码开箱;",
"dataSource": "target",
"score": 0.9276,
"page_content": "数码科技领域创作者「极客评测室GeekBench」……",
"metadata": {
"screen_name": "极客评测室GeekBench",
"user_id": "mock_fa_0001",
"平台": "facebook",
"发文": [],
"用户画像": { "粉丝数": 285200, "内容垂类": "数码科技" }
}
}
]
}
]
}
二、字段定义
顶层
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId |
integer | ✅ | 当前任务 ID。必须取自用户上下文/前端传入,禁止编造;未知时先向用户询问 |
actionId |
integer | ✅ | 当前行动 ID。同上 |
audienceList |
array | ✅ | 受众组数组,至少 1 项;按推荐优先级排序(S 级在前) |
audienceList 每项
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
targetAudience |
string | ✅ | 受众群体名称。去掉首尾空格后非空;同一载荷内不得重名;简洁(建议 ≤ 20 字),如「中高端降噪耳机通勤党」。不要写 groupName,统一用本字段 |
recReason |
string | 推荐 | 入选理由,一两句话。文本中的 <数字> 引用标记、顿号、「引用」、空括号会被脚本自动清洗,无需预处理;但也不要故意堆这些符号 |
userList |
array | ✅ | 该群体关联的账号数组,必须为数组(允许空数组 [],表示只建群体不挂账号) |
userList 每项(账号对象)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
string|number | ✅ | 账号唯一标识 → 写入接口字段 accountId |
name |
string | ✅ | 账号名 → 写入 accountName |
platformType |
integer | 建议 | 平台编码 → 写入 accountPlat(facebook=1、x=2、instagram=3、threads=5、youtube=6、tiktok=7) |
platform |
string | 建议 | 平台名(供人读) |
followers_count |
integer | 建议 | 粉丝数 |
interactions |
integer | 可选 | 近 30 天均篇互动 |
issue |
string | 可选 | 关注话题串,如 "真无线耳机;数码评测;" |
dataSource |
string | 建议 | 数据来源(target / social / AI_LLM)→ 优先写入 accountSource |
score |
number 0-1 | 可选 | 相关度分数;仅当无 dataSource 时作为 accountSource 的回退值 |
page_content |
string | 建议 | 账号描述正文 |
metadata |
object | 强烈建议 | 完整画像对象(用户画像、发文 等)。整个 user 对象会原样 JSON 序列化存入 frofileInfo,字段越全,后续页面回显与二次分析越完整 |
三、生成规则(生成侧模型必须遵守)
- 账号必须来自真实数据源:
userList的账号对象必须从账号池(如product-account-matching技能的accounts.json,用query_accounts.py --full取完整档案)或对话引用中原样复制,禁止虚构 id/name/粉丝数等任何字段。 - ID 不编造:
taskId/actionId只能取自当前对话上下文;用户没给就先问,不要猜。 - 同名覆盖语义要告知:目标系统里已存在同名
targetAudience时,执行脚本会先删除旧受众(连带其传播节点关系表与脆弱点关联)再新建。生成前如已知会覆盖,需在回复中向用户说明。 - 群体划分有依据:
targetAudience的划分角度(垂类/场景/人群)与recReason的理由需与账号池数据(内容垂类、关注话题、发文、受众画像)对得上,理由中可引用具体账号名。 - 输出为纯 JSON:写入
.json文件时最外层就是对象,不要包裹 markdown 代码块、注释或多余文本。 - 数量适中:单次建议 2-6 个受众组,每组 3-15 个账号;超出时按
score与推荐优先级裁剪。
四、校验失败常见原因
脚本会前置校验载荷,以下错误会直接退出(不做任何写入):
taskId/actionId不是整数(如传了"101"字符串)audienceList为空或缺失- 某组
targetAudience(或groupName)为空/纯空格 - 某组
userList不是数组(如传了对象或字符串)