视频追爆与 DNA 样本分析。产出结构、声画风格与制作指向的拆解报告。也可分析用户提供的本地视频。只处理视频,制作另交 content-producer。
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./crews/main/skills/viral-chaser/SKILL.md本技能的语音转写走公共 ASR 路由(skills/_shared/asr.py),凭据在哪家走哪家:
VOLC_ASR_*,优先)WORKSPACE_ID + MODELSTUDIO_API_KEY/DASHSCOPE_API_KEY):qwen-audio-3.1-asr-flash → qwen-audio-3.0-asr-flashAWK_API_KEY):qwen-audio-3.0-asr-flash按序尝试已配置的供应商;业务空间内先尝试两个候选模型,均失败才继续 Agent Plan。设置 BAILIAN_ASR_MODEL 后百炼每个端点仅调用该模型。百炼 Flash 单次音频不超过5分钟;较长视频使用火山后端。
三组任一组在环境里即可运行;都缺失时分析器退出码 2 并提示配置。
Use this skill when:
本技能仅产出追爆报告,不生成脚本,不制作视频。如需据此生成视频,需另行委托 content-producer (spawn subagent)执行。
采集路由: 抖音、小红书、快手、TikTok、X、微博分别用 douyin-hunter、xhs-hunter、kuaishou-hunter、tiktok-hunter、x-hunter、weibo-hunter。其他平台暂不支持,需要使用用户已提供的本地视频,不在本技能恢复下载逻辑。analyzer 不依赖来源平台,只接受本地视频与可选独立音轨。
视频限定: 图文内容的分析不在本技能范围内。
本技能涉及多步骤生产流程,你应该 self-spawn 一个 subagent 来执行,原因:subagent 独立上下文,不会因对话历史积累而降低输出质量。
你只负责跟进subagent的执行,避免它们长时间卡在某个步骤,必要时可以提供提示或调整执行策略。
将工作目录建在来源平台的运营文件夹 <platform>/ref/(平台代号 douyin / xhs / kuaishou / tiktok / twitter / weibo)下:
mkdir -p "<platform>/ref/<slug>/references"若调用方 workflow 指定了产出落点(如把参考素材收进在制作品目录 <platform>/outputs/<work>/references/),则按指定位置建工作目录,内部结构不变。
来源链接、hunter 返回的作品资料、下载的视频和音轨、分析产物保存在同一工作目录;references/ 存放素材与 analyzer 产生的音频、关键帧。本地输入按调用方指定的工作目录归档,不猜测来源平台。
先读取来源平台 hunter 的 SKILL.md,按其流程完成登录检查、链接解析、作品资料获取和视频下载。探活、会话失效、签名与平台风控均在 hunter 阶段处理;失败时停止本次采样,analyzer 不处理这些错误或恢复登录。
| 来源 | 采集技能 | 交给分析阶段的产物 |
|---|---|---|
| 抖音 | douyin-hunter | 本地视频、作品资料与完整来源链接 |
| 小红书 | xhs-hunter | 本地视频、作品资料与含 xsec_token 的真实链接 |
| 快手 | kuaishou-hunter | 本地视频与作品资料 |
| TikTok | tiktok-hunter | 本地视频与作品资料 |
| X/Twitter | x-hunter | 本地视频与推文资料 |
| 微博 | weibo-hunter | 本地视频与微博资料 |
抖音和小红书的独立采集命令示例:
douyin-hunter fetch --url '<视频链接>' --video-only --download-media --output-dir '<工作目录>/references'
xhs-hunter fetch '<视频链接>' --video-only --download-media --output-dir '<工作目录>/references'这些 hunter 将视频保存为 video.mp4、资料保存为 note.json。以各自实际输出为准;保留原始资料,不让 agent 重写为 analyzer 的输入 schema。新增平台使用 <hunter> fetch <视频链接> --video-only --download-media --output-dir <目录>,视频文件名与扩展名以 media_paths 返回为准。
只分析本地视频时跳过 hunter 采集。图文不进入 analyzer。
用 viral-chaser wrapper 调用 scripts/analyzer.ts。脚本只读本地媒体,内部完成音频提取、公共 ASR 转写与抽帧,不接收平台 URL、不读取平台登录态、不调用 hunter 或下载器。
viral-chaser --video '<工作目录>/references/video.mp4' --output-dir '<工作目录>/references'若 hunter 提供独立音轨(与视频同步的独立音轨),用 --audio '<本地音轨路径>' 指定同一视频的同步音轨;不下载音轨 URL。--no-frames 跳过抽帧,只用于用户明确只需转写时。--output-dir 优先于已有 OUTPUT_DIR 环境变量,未指定则写入视频所在目录。
The script outputs a JSON object to stdout. Read it and proceed with analysis.
Output JSON structure:
{
"ok": true,
"kind": "video",
"metadata": {
"durationSeconds": 36,
"width": 1080,
"height": 1920,
"orientation": "vertical",
"hasAudio": true
},
"transcript": {
"text": "全文转录...",
"segments": [{ "start": 0.0, "end": 5.2, "text": "开场文案" }],
"estimated": false,
"durationSeconds": 36,
"truncated": false
},
"frames": ["<platform>/ref/<slug>/references/frames/frame_00_0s.jpg", "..."],
"localPaths": {
"video": "<platform>/ref/<slug>/references/video.mp4",
"audio": "<platform>/ref/<slug>/references/analysis-audio.wav",
"tmpDir": "<platform>/ref/<slug>/references"
},
"warnings": []
}kind: 仅 video;图文不下载、不分析,转对应平台专家 workflow。metadata 由本地 ffprobe 得到,只含时长、宽高、画幅和视频是否自带音轨。来源平台、作品 ID、标题、作者/简介、发布时间、话题和互动计数从 Step 2 的 hunter 资料读取;缺失写「接口未返回」,本地输入无资料时写「未提供」,不编造。小红书 PC 笔记资料不提供播放数。frames: 最多 12 张,覆盖开场(0s / 3s)、各口播段中点与全片比例点(25% / 50% / 63% / 75% / 90%)——反转植入类作品的反转点通常在 55%-76%,只抽前几秒会完全错过。transcript.estimated=false 表示使用公共 ASR 返回的真实时间戳;true 表示接口没有返回分段时按音频时长估算。报告据实际结果注明,不能将估算时间写为精确时间。transcript.truncated=true / TRANSCRIPT_PARTIAL 表示转写未覆盖全片,必须写清转写范围。关键帧仍按完整视频时长采样,不能把未转写区间当作没有口播。KEY_FRAMES_PARTIAL 表示部分抽帧失败;报告记录视觉样本缺口,不能用旧帧或文字推测补齐。Exit codes:
0 = Success1 = 本地媒体、音轨、ASR 请求或分析错误,按 error / message 排查2 = ASR_NOT_CONFIGURED,配置公共 ASR 凭据;与平台登录态无关For each path in frames, use the Read tool to load the image and analyze it visually.
Read: <platform>/ref/<slug>/references/frames/frame_00_0s.jpg
Read: <platform>/ref/<slug>/references/frames/frame_01_3s.jpg
...读完 hunter 资料、analyzer JSON 与全部关键帧后,产出追爆报告,保存到工作目录的 raw_article.md。报告既要能给人看,也要能直接喂 DNA 采样(见最后一节)。
| 项 | 内容 |
|---|---|
| 作品类型 | 视频(kind: video) |
| 时长 | xx s(durationSeconds) |
| 画幅 | 竖屏 9:16 / 横屏 16:9(orientation + width×height) |
| 发布时间 | hunter 的实际发布时间字段(接口未返回时注明) |
| 作者与简介 | hunter 的作者资料与简介(对标账号样本必记,缺失注明) |
| 话题标签 | hunter 返回的话题信息 |
| 互动数据 | hunter 的播放 / 点赞 / 评论 / 分享 / 收藏(逐项写;接口未返回的项注明) |
| 来源 | 原视频 URL + 完整内容 ID + 采集日期;本地输入则标注用户提供 |
1–2 句:这条作品给观众的核心价值或核心情绪是什么。
基于 transcript.segments 中 start < 10 的段:
按功能把全片切段,每段给时间区间与占全片百分比:
| 段落 | 时间区间 | 占比 | 功能 | 核心内容 |
|---|---|---|---|---|
| 开场 | 0–Xs | xx% | 钩子/引入 | ... |
| 主体一 | X–Ys | xx% | 信息/剧情推进 | ... |
| 转折 | Y–Zs | xx% | 反转/揭示 | ... |
| 收尾 | Z–结束 | xx% | CTA/情绪收尾 | ... |
必须额外标注:
对 frames 里每一张都用视觉模型读取,逐帧一行(不要只看首帧):
| 帧 | 时间码 / 占比 | 画面内容 | 字幕或贴图文字 | 景别与构图 | 色调与质感 | 品牌/产品是否出现 | 可否作封面 |
|---|---|---|---|---|---|---|---|
| frame_00 | 0s / 0% | ... | ...(逐字抄) | 近景/中景/远景、主体位置 | 冷暖、饱和、颗粒 | 是/否 | 是/否 |
--no-frames 或 frames 为空时注明:「(跳过视觉分析,请重新运行不带 --no-frames 参数)」。
基于逐帧结果与转录:
判定这条作品属于哪种视频内容形态,并给出制作指向——只能写真实存在的资源名:
| 观测到的形态 | 制作指向 |
|---|---|
| 影视解说 / 剧情解说 + 反转植入(「万万没想到」式) | Content Producer expert-video → Reversal Ad workflow |
| PPT / 幻灯或 B-roll 大画面 + 实拍/数字人口播小窗,或用户音频+B-roll | Content Producer expert-video → Deck Talk workflow |
| 人物全屏口播或其他自由镜头声画制作 | Content Producer expert-video → 不指定类型 workflow,走通用制作流程 |
| 一句文稿转视觉隐喻的纸拼贴动画 | Content Producer expert-video → Collage B-roll workflow |
| 纯 AIGC 动画 / 剧情短片 / 蒙太奇(需从零出脚本分镜) | Content Producer expert-video → 不指定类型 workflow(CP 按其通用制作流程做,据创意自定叙事 / 动效 / 蒙太奇手法) |
| 已有素材简单拼接、加旁白、烧字幕 | main video-edit |
| 已有真人口播素材去口气词、剪高光 | main talking-head-cut |
| 产品操作录屏 | main ui-demo |
判定要写依据:口播占比、素材来源、画面是否连续叙事、有无产品段。
content-idea 维度要的)每项评 强 / 中 / 弱 + 一句说明:
| 元素 | 评级 | 说明 |
|---|---|---|
| 前 3 秒吸引力 | ||
| 痛点共鸣度 | ||
| 悬念设置 | ||
| 情绪触发 | ||
| 价值清晰度 | ||
| CTA 效果 | ||
| 视觉冲击(基于关键帧) | ||
| 节奏把控 |
这条作品要进 DNA 时,把报告转成一份样本文字稿,落 <platform>/ref/<dna-id>/transcripts/<sample-id>.md,格式如下(<platform>-style-profiler report --input 直接吃这个文件:首个一级标题即作品标题):
# 样本文字稿:<作品标题>(sample-id: <sample-id>)
> 来源:<对标账号名 + 账号 ID / 用户提供>
> 原视频 URL:<url>(内容 ID <id>)
> 时长:xxs | 画幅:竖屏 9:16 | 点赞 x | 评论 x | 播放量:<数值或「接口未返回」>
> 发布时间:<publishTime 或「未返回」> | 抓取日期:YYYY-MM-DD | 拆解报告:<platform>/ref/<slug>/raw_article.md
> ASR 说明:公共 ASR 路由;时间戳为<真实/估算>(estimated=<实际值>),转写覆盖<实际范围>
> ⚠️ ASR 谐音校正:<逐条列出,注明依据的画面字幕帧;无则写「无」>
> 转录约定:逐字引语为原话引用(含时间戳);标注 [剧情概括] 的段为报告中段转述,非逐字。
## 口播全文(含时间戳)
- 0.04–5.32s:<逐字>
- 5.36–8.84s:<逐字>
- 8.9–14.3s:[剧情概括] <转述>
## 结构标注(取自拆解报告)
- 0–24.6s(≈71%):<段功能与内容>
- 24.7–25.7s(≈3%):<反转过渡>
- 25.7–35.3s(≈26.5%):<植入段>[剧情概括] / [转述] 时,口播密度不参与聚合;不能把概括补写成逐字原话来获得统计值。TeamWiseFlow/xiaobei
47aea0b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.