You need to enable JavaScript to run this app.
导航
数据格式
最近更新时间:2024.11.19 16:43:34首次发布时间:2023.12.25 18:39:38

本文档介绍内容洞察通过BMQ推送的内容数据字段格式信息。

基础数据结构

消费数据结构

{
    "msg_id":"{$msg_id}", // 日志id,建议打印在日志中方便双方问题排查
    "item_doc": {} // 发文数据,具体数据结构见下文发文数据结构
}

状态变更

关注字段: Status

状态(status)含义
0原文已删除,不可公开
1新增/更新数据,可公开
2法务原因删除,不可公开

待删除的数据将只包含 post_id, status, publish_time, origin_id

特别注意:对数据不可公开的情形,需要客户配合将原始数据从数据库中删除


发文数据结构

实时数据现有两种写入方式:

  • 「异步队列」:推送内容全量信息(基础信息+算法特征信息)的数据队列,因需要算法识别,有一定时延

  • 「同步队列」:即时推送内容基础信息的高时效性队列,保障内容即时同步;(需联系管理员单独开通权限)

回溯数据现有一种写入方式:

  • 「异步队列」:推送内容全量信息(基础信息+算法特征信息)的数据队列。

说明

  • 【标准】:内容输出的标准基础字段信息
  • 【*非标】:内容输出的非标准字段信息,为历史遗留字段,内容洞察侧将进行重构和优化,当前不建议业务使用。如需使用,需单独进行商务沟通,依据客户商务情况单独输出。

异步数据结构

数据结构idl

struct PostDoc {
    1: string post_id                              # 【标准】洞察生成的发文唯一id(全网唯一)
    2: string origin_id                            # 【标准】抖音原始发文唯一id(抖音域内唯一,可通过内容URL获取。例如[https://www.douyin.com/video/7362580938632613159]发文的origin_id为7362580938632613159)
    3: string publish_time                         # 【标准】发布时间。格式:%Y-%m-%d %H:%M:%S
    4: string create_time                          # 【*非标】洞察首次入库时间, 格式:%Y-%m-%d %H:%M:%S (业务无需关注)
    5: string first_public_time                    # 【*非标】首次公开时间文章通过审核后的首次公开时间
    6: string push_ready_time                      # 【标准】经洞察处理后,发文数据可被消费时间
    7: string consume_time                         # 【*非标】客户消费本条视频的时间
    8: string update_time                          # 【*非标】本条视频的更新时间(例如作者修改、状态变更)
    9: string main_domain                          # 【标准】发文平台的主域名,例如抖音
    10: string domain                              # 【标准】发文平台的次域名
    11: string url                                 # 【标准】发文的网页URL。若使用沙箱环境测试,可为fake url
    12: string title                               # 【标准】标题
    13: Feature feature                            # 【*非标】算法信息
    14: PoiInfo poi                                # 【标准】Poi信息。作者发文时选择的位置锚点,例如“北京市大钟寺广场1号楼”
    15: OnlineStatus status = OnlineStatus.ONLINE  # 【标准】视频状态:正常或下线。视频状态可能随时变更,主端已删除或法务要求过滤的数据不可输出。洞察通过此字段透传数据状态,业务侧需要对下线/过滤的数据进行对应操作,不可在业务前端应用展示
    16:PostType post_type = PostType.UNKNOWN      # 【标准】发文类型。图文(1)横版短视频(2)竖版小视频(10)
    17: bool create_status = true                  # 【标准】是否是首次发布,true为是,false为变更
    18: VideoInfo video_info                       # 【标准】视频信息
    19: Anchor anchor                              # 【*非标】是否挂件
    20: BasedLocation based_location               # 【标准】相关位置
    21: list<i32> matched_task_ids                 # 【标准】命中的对应task_ids
    22: string update_category                     # 【标准】该字段记录最近一次内容变更类型。类型包含:状态变更status_update(占比约30%)、内容变更content_uplate(占比约20%)、算法特征变更algorithm_update(占比约50%)、其他变更unknown_update。详情参见:[数据变更类型](https://www.volcengine.com/docs/83600/1254806)
		23: list<string> update_field_details          # 【标准】该字段记录最近一次内容变更详情。列表中枚举值及其更新字段对应关系,详情参见:[数据变更类型](https://www.volcengine.com/docs/83600/1254806) 
		24: string outer_extra                         # 【标准】扩展信息,为jsonstring格式('{"dy_sync_xigua": true}' ,douyin同步xigua,若不是,则无该字段)
}

struct Feature {
    1: string ocr                                  # 【标准】图片识别:中文汉字、英语
    2: optional string asr                         # 【标准】语音识别:普通话、粤语、四川话、英语
    3: list<OcrDetail> ocr_details                 # 【标准】图片识别细节。逐帧分析内容,识别ocr出现位置、出现时间(附加增量信息,仅对约30%的头部内容做全帧OCR识别)
    4: string ocr_high                             # 【*非标】高质量图片识别。高质量ocr会进行内容消重、标点符号标记等内容清理,相较ocr语义更连贯,但覆盖较低(附加增量信息,仅对部分内容做高质量OCR识别)
    5: Sentiment sentiment                         # 【*非标】通过提取原素材中文字信息,判断主观情绪
    6: list<KgEntityItem> kg_entity_link           # 【*非标】知识图谱相关信息(文本实体)
    7: list<string> tags = []                      # 【*非标】行业分类,[行业分类标签](https://www.volcengine.com/docs/83600/1208813)
    8: map<string, double> risk_scene              # 【*非标】内容可能命中的风险场景,主要包括:内容、公司、用户、未成年等10个一级风险场景
    9: i64 match_count = 1                         # 【*非标】相似发文数
    10: string event_name                          # 【*非标】事件名称
    11: string match_id                            # 【*非标】相似发文。聚合ID。可通过筛选带有此ID的数据 查看所有相似发文。在内容维度,结合标题、OCR、ASR信息综合判断文章相似度
    12: string event_id                            # 【*非标】所属事件。聚合ID。从内容维度将相近的同一个事件下的发文内容聚合在一起。当前仅对部分图文内容做分析,因此大部分为空,返回-1
    13: bool is_sensitive                          # 【*非标】发文是否涉及舆情风险,是否敏感
    14: MarketingFeature marketing_feature,        # 【*非标,白名单开放】营销洞察场景对应特征
    15: string content_domain                      # 【*非标,白名单开放】标定是否为无意义内容
}

enum Sentiment {
    NETURAL = 0                                    # 【*非标】中立
    POSTIVE = 1                                    # 【*非标】正向
    NEGATIVE = 2                                   # 【*非标】负向
}

enum OnlineStatus {
    OFFLINE = 0                                    # 【标准】下线
    ONLINE = 1                                     # 【标准】正常
    FILTERED = 2                                   # 【标准】法务过滤
}

struct Anchor {
    1: bool filter_status                          # 【*非标】是否建议过滤:若为true则表示是与舆情场景无关的挂件,客户侧可自行过滤。例如游戏、文章、影视综艺等类型的挂件
}

struct Location {
    1: string region                               # 【标准】国家地区
    2: string province                             # 【标准】省份
    3: string city                                 # 【标准】城市
    4: string district                             # 【标准】区县
    5: string town                                 # 【标准】乡镇

    6: string region_code                          # 【标准】国家地区编码
    7: string province_code                        # 【标准】省份编码
    8: string city_code                            # 【标准】城市编码
    9: string district_code                        # 【标准】区县编码
    10: string town_code                           # 【标准】乡镇编码

    11: i64 region_geo_id                          # 【标准】国家地区ID
    12: i64 province_geo_id                        # 【标准】省份ID
    13: i64 city_geo_id                            # 【标准】城市ID
    14: i64 district_geo_id                        # 【标准】区县ID
    15: i64 town_geo_id                            # 【标准】乡镇ID
    
    16: string location                            # 【标准】没有格式化的位置
}

struct PoiInfo {
    1: string poi_name
    2: string poi_city_name                        # 【标准】POI城市名【待下线,请使用poi_location.city】
    3: Location poi_location
}

struct KgEntityItem{
    1: string hit_entity                           # 【*非标】实体标准名
    2: string entity_type                          # 【*非标】实体类型
    3: string kg_id                                # 【*非标】实体连接图谱id
    4: list<string> hit_fileds                     # 【*非标】实体存在的域,title/content/ocr/asr
    5: double entity_score                         # 【*非标】实体识别得分
    6: double related_score                        # 【*非标】实体-kg_id匹配得分
    7: list<BlockInfo> block_infos                 # 【*非标】实体所在的发文片段
    8: i64 sentiment                               # 【*非标】实体情感。正负中
    9: list<string> risk_scene                     # 【*非标】实体风险场景。根据发文中的风险内容片段和识别的实体,判断该片段中该实体涉及哪方面的问题。仅产品、公司两类实体有此字段
    10: optional double risk_binary_score          # 【*非标】text的风险二分类max得分
    11: list<string> hit_mentions                  # 【*非标】实体命中的mentions
    12: optional list<string> sub_type             # 【*非标】实体子类别
}

enum PostType {
    TEXT_IMAGE  = 1                                # 【标准】图文
    SMALL_VIDEO = 10                               # 【标准】视频
}

struct VideoInfo{
    1: ImageInfo cover_info                        # 【标准】视频首帧信息
    2: double duration                             # 【标准】视频时长
}

struct ImageInfo {
    1: string online_url                           # 【标准】在线tos url
    2: list<CoverOcrDetail> cover_ocr_details      # 【标准】首帧ocr细节
    3: string cover_ocr                            # 【标准】首帧ocr
}

struct CoverOcrDetail {                            # 【标准】首帧图ocr
    1: string text                                 # 【标准】ocr文字
    2: i32 is_scene                                # 【标准】ocr出现位置是否为是否为首帧图的背景
    3: i32 is_high                                 # 【标准】是否有价值
}

struct OcrDetail {                                 # 【标准】正文的ocr
    1: string text                                 # 【标准】ocr文字
    2: i32 is_scene                                # 【标准】ocr出现位置是否为视频背景
    3: i32 is_high                                 # 【标准】是否有价值
    4: i32 is_caption                              # 【标准】ocr出现位置是否为是否字幕
    5: i32 is_title                                # 【标准】ocr出现位置是否为是否标题
    6: list<i32> frame_id                          # 【标准】帧ID,帧率1秒
}

struct BlockInfo {
    1: string text                                 # 【*非标】片段内容
    2: list<string> hit_mentions                   # 【*非标】该实体在片段中的真体(比如抖音短视频,在文本中为dy)
    3: double block_risk_score                     # 【*非标】该实体所在片段的风险分
    4: i64 entity_sentiment                        # 【*非标】该实体在该片段中的情感
    5: list<string> entity_risk_scene              # 【*非标】该实体在该片段中的风险场景
}

struct BasedLocation {
    1: Location public_location                    # 【标准】发布地。即视频的IP属地,省/直辖市维度
    2: list<Location> mentioned_locations          # 【标准】提及地。国家-省份-城市-区县-乡镇/街道办。会包含视频中所有提及的位置
}

发文样例

{
    "title": "这顿饭必须让他自己吃#人类幼崽 #养娃不易 #二胎 #只有宝妈才懂吧",
    "create_status": false,
    "domain": "www.douyin.com",
    "first_public_time": "2024-02-28 19:42:30",
    "anchor": {
        "filter_status": false
    },
    "based_location": {
        "public_location": {
            "region": "中华人民共和国",
            "province": "浙江省",
            "city": "",
            "district": "",
            "town": "",
            "location": "中华人民共和国浙江省"
        },
        "mentioned_locations": [
            {
                "region": "中华人民共和国",
                "province": "北京市",
                "city": "",
                "district": "",
                "town": "",
                "location": "中华人民共和国北京市"
            },
            {
                "region": "西班牙王国",
                "province": "",
                "city": "",
                "district": "",
                "town": "",
                "location": "西班牙王国"
            }
        ],
        "poi": {
            "poi_name": "高峰乡",
            "poi_city_name": "六安市",
            "poi_location": {
                "region": "中华人民共和国",
                "province": "安徽省",
                "city": "六安市",
                "district": "",
                "town": "",
                "location": "中华人民共和国安徽省六安市"
            }
        }
    },
    "status": 1,
    "update_time": "2024-02-28 19:42:30",
    "matched_task_ids": [
        "test_account"
    ],
    "feature": {
        "kg_entity_link": [
            {
                "entity_score": 0.9987348914146424,
                "kg_id": "",
                "risk_binary_score": 0.00003057718276977539,
                "risk_scene": [],
                "block_infos": [
                    {
                        "block_risk_score": 0.00003057718276977539,
                        "entity_risk_scene": [],
                        "entity_sentiment": 0,
                        "hit_mentions": [
                            "宝妈"
                        ],
                        "text": "这顿饭必须让他自己吃#人类幼崽 #养娃不易 #二胎 #只有宝妈才懂吧"
                    }
                ],
                "entity_type": "职业",
                "hit_entity": "宝妈",
                "hit_fileds": [
                    "1"
                ],
                "hit_mentions": [
                    "宝妈"
                ],
                "related_score": 0,
                "sentiment": 0
            }
        ],
        "ocr_high": "当我开开心心做饭的时候, 幸亏我及时暂停了。 此时此刻我该怎么办? 救救我,撑不住了。",
        "ocr_details": [
            {
                "text": "当我开开心心做饭的时候",
                "frame_id": [
                    2,
                    3
                ],
                "is_caption": 1,
                "is_high": 1,
                "is_scene": 0,
                "is_title": 1
            },
            {
                "frame_id": [
                    7
                ],
                "is_caption": 1,
                "is_high": 1,
                "is_scene": 0,
                "is_title": 1,
                "text": "幸亏我及时暂停了"
            },
            {
                "frame_id": [
                    8,
                    9
                ],
                "is_caption": 1,
                "is_high": 1,
                "is_scene": 0,
                "is_title": 1,
                "text": "此时此刻我该怎么办?"
            },
            {
                "frame_id": [
                    10,
                    11
                ],
                "is_caption": 1,
                "is_high": 1,
                "is_scene": 0,
                "is_title": 1,
                "text": "救救我,撑不住了"
            }
        ],
        "risk_score": 0,
        "event_id": "-1",
        "label_tags": [
            {
                "level1": "亲子",
                "level2": "亲子互动日常"
            }
        ],
        "match_count": 1,
        "match_id": "",
        "risk_scene": {},
        "sentiment": 2,
        "tags": [
            "owls_parenting"
        ],
        "asr": "当我开开心心做饭的时候幸亏我及时暂停了此时此刻我该怎么办救救我撑不住了哎小姨子",
        "event_name": "",
        "is_sensitive": false,
        "ocr": "|当我开开心心做饭的时候|此时此刻我该怎么办?|救救我,撑不住了",
        "content_domain": "广告"
    },
    "main_domain": "douyin.com",
    "post_type": 10,
    "publish_time": "2024-02-28 19:42:00",
    "create_time": "2024-02-28 19:42:30",
    "origin_id": "7340616706936655104",
    "push_ready_time": "2024-02-28 19:42:41",
    "post_id": "15381186716566210343",
    "url": "https://www.douyin.com/share/video/7340616706936655104",
    "video_info": {
        "cover_info": {
            "online_url": "https://p6-dy-ipv6.byteimg.com/obj/tos-cn-p-0015/oMpxALbnNQK79LlAqHjk23IxfBAAxDpneDxxQg",
        },
        "cover_uri": "tos-cn-p-0015/oMpxALbnNQK79LlAqHjk23IxfBAAxDpneDxxQg",
        "duration": 16.462
    }
}

删除通知数据样例

{
      "anchor":{
         "filter_status":false
      },
      "feature":{
         "asr":"",
         "event_id":"",
         "event_name":"",
         "is_sensitive":false,
         "kg_entity_link":"None",
         "label_tags":"None",
         "match_count":0,
         "match_id":"",
         "ocr":"",
         "ocr_details":"None",
         "ocr_high":"",
         "risk_scene":"None",
         "sentiment":0,
         "tags":"None"
      },
      "is_ad":0,
      "origin_id":"7361206879760043300",
      "poi":{
         
      },
      "post_id":"9420717969628217075",
      "publish_time":"2024-04-24 07:22:30",
      "status":0,
      "update_category":"status_update",
      "video_info":{
         "cover_info":{
            "cover_ocr":"",
            "cover_ocr_details":"None",
            "online_url":""
         },
         "duration":0
      }
   }

同步数据结构

struct PostDoc {
    1: string post_id,                             # 【标准】洞察生成的发文唯一id(全网唯一)
    2: string origin_id                            # 【标准】抖音原始发文唯一id(抖音域内唯一)
    3: string publish_time                         # 【标准】发布时间。格式:%Y-%m-%d %H:%M:%S
    4: string create_time                          # 【*非标】洞察首次入库时间, 格式:%Y-%m-%d %H:%M:%S (业务无需关注)
    5: string first_public_time                    # 【*非标】首次公开时间文章通过审核后的首次公开时间
    6: string sync_push_ready_time                 # 【标准】同步火山可推送时间
    7: string consume_time                         # 【*非标】客户消费本条视频的时间
    8: string update_time                          # 【*非标】本条视频的更新时间(例如作者修改、状态变更)
    9: string main_domain                          # 【标准】发文平台的主域名,例如抖音
    10: string domain                              # 【标准】发文平台的次域名
    11: required string url                        # 【标准】发文的网页URL。若使用沙箱环境测试,可为fake url
    12: string title                               # 【标准】标题
    13: SyncFeature feature                        # 【*非标】算法信息
    14: PoiInfo poi                                # 【标准】Poi信息。作者发文时选择的位置锚点,例如“北京市大钟寺广场1号楼”
    15: OnlineStatus status = OnlineStatus.ONLINE  # 【标准】视频状态:正常或下线。视频状态可能随时变更,主端已删除或法务要求过滤的数据不可输出。洞察通过此字段透传数据状态,业务侧需要对下线/过滤的数据进行对应操作,不可在业务前端应用展示
    16: PostType post_type = PostType.UNKNOWN      # 【标准】发文类型。图文(1)横版短视频(2)竖版小视频(10)
    17: bool create_status = true                  # 【标准】是否是首次发布,true为是,false为变更
    18: string offset                              # 【标准】此条发文的偏移量,用于定位当前消费数据序列位置。假如出现客户侧出现数据消费断连的情况,可根据offset定位到之前消费到了第几条数据,从该条数据继续消费
    19: VideoInfo video_info                       # 【标准】视频信息,同步不包含首帧OCR内容,即cover\_ocr\_details和cover\_ocr两个字段为空,这两个属于异步字段
    20: BasedLocation based_location               # 【标准】相关位置, 同步只包含public_location不包含mentioned_locations
    21: list<i32> matched_task_ids                 # 【标准】命中的对应task_ids
    22: string outer_extra                         # 【标准】扩展信息,为jsonstring格式('{"dy_sync_xigua": true}' ,douyin同步xigua,若不是,则无该字段)
}

struct SyncFeature {
    1: string ocr                                  # 【标准】图片识别:中文汉字、英语
    2: optional string asr                         # 【标准】语音识别:普通话、粤语、四川话、英语
}

说明

Offset:该字段仅为历史客户使用API接口获取数据时使用
Offset: a-167xxxx格式 a是现在所在的分片数,167xxx是消费到的时间位置。客户可以根据这个参数指定消费的分片,和时间范围。