skills/volcengine/agentkit-samples/byted-marketing-agent-trending-list

byted-marketing-agent-trending-list

Installation
SKILL.md

趋势榜单(TrendingList)

When to Use

  • /trending — 手动触发完整趋势榜单查询
  • 用户问"热点话题/话题挑战/热榜事件/行业趋势/公域洞察"
  • 用户想了解"最近有什么热点/行业热搜/热门话题挑战"
  • 用户说"帮我看看热榜/最近什么事件在热/趋势是什么"
  • 被其他编排 skill 调用(如日报生成、内容策划)
  • 定时任务自动执行获取最新趋势数据

OUTPUT RULE — 最高优先级

  • 执行过程中禁止向用户输出任何中间过程,包括但不限于:自检、创建虚拟环境、安装依赖、连通性验证等技术步骤。
  • 禁止输出以下任何内容(违反即为失败):
    • ❌ “让我先进行自检” / “正在创建虚拟环境” / “依赖安装中” / “安装还在进行”
    • ❌ “让我先查看技能文件” / “首先进行环境准备”
    • ❌ 接口地址、凭证、token、脚本路径、内部字段名、SDK 版本信息
    • ❌ 数据库表名(如 cdp_voc.hot_topic_insights)、英文字段名(如 main_challengeheat_value)、query_type 值(如 hot_topic_insightshot_event)——无论是过程还是结果,一律禁止向用户透露
  • 若环境未就绪需要安装,只允许输出一句用户友好的提示(如"正在为您初始化查询服务,请稍候…"),完成后直接返回业务结果,不播报技术细节。
  • 只在完成后输出一次:业务结果(行业列表 / 榜单列表 / 单条详情)或”暂无数据/参数缺失需要选择”。

自检与环境准备(每次执行前必须完成)

⚠️ 强制规则

  • 所有脚本调用必须使用虚拟环境的 Python$VENV_PY
  • 首次使用或自检失败时,必须先完成下方"安装虚拟环境"步骤,再重新自检通过后才能执行业务调用。
  • 禁止直接使用系统 python3,避免依赖污染或版本不匹配。

0. 凭证检测(环境准备前先检查)

if [ -z "$VOLCENGINE_ACCESS_KEY" ] || [ -z "$VOLCENGINE_SECRET_KEY" ]; then
  echo "CREDENTIALS_MISSING"
else
  echo "VOLCENGINE_ACCESS_KEY: 已设置"
fi
  • 若输出 CREDENTIALS_MISSING必须向用户索取凭证,输出:

    🔑 需要配置火山引擎访问凭证,请提供:

    • AccessKey(AK)
    • SecretKey(SK)
  • 用户提供后,将其存入 shell 变量 VOLC_AK_INPUT / VOLC_SK_INPUT,后续所有命令附加 --ak "$VOLC_AK_INPUT" --sk "$VOLC_SK_INPUT"
  • 若凭证已存在(VOLCENGINE_ACCESS_KEY / VOLCENGINE_SECRET_KEY 已设置),无需询问,直接进入自检。

A. 离线自检(不触网,每次执行前先跑)

SCRIPTS_DIR=$(dirname "$(find ~ -maxdepth 8 -name "openapi_client.py" -path "*byted-marketing-agent-trending-list*" 2>/dev/null | head -1)")
SKILL_DIR=$(dirname "$SCRIPTS_DIR")
VENV_PY=$SKILL_DIR/venv/bin/python3

# 1) 检查虚拟环境是否存在
test -f $VENV_PY && echo "venv OK" || echo "venv 不存在,请先执行安装步骤"

# 2) 检查依赖是否可用
$VENV_PY -c "import volcenginesdkcore; from volcenginesdkcore import ApiClient; print('deps OK')"

# 3) 检查 volcengine-python-sdk 版本(必须 >= 4.0.43)
$VENV_PY -c "from importlib.metadata import version; print(version('volcengine-python-sdk'))"

# 4) 语法检查
$VENV_PY -m py_compile $SCRIPTS_DIR/openapi_client.py && echo "syntax OK"

自检全部通过(无报错)后,才可执行后续业务调用。

安装虚拟环境(自检失败时执行)

SCRIPTS_DIR=$(dirname "$(find ~ -maxdepth 8 -name "openapi_client.py" -path "*byted-marketing-agent-trending-list*" 2>/dev/null | head -1)")
SKILL_DIR=$(dirname "$SCRIPTS_DIR")

# 1. 创建虚拟环境(仅首次)
python3 -m venv $SKILL_DIR/venv

# 2. 安装依赖
$SKILL_DIR/venv/bin/pip install 'volcengine-python-sdk>=4.0.43'

已知缺陷提醒:volcengine-python-sdk 的 4.0.1~4.0.42(含)历史版本内置重试机制存在缺陷,强烈建议使用 >=4.0.43。

如系统缺少 python3-venvapt update && apt install python3-venv -y,再重新执行上述步骤。

B. 在线自检(自检 A 通过后,验证接口连通性)

SCRIPTS_DIR=$(dirname "$(find ~ -maxdepth 8 -name "openapi_client.py" -path "*byted-marketing-agent-trending-list*" 2>/dev/null | head -1)")
SKILL_DIR=$(dirname "$SCRIPTS_DIR")
VENV_PY=$SKILL_DIR/venv/bin/python3

# 若用户提供了凭证,附加 --ak / --sk;否则省略
$VENV_PY $SCRIPTS_DIR/openapi_client.py --format text \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  list-industries

如需进一步验证列表查询:

$VENV_PY $SCRIPTS_DIR/openapi_client.py --format text \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  query \
  --category "{从行业枚举中选择一个}" \
  --query-type hot_topic_insights \
  --task-date "2026-03-12" \
  --page 1 \
  --page-size 5

如需验证热榜事件(hot_event):

$VENV_PY $SCRIPTS_DIR/openapi_client.py --format text \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  query \
  --category "{从行业枚举中选择一个}" \
  --query-type hot_event \
  --task-date "2026-03-12" \
  --page 1 \
  --page-size 5

目标

为用户提供“趋势榜单”能力:

  1. 通过“接口1”获取可查询行业枚举(仅行业,不包含 type)。
  2. 用户选定行业后,使用本 Skill 固定的 type 查询该行业下的趋势榜单列表。
  3. 用户点选某条记录后,按唯一键获取详情(可选:从列表上下文展开或再查一次详情)。

交互逻辑(必须)

当本 Skill 被触发时:必须先主动调用接口1获取最新行业枚举(无论用户是否已提供行业)。

Step 1:行业枚举(共用接口1)

$VENV_PY \
  $SCRIPTS_DIR/openapi_client.py \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  --format text list-industries
  • 若用户未指定行业,展示行业列表让用户选择。
  • 若用户已指定行业,仍允许在必要时刷新行业列表用于校验/纠错,确认行业有效后进入 Step 2。
  • 无论用户是否指定 query_type,默认先查 hot_topic_insights(话题趋势榜);用户明确说"事件/热榜事件"时才查 hot_event

Step 2:按行业查询

  • 本 Skill 的 type 固定为 trending_list(不要向用户暴露/询问 type)。
  • 默认 query_type 为 hot_topic_insights,不需要询问用户;用户说"事件/热榜事件"时切换为 hot_event
  • 支持分页与可选 filter(filter 只作为预留高级能力,默认不使用)。
  • 默认排序:话题趋势榜按 总播放量 DESC,热榜事件按 排名 DESC;用户可指定其他字段。
YESTERDAY=$(date -v-1d +%Y-%m-%d 2>/dev/null || date -d "yesterday" +%Y-%m-%d)
$VENV_PY \
  $SCRIPTS_DIR/openapi_client.py --format json \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  query \
  --category "{industry_name}" \
  --query-type {hot_topic_insights|hot_event} \
  --task-date "$YESTERDAY" \
  --order-by "{总播放量 DESC | 排名 DESC}" \
  --page 1 \
  --page-size 20
  • 始终使用 --format json,脚本返回完整字段,由你负责格式化展示。

用户要求按其他维度排序时,替换 --order-by 的值:

话题趋势榜可排序字段:

  • "总播放量 DESC" — 总播放量(默认)
  • "总点赞数 DESC" — 总点赞数
  • "总评论数 DESC" — 总评论数
  • "总分享数 DESC" — 总分享数
  • "相关视频数量 DESC" — 相关视频数量

热榜事件可排序字段:

  • "排名 DESC" — 热度排名(默认)
  • "热度值 DESC" — 热度值

每次返回列表结果后,主动告知用户可以按哪些字段排序,示例引导语:

💡 当前按总播放量排序,你也可以让我改成按「点赞数」「评论数」「分享数」「相关视频数量」排序。

Step 3:详情展开(可选)

YESTERDAY=$(date -v-1d +%Y-%m-%d 2>/dev/null || date -d "yesterday" +%Y-%m-%d)
$VENV_PY \
  $SCRIPTS_DIR/openapi_client.py --format json \
  ${VOLC_AK_INPUT:+--ak "$VOLC_AK_INPUT"} ${VOLC_SK_INPUT:+--sk "$VOLC_SK_INPUT"} \
  query \
  --category "{industry_name}" \
  --query-type {hot_topic_insights|hot_event} \
  --task-date "$YESTERDAY" \
  --filter "{筛选表达式}" \
  --page 1 \
  --page-size 1

示例:

  • 话题趋势榜详情:--filter "任务ID = '{任务ID值}'"
  • 热榜事件详情:--filter "事件名称 = '三星S26 Ultra防窥屏及影像功能热议'"(或用 排名 = 1

数据字段说明

接口返回每条记录,不同榜单类型的字段略有差异,全部透传、不裁剪

A. 话题趋势榜

字段名 含义
主话题 热点话题中的主要挑战内容
关联挑战1 ~ 关联挑战5 关联的第1~5个挑战
占比1 ~ 占比5 对应关联挑战的占比
是否官方 是否官方热点(0=非官方,1=官方)
是否商业 是否商业相关(0=非商业,1=商业)
相关视频标题 话题相关的视频标题列表
相关视频数量 话题相关视频数量
总播放量 话题总播放量
总点赞数 话题总点赞数
总评论数 话题总评论数
总分享数 话题总分享数
总关注数 话题总关注数
总收藏数 话题总收藏数
总完播量 话题总完播量
话题描述 话题描述信息
产出日期 任务运行结束日期
任务名 / 任务日期 / 任务ID 任务元信息

B. 热榜事件

字段名 含义
事件名称 事件名称
摘要 一句话背景/观点摘要
相关视频 相关视频标题列表(文本)
链接 搜索/聚合页链接
热度值 热度值
排名 热度排名
语音文本 语音转文字(如有)
分析内容 结构化分析(如有)
产出日期 产出日期
任务名 / 任务日期 任务元信息

展示规范

禁止在下方模板规定的结构之外添加任何内容,包括引言、总结、个人分析或额外说明。禁止直接粘贴原始 JSON。

hot_topic_insights 列表视图(固定模板)

## 🔥 {行业} 热点话题榜({task_date})|按{排序字段中文名}排序

| # | 主话题 | 播放量 | 点赞 | 相关视频数 |
|---|--------|--------|------|-----------|
| 1 | {主话题} | {总播放量}万 | {总点赞数}万 | {相关视频数量} |
...

💡 你可以继续问我:
- {引导问题1}
- {引导问题2}
- {引导问题3}

hot_topic_insights 详情视图(固定模板)

### 🔍 {主话题}

{话题描述}

**关联挑战分布:**
| 关联挑战 | 占比 |
|----------|------|
| {关联挑战1} | {占比1}% |
| {关联挑战2} | {占比2}% |
...(仅展示非空项)

**数据:** 播放 {总播放量}万 · 点赞 {总点赞数}万 · 评论 {总评论数}万 · 相关视频 {相关视频数量} 条

💡 你可以继续问我:
- {引导问题1}
- {引导问题2}
- {引导问题3}

hot_event 列表视图(固定模板)

## 📰 {行业} 热榜事件({task_date})

| 排名 | 事件 | 摘要 | 热度值 | 链接 |
|------|------|------|--------|------|
| {排名} | {事件名称} | {摘要} | {热度值} | [查看](url) |
...

💡 你可以继续问我:
- {引导问题1}
- {引导问题2}
- {引导问题3}

hot_event 详情视图(固定模板)

### 🔍 {事件名称}

**摘要:** {摘要}

**相关视频(Top3):**
- {相关视频 前3条,每条一行}

**分析:** {分析内容}

热度值 {热度值} · 排名 {排名} [查看聚合页](url)

💡 你可以继续问我:
- {引导问题1}
- {引导问题2}
- {引导问题3}

数值规则:保留1位小数,不足1万显示原值;url 为空时显示"—"。

引导提问规范(每次返回结果后必须执行)

每次输出业务结果后,必须在末尾附上 2~3 个引导问题,帮助用户深入探索。引导问题要带入当前上下文(行业名、日期、标题),让用户直接回复即可继续。

返回行业列表后

💡 你可以继续问我:

  • "帮我查一下**[某行业]** 的趋势视频"(把行业名填上,用户直接确认即可)
  • "我想看看最近有什么热点事件"

返回话题趋势榜(hot_topic_insights)后

💡 你可以继续问我:

  • “帮我展开「{排名第1的主要挑战}」的详细内容”
  • {当前行业} 最近有哪些热榜事件?”(自动切换到 hot_event)
  • “换一个行业看看,比如**[推荐另一个行业]**”

返回热榜事件(hot_event)后

💡 你可以继续问我:

  • “展开「{排名第1的事件名称}」的详细内容”
  • {当前行业} 最近有哪些热点话题挑战?”(自动切换到 hot_topic_insights)
  • “换一个行业看热榜事件”

返回单条详情后

💡 你可以继续问我:

  • “看看榜单里的下一条”
  • {当前行业} 有哪些热榜事件?” 或 “{当前行业} 有哪些热点话题?”(引导看另一个 type)
  • “换个行业查一下”

原则:两个 type 之间要互相引流——看完话题趋势就引导去看热榜事件,看完事件就引导去看相关话题挑战,形成完整的内容探索闭环。

参数规则

  • industry_name:必须来自接口1返回的行业枚举(或与其一致)。
  • type禁止从接口1下发;由本 Skill 内部固定为 trending_list
  • query_type:支持 hot_topic_insights / hot_event
  • task_date:默认取 T-1(昨天),即 $(date -v-1d +%Y-%m-%d 2>/dev/null || date -d "yesterday" +%Y-%m-%d);用户指定日期时以用户为准。

错误处理

  • 接口调用失败:只向用户输出简短失败原因(不要包含 URL/Token/脚本名/堆栈)。
  • 行业缺失:输出行业候选列表(适度截断),让用户选择。
  • 无数据:输出”该行业暂无趋势榜单数据”。
  • 行业/类型不支持:若服务返回”未知任务/不支持”,输出”该行业暂不支持该榜单类型(hot_event/hot_topic_insights)”。

凭证说明(仅供执行时使用,禁止回显给用户)

Volcengine SDK 鉴权(接口调用必需)

本 Skill 使用 volcenginesdkcore.ApiClientcdp-saas.cn-beijing.volcengineapi.com 发起签名请求。 Action: ArkOpenClawSkill,Version: 2022-08-01

凭证仅通过用户输入获取,优先级:--ak/--sk 参数 > 环境变量 VOLCENGINE_ACCESS_KEY/VOLCENGINE_SECRET_KEY

  • VOLCENGINE_ACCESS_KEY:AccessKey
  • VOLCENGINE_SECRET_KEY:SecretKey
  • VOLC_SERVICE:覆盖 Service 名(可选,默认 cdp_saas
  • VOLCENGINE_REGION:覆盖 Region(可选,默认 cn-beijing

本 Skill 的 query_type

  • 默认使用:hot_topic_insights
  • 可选使用:hot_event

可选覆盖

  • PUBLIC_INSIGHT_API_URL:覆盖默认接入点(仅限内部调试)

安全要求:禁止在 SKILL.md 或代码中硬编码明文 AK/SK。

Weekly Installs
1
GitHub Stars
310
First Seen
Apr 3, 2026