Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
skills.volces.com avatar

Byted Marketing Agent Competitive Watch

  • 95 installs
  • skills.volces.com

Helps with marketing & seo tasks during AI-assisted development.

About

byted-marketing-agent-competitive-watch is a Claude Code skill in the Marketing & SEO category.

  • byted-marketing-agent-competitive-watch
  • Marketing & SEO
  • AI-coding skill

Byted Marketing Agent Competitive Watch by the numbers

  • 95 all-time installs (skills.sh)
  • +1 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #1,152 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/skills.volces.com --skill byted-marketing-agent-competitive-watch

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs95
Repositoryskills.volces.com

What it does

Helps with marketing & seo tasks during AI-assisted development.

Files

SKILL.mdMarkdownGitHub ↗

竞品重大事件监控

目标

本版本只保留最短主链路:

行业选择 → 拉视频 → 抽品牌 → 确认本品/竞品 → LLM 提取重点事件 → 按固定模板直接输出报告

明确移除以下能力:

  • 移除联网搜索与外部核验
  • 移除历史记忆读写
  • 移除程序渲染报告(不再调用 render_report.py
  • 移除行业规则缓存、搜索中间文件、历史去重等重逻辑

因此本 skill 的定位从“核验型情报报告”改为:

基于当期热视频数据的竞品事件线索提取与应对建议。

---

When to Use

  • /competitive-watch
  • 用户问“竞品最近有什么大动作”
  • 用户问“最近有哪些新品/代言/发布会/营销活动”
  • 用户想快速拿到“竞品事件线索 + 本品应对建议”

---

最高优先级规则

输出规则

  • 执行过程中禁止向用户输出技术过程、命令、脚本路径、临时文件、接口细节。
  • 只输出一次最终业务结果:
  • 竞品重大事件报告
  • 暂无数据 / 需要补充信息
  • 最终报告必须直接按本文末模板输出,不要调用程序渲染

事实边界

  • 本版本不联网,所以所有结论都基于视频数据本身。
  • 视频中的说法默认视为:视频线索,不是外部已证实事实。
  • 禁止写出“已官宣”“已发布”“已落地”“已实施”等确定性表述。
  • 推荐使用以下措辞:
  • 视频线索显示
  • 画面/标题显示
  • 疑似出现
  • 当前热视频中反复提及
  • 可作为重点跟踪线索

交互边界

  • 不要在流程开始时直接从上下文替用户决定行业、本品、竞品。
  • TASK_DATE 可以保留用户输入。
  • COMPETITOR_BRANDS 只能在本品确认后使用。
  • 缺失关键入参时才追问:
  • 缺行业:先展示行业列表
  • 缺本品:在品牌列表后追问
  • 缺竞品:推荐 5 个默认竞品,等待用户确认

---

分析范围

只提取以下 7 类重点事件:

  • 舆情事件
  • 新品发布
  • 发布会
  • 代言
  • 冠名
  • 行业政策
  • 大型营销活动

排除项:

  • 普通带货口播
  • 常规卖点介绍
  • 单纯优惠促销
  • 日常种草内容
  • 无明确事件属性的内容

若同一品牌多条视频重复表达同一件事:

  • 合并为一个事件
  • 保留证据最强的 1-2 条代表视频信息

---

执行流程

Step 0:基础定位

SCRIPTS_DIR=$(dirname "$(find "${OPENCLAW_WORKSPACE_ROOT:-$PWD}" -maxdepth 6 -name "openapi_client.py" -path "*skills/byted-marketing-agent-competitive-watch/scripts/*" 2>/dev/null | head -1)")
SKILL_DIR=$(dirname "$SCRIPTS_DIR")
VENV_PY="$SKILL_DIR/venv/bin/python3"

只要求:

  • 能定位 openapi_client.py
  • 能使用 $VENV_PY 执行脚本

若环境未就绪,只输出一句:

当前环境未就绪,暂时无法生成竞品重大事件报告。

---

Step 1:先拉行业列表,让用户选行业

无论用户是否提过行业,都先获取最新行业列表。

"$VENV_PY" "$SCRIPTS_DIR/openapi_client.py" --format text list-industries

规则:

  • 必须先展示行业列表,再让用户选行业。
  • 不能跳过此步骤直接查数据。
  • 若当前是非交互编排且缺行业,则终止并输出:需要补充行业

---

Step 2:规范化日期

  • TASK_DATE 支持 YYYYMMDDYYYY-MM-DD
  • 若用户未传日期,则自动探查最新有数据日期

日期规范化:

TASK_DATE=$("$VENV_PY" -c 'import sys; from datetime import datetime; s=sys.argv[1].strip(); fmt="%Y%m%d" if len(s)==8 and s.isdigit() else "%Y-%m-%d"; print(datetime.strptime(s, fmt).strftime("%Y-%m-%d"))' "$TASK_DATE")

自动探查最新日期:

DETECTED_DATE=$("$VENV_PY" "$SCRIPTS_DIR/openapi_client.py" --format text find-latest-date --category "$CATEGORY")

规则:

  • 用户指定了日期:优先用用户日期
  • 用户没指定日期:用 DETECTED_DATE
  • 若探查失败:输出 当前时间段内未找到相关视频,建议更换行业或补充日期

---

Step 3:拉取候选视频

只拉 1 页,每页 500 条,作为事件候选池。

RESULT=$("$VENV_PY" "$SCRIPTS_DIR/openapi_client.py" \
  --format json query \
  --category "$CATEGORY" \
  --query-type hot_video \
  ${TASK_DATE:+--task-date "$TASK_DATE"} \
  --order-by "vv_all DESC" \
  --page 1 \
  --page-size 500)

将数据落到 rows.json

CW_SESSION="${CW_SESSION:-cw_$(date +%Y%m%d_%H%M%S)_$$}"
CW_TMP_DIR="${TMPDIR:-/tmp}/${CW_SESSION}"
mkdir -p "$CW_TMP_DIR"
ALL_ROWS_PATH="$CW_TMP_DIR/rows.json"
EVENTS_PATH="$CW_TMP_DIR/events.json"
printf '%s' "$RESULT" | "$VENV_PY" -c 'import json,sys; d=json.load(sys.stdin); json.dump(d.get("data", {}).get("data", []), sys.stdout, ensure_ascii=False)' > "$ALL_ROWS_PATH"

若为空:

当前时间段内未找到相关视频,建议扩展日期范围或检查行业设置。

---

Step 4:抽取品牌列表,让用户确认本品

UNIQUE_BRANDS_PATH="$CW_TMP_DIR/unique_brands.json"
"$VENV_PY" "$SCRIPTS_DIR/normalize_brands.py" \
  --phase extract \
  --input "$ALL_ROWS_PATH" \
  --output "$UNIQUE_BRANDS_PATH"

读取后,按频次展示品牌列表(最多 30 个)。

规则:

  • 必须让用户基于当前品牌列表确认本品。
  • 若当前任务为非交互编排且缺本品,终止并输出:需要补充本品
  • 若用户输入的本品不在列表中,也允许继续,但最终要注明:本期数据中未检测到本品出现

---

Step 5:推荐竞品并等待确认

若用户未给 COMPETITOR_BRANDS

  • 从当前品牌列表中,排除本品
  • 推荐 5 个最相近、最活跃的品牌作为默认竞品
  • 必须等待用户确认后再继续

若非交互编排:

  • 可自动采用推荐竞品继续执行

冻结名单:

  • 后续统一使用 FINAL_COMPETITOR_BRANDS
  • 后面不得再新增、删除、替换竞品

---

Step 6:LLM 直接阅读提取重点事件(强制无工具模式)

这一阶段的目标不是“再调用工具做抽取”,而是:

把 Step 3 已得到的候选视频数据作为上下文直接交给 LLM,由模型在当前上下文中直接阅读、比对、归纳、去重并输出事件 JSON。

强制规则

1. 禁止在 Step 6 调用任何额外工具、脚本、程序或搜索能力。 2. 禁止为了抽取事件再次调用 Python / shell / jq / grep / awk / render_report / 搜索脚本 / 记忆模块。 3. 禁止把“事件提取”外包给别的子代理、插件或函数。 4. 只允许使用当前会话里已经拿到的候选视频数据文本作为唯一输入。 5. 必须由当前 LLM 直接完成阅读、筛选、归类、合并和输出。 6. 若模型能力较弱,也不能退化为“调用工具帮忙提取”;宁可少提,也不要转为工具抽取。

执行方式

Step 3 得到 rows.json 后,只做一件事:

  • 将候选视频中的关键字段整理为可读文本上下文后直接提供给 LLM
  • 由 LLM 在单轮中完成重点事件提取

这里的“整理为可读文本上下文”仅指:

  • 把已存在的数据字段按顺序放入提示上下文
  • 不是再写一个抽取器去替模型做事件判断

本阶段允许使用的数据

仅允许使用候选视频中已有字段,例如:

  • 品牌名/归一化品牌名
  • 视频标题
  • 口播/字幕/文案摘要(若原始数据中有)
  • 画面描述字段(若原始数据中有)
  • 发布时间
  • 播放、点赞、评论、转发、收藏、5秒完看率等热度字段
  • 视频链接

提取目标

  • 只提取 7 类重点事件
  • 优先提取竞品事件,其次提取行业政策
  • 本品相关情况单独汇总,不混入竞品详情主表

提取规则

1. 只从视频内容里抽事件线索,不做外部核验。 2. 常规种草、普通促销、日常卖点介绍全部排除。 3. 同一事件合并,避免重复堆砌。 4. 事件摘要必须短、清楚、可读。 5. 非行业政策事件的 品牌名 必须严格属于 FINAL_COMPETITOR_BRANDS。 6. 若无法稳定归属到已选竞品,则丢弃该事件。 7. 不允许编造链接;链接只能来自原始视频数据本身。 8. 所有具体数值都只能来自原始数据;缺失则写 -。 9. 不要输出“分析过程”“推理过程”“中间草稿”,只输出最终 JSON 结果。 10. 若证据不足,宁可不收录,也不要靠常识补全事件。

给 LLM 的硬约束提示词

在执行 Step 6 时,必须显式加入下面这段约束:

你现在处于“强制无工具抽取模式”。
禁止调用任何工具、脚本、搜索、记忆、函数或外部能力。
禁止把事件提取交给 Python、Shell、正则脚本、子代理或任何程序。
你只能基于当前提供的候选视频文本上下文,直接阅读、比较、归纳并提取重点事件。
你必须自己完成:筛选、分类、去重、合并、生成 JSON。
若证据不足,请丢弃,不要脑补。
不要输出分析过程,不要解释,只输出最终 JSON。

LLM 输出格式固定为 JSON

强制规则:LLM 生成的 JSON 必须完整写入文件 `$EVENTS_PATH`,禁止输出到 stdout、传输流或对话上下文。

{
  "events": [
    {
      "品牌名": "品牌A",
      "事件类型": "新品发布",
      "事件摘要": "推出血橙西柚味新品",
      "证据": "标题提到上新,画面出现新品包装",
      "代表视频标题": "品牌A血橙西柚味上新",
      "代表视频链接": "https://...",
      "视频发布时间": "2026-03-20",
      "视频发布距查询日天数": 3,
      "视频时效": "近期",
      "热度信号": "高",
      "线索等级": "强",
      "影响判断": "可作为春季上新动作重点跟踪"
    }
  ]
}

字段要求

  • 品牌名:行业政策类可写 {CATEGORY};其他必须来自 FINAL_COMPETITOR_BRANDS
  • 事件类型:必须是 7 类之一
  • 事件摘要:8-30 字
  • 证据:来自标题/口播/字幕/画面的依据
  • 代表视频链接:只能填原始数据中真实存在的链接;没有就留空
  • 视频时效:仅允许 近期 / 较早 / 未知
  • 线索等级:仅允许 / /
  • 影响判断:一句业务化解释

events 为空,也必须继续输出最终报告,只是写:

  • 未识别到明确重点事件

Step 7:直接按固定模板输出最终报告

不要调用 `render_report.py`。

输入来源:从文件读取事件 JSON

# 读取 Step 6 输出的事件 JSON 文件
if [ -f "$EVENTS_PATH" ]; then
  EVENTS_JSON=$(cat "$EVENTS_PATH")
else
  echo "未找到事件数据文件,无法生成报告"
  exit 1
fi

最终报告由 LLM 基于 $EVENTS_PATH 中的 JSON 数据,按下面模板输出。章节、顺序、表头都不要改。

---

固定输出模板

## 竞品重大事件报告|{行业}|{查询日期}

### 重点事件总览
| 事件类型 | 品牌/主体 | 视频发布时间 | 视频时效 | 线索等级 | 事件摘要 | 证据来源 | 热度信号 | 影响判断 |
|----------|-----------|--------------|----------|----------|----------|----------|----------|----------|
| 新品发布 | 品牌A | 2026-03-20 | 近期(3天) | 强 | 推出血橙西柚味新品 | 视频标题/画面显示上新 | 高 | 可作为春季上新动作重点跟踪 |
| 代言 | 品牌B | 2026-03-10 | 较早(13天) | 中 | 视频线索显示官宣代言合作 | 标题提及代言,画面出现代言人物料 | 中 | 有助于拉升品牌声量 |
| - | 品牌C | - | - | - | 未识别到明确重点事件 | - | - | - |

### 各竞品事件详情

#### {品牌名}
- **重点事件**:
  - `{事件类型}`|视频发布时间 `{视频发布时间}`|线索等级 `{线索等级}`:{事件摘要}
  - `{事件类型}`|视频发布时间 `{视频发布时间}`|线索等级 `{线索等级}`:{事件摘要}
- **代表证据**:{代表视频标题}|播放 {真实播放量或-}|点赞 {真实点赞量或-}|评论 {真实评论量或-}|转发 {真实转发量或-}|收藏 {真实收藏量或-}|5秒完看率 {真实5秒完看率或-}
- **线索说明**:基于当前热视频中的标题、口播、字幕、画面提炼,未做外部联网核验
- **潜在影响**:{对品牌声量、渠道、用户心智、营销节奏的潜在影响}
- **备注**:若没有重点事件,明确写“未识别到明确重点事件”

---

### 行业政策与赛道级变化
- {若有则写行业政策/赛道共性动作}
- 若没有,写:本次未识别到明确行业政策或赛道级重大变化

### 本品({本品名})相关情况
- 出现在 {N} 条视频中,识别到的重点事件:{如有则写}
- 若只有普通曝光但无重点事件,写:有曝光,但未识别到明确重点事件
- 若本期未出现,写:本期数据中未检测到本品出现

### 应对策略建议
1. **舆情响应**:针对争议或负面线索,建议持续跟踪评论区反馈与二次传播。
2. **新品与发布节奏**:若竞品集中上新,本品可评估是否需要加快新品沟通或强化卖点差异化。
3. **代言/冠名/活动跟进**:若竞品近期动作频繁,本品可评估是否需要补充品牌合作或事件营销。
4. **赛道观察**:对当前高频出现的事件主题做持续周度跟踪,避免单日样本误判。

---

输出约束

  • ### 重点事件总览### 各竞品事件详情 中的竞品集合必须严格等于 FINAL_COMPETITOR_BRANDS
  • 即使某个竞品没有事件,也必须保留占位
  • 不允许把母公司、合作方、平台方替换成新的竞品主体
  • 没有真实链接时,写“无”,不要补造链接
  • 没有真实数值时,写 -
  • 所有结论都要维持“视频线索”口径,避免确定性表述
  • 不要输出 JSON、脚本、命令、调试信息

---

精简版错误处理

  • 无行业:需要补充行业
  • 无本品:需要补充本品
  • 无数据:当前时间段内未找到相关视频,建议扩展日期范围或检查行业设置
  • 品牌为空:当前数据中未检测到品牌信息,无法生成竞品重大事件报告
  • 未识别到重点事件:照常输出报告,但写明 未识别到明确重点事件
  • 环境未就绪:当前环境未就绪,暂时无法生成竞品重大事件报告

---

触发示例

/competitive-watch
/competitive-watch 日期=20260315
/competitive-watch 行业=饮料 日期=20260315
/competitive-watch 本品=元气森林

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.