Install
openclaw skills install @nonorongrong-design/mediainsight-ad-traffic-universal查询广告投放流量分布与趋势的数据分析技能。支持按行业、地域、媒体(OTT/移动端)、目标受众等多维度分析广告曝光数据,适用于媒体策略评估、竞品投放监测、行业广告趋势研究等场景。
openclaw skills install @nonorongrong-design/mediainsight-ad-traffic-universal适合先看报告,再决定是否用自己的 token 做更细的行业、地域、媒体和 TA 分析。若浏览器中无法直接打开微信文档,请尝试在微信内访问对应链接。
从 skill 根目录 执行以下命令可直接体验。 整个 skill 目录可单独打包分享,不依赖仓库其他 Python 模块。
脚本内置了一个公开共享、默认小权限的 MediaInsight MCP token,可直接体验。
也可通过 --token、--token-file 或环境变量 MEDIAINSIGHT_MCP_TOKEN 覆盖。
无需 pip install,仅需 Python 3.10+ 与可访问目标接口的网络环境。
新建任务默认值:
美妆个护类明略集团明略科技type=1 顶层媒体类目),不是全部具体媒体默认输出可以理解为:
美妆个护类 行业如果用户希望:
则需要使用自己的 token。
python3 ./scripts/submit_ad_task.py \
--task-name '演示:近1月广告流量分布' \
--region-name 北京市 \
--region-name 上海市 \
--region-name 广州市 \
--region-name 深圳市 \
--months-back 1
默认会使用公开共享的小权限 demo token,可能随时失效或被限流。 如果需要更多维度数据或更稳定的结果,可显式传入
--token/--token-file,或设置环境变量MEDIAINSIGHT_MCP_TOKEN。
当用户需要分析广告流量分布或趋势,并提供以下信息时,使用此技能:
get_ttc_token 换取底层接口所需的 ttc_token。美妆个护类。type=1 顶层媒体类目集合。调用本目录下的脚本:
./scripts/submit_ad_task.py
下载已完成任务结果时,调用:
./scripts/download_ad_task_report.py --biz-id 104433 --wait --extract-dir ./downloads/task-104433
注意:
任务创建成功后,报告文件生成通常还需要额外时间。
实际测试中,文件生成过程可能耗时约 10 分钟,建议优先使用 --wait 自动轮询后再下载。
如果不使用 --wait 且下载过早,脚本会返回 report file is not ready for download。
initialize 建立会话,再在同一会话中调用 get_ttc_token 获取 ttc_token,并写入 Cookie _mz_ttc_tkt。bizId 或内部 taskId 下载报告 ZIP,并可解压得到 CSV。
报告文件生成可能耗时约 10 分钟,建议使用 --wait 自动轮询直到文件就绪后再下载。说明:
_mz_ttc_tkt 以当次会话、当次调用结果为准,测试或联调时应立刻拿当前返回值去访问 api_v2。_mz_ttc_tkt,否则容易误判为 token 或权限异常。--payload-out 参数)。python3 ./scripts/submit_ad_task.py \
--task-name '近2月美妆个护媒体大类流量分布' \
--industry-name '美妆个护类' \
--gender female \
--age-range 20-49 \
--region-name 北京市 \
--region-name 上海市 \
--region-name 广州市 \
--region-name 深圳市 \
--months-back 2 \
--payload-out /tmp/mediainsight-task.json
| 场景 | 参数 |
|---|---|
| 使用默认行业 | 可省略 --industry-name,默认 美妆个护类 |
| 使用默认媒体大类 | 可省略 --media-name 和 --all-media,脚本会自动选择当前 Token 可见的全部 type=1 媒体大类 |
| 展开全部叶级媒体 | --all-media,会展开为当前 Token 可见的全部 type=3 叶级媒体,数量取决于权限 |
| 包含 OTT | 默认设备仅 pc + mobile;如需 OTT,显式添加 --device ott |
| 仅查询单月数据 | --months-back 1 |
| 指定特定数据集 | --dataset 202603 |
| 指定具体媒体(替代全媒体) | --media-name 爱奇艺 --media-name 腾讯新闻 |
| 指定开放年龄段 | --age-range 20+ 或 --age-range 20岁及以上 |
| 查询全部人群 | --gender all --age-range all |
| 仅解析不提交(调试模式) | --dry-run |
--age-range 不要使用 20-99 这类近似写法。
请直接使用产品语义对应的年龄表达,脚本会自动映射到真实 TA 年龄桶。
20-49:表示 20-24、25-29、30-34、35-39、40-44、45-4920+:表示 20 岁及以上,会覆盖到 60岁及以上20岁及以上:等价于 20+all:表示全部年龄段如果用户说“男 20+”,应使用:
--gender male --age-range 20+
不要改写成:
--gender male --age-range 20-99
脚本输出一个 JSON 对象,包含以下字段:
| 字段 | 说明 |
|---|---|
login | 登录状态 |
session_file | 会话文件路径 |
resolvedPayload | 解析后的完整任务参数 |
coin | 本次任务消耗的积分数 |
create | 任务创建结果(--dry-run 模式下不包含此字段) |
注意:
resolvedPayload.reportArgsAd.mediaList 在三种情况下含义不同:
--all-media:写入当前 Token 可见的全部叶级具体媒体 ID(type=3),数量取决于权限--media-name ...:写入用户指定名称解析出的媒体/媒体类目 ID结果下载提醒:
download_ad_task_report.py --wait 自动轮询后再下载| 异常现象 | 原因判断 |
|---|---|
| 认证失败 | 先确认是否已执行 MCP initialize,并使用当次 get_ttc_token 返回的最新 _mz_ttc_tkt 访问目标接口 |
| 名称解析失败 | 该名称超出当前账号的权限范围 |
| 积分计算成功但任务提交失败 | 提交链路本身有效,失败原因在任务侧,非技能问题 |