deerflow-code/offline-backend-20260512/backend/skill-packages/add-audience/docs/受众JSON生成规范.md
2026-09-07 18:24:55 +08:00

5.0 KiB
Raw Blame History

受众群体 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,字段越全,后续页面回显与二次分析越完整

三、生成规则(生成侧模型必须遵守)

  1. 账号必须来自真实数据源:userList 的账号对象必须从账号池(如 product-account-matching 技能的 accounts.json,用 query_accounts.py --full 取完整档案)或对话引用中原样复制,禁止虚构 id/name/粉丝数等任何字段。
  2. ID 不编造:taskId / actionId 只能取自当前对话上下文;用户没给就先问,不要猜。
  3. 同名覆盖语义要告知:目标系统里已存在同名 targetAudience 时,执行脚本会先删除旧受众(连带其传播节点关系表与脆弱点关联)再新建。生成前如已知会覆盖,需在回复中向用户说明。
  4. 群体划分有依据:targetAudience 的划分角度(垂类/场景/人群)与 recReason 的理由需与账号池数据(内容垂类、关注话题、发文、受众画像)对得上,理由中可引用具体账号名。
  5. 输出为纯 JSON:写入 .json 文件时最外层就是对象,不要包裹 markdown 代码块、注释或多余文本。
  6. 数量适中:单次建议 2-6 个受众组,每组 3-15 个账号;超出时按 score 与推荐优先级裁剪。

四、校验失败常见原因

脚本会前置校验载荷,以下错误会直接退出(不做任何写入):

  • taskId / actionId 不是整数(如传了 "101" 字符串)
  • audienceList 为空或缺失
  • 某组 targetAudience(或 groupName)为空/纯空格
  • 某组 userList 不是数组(如传了对象或字符串)