SKILL.md 6.5 KB


name: skill-video-lapian

description: 平台级短视频拉片技能:下载→转写→抽帧→方法论逐段分析→HTML报告→S3个人空间发布。动态身份参数(每个数字生命用自己飞马身份/S3空间),零硬编码。触发词:拉片、拆解视频、逐帧分析、视频复盘。

skill-video-lapian — 平台级拉片技能

命名规则(全平台技能遵守): skill-<领域>-<功能> skill-video-lapian = 处理 video, 功能是 拉片(逐段逐帧拆解)。 本技能是平台级: 任何数字生命克隆本仓库后, 用自己的身份参数即可跑全流程, 产物发布到自己的 S3 个人空间。零硬编码凭据

何时用

  • 用户发来抖音/短视频链接说「拉片 / 拆解 / 逐帧分析 / 复盘这条为什么火」
  • 编导知识库沉淀: 把爆款视频拆成结构+技法+可复用模板
  • 批量研究某账号/某赛道的内容打法

前置条件(生命周期初始化时配好)

# 飞马身份(每个生命不同, 见各自容器 /opt/data/fmode-identity.json)
export FEME_USERID=sr2WiPsDyQ            # ← 换成你自己的 Parse objectId
export FEME_SESSION_TOKEN="r:..."        # 飞马会话
export FEME_NEWAPI_TOKEN="sk-..."        # API计费token(调VOC网关/转写/模型全走它)
export FEME_STUDIO_URL="http://server.fmode.cn:<studio端口>"   # 自己的studio端点
# S3 (过渡期可用容器env; studio /api/storage/credentials 上线后自动切换)
export CLOUD_SDK_AK=...   export CLOUD_SDK_SK=...
export S3_BUCKET=storage-s3-nkkj  S3_REGION=cn-north-4
export S3_ENDPOINT=https://obs.cn-north-4.myhuaweicloud.com

依赖: python3.8+(纯标准库, 无需 pip 装包) · ffmpeg/ffprobe · node/npx(fmode-listen) 身份参数优先级: FEME_* 环境变量 > fmode-identity.json > 兼容旧名(FMODE_*)。 S3 只能写 user/<自己的FEME_USERID>/ 前缀, 写他人前缀=越权。

全流程(5 步, 每步可独立重跑, 幂等)

REPO=/opt/data/git-repos/skill-video-lapian   # 克隆后放哪都行
WD=/tmp/lapian-$(date +%s)                     # 工作目录

# 1. 拿视频(三选一): 抖音/视频号短链 / 视频ID / 已有本地文件
# 平台自动识别(douyin/weixin视频号/xiaohongshu/bilibili),用户贴什么链接都行:
python3 $REPO/scripts/fetch_video.py --url "https://v.douyin.com/xxxx/" --out-dir $WD
python3 $REPO/scripts/fetch_video.py --aweme-id 7677548065384877346 --out-dir $WD
python3 $REPO/scripts/fetch_video.py --local /path/to/video.mp4 --out-dir $WD --platform douyin
#    可选: 采评论区VOC(报告自动带上)
python3 $REPO/scripts/fetch_comments.py --aweme-id 7677548065384877346 --workdir $WD --max 100

# 2. 转写(fmode-listen → 讯飞LFASR, 分段时间戳, 毫秒)
python3 $REPO/scripts/transcribe.py --workdir $WD

# 3. 抽帧+豆包视觉逐帧点评(计费可控: --fps/--max-frames, 或 --skip-vision 只抽帧)
python3 $REPO/scripts/frame_analysis.py --workdir $WD --fps 0.15 --max-frames 12

# 4. 生成报告(暗色主题/手机自适应/分段点击跳转播放/词频情绪/VOC/相对路径)
python3 $REPO/scripts/build_report.py --workdir $WD --title "拉片分析:XXX"

# 5. 发布到自己的S3个人空间 → 得公开URL
python3 $REPO/scripts/publish.py --workdir $WD
# → https://storage-s3-nkkj.obs.cn-north-4.myhuaweicloud.com/user/<FEME_USERID>/report/lapian/douyin/<YYYYMMDD>/report.html

产物结构(S3 路径规范, 全英文小写)

user/<userid>/report/lapian/<平台简称>/<YYYYMMDD>/
├── report.html      ← 报告入口(资源全部相对路径, 目录自包含)
├── video.mp4 / audio.wav / transcript.json
├── frames/f0001.jpg...
└── assets/          # analysis.json / comments.json / meta.json

平台简称映射: douyin / xiaohongshu / weixin / bilibili / tiktok / kuaishou / shortdrama。 发布后对每个产物做 HEAD 校验, 全 200 才算成功。

报告包含

  1. 原视频播放器置顶(粘性顶栏), 每段「⏵播放这一段」跳转对应时间
  2. 逐段可折叠卡片: 时间戳+台词+抽帧截图(画面描述)+技法标签(导师·技法)+可复用模板
  3. 整体结构表(起承转合)+核心发现
  4. 词频TOP/情绪分布/语速(纯CSS条形图, 零外网依赖)
  5. 评论区VOC: 正/中/负分布+高赞TOP5+每条洞察
  6. 3 条可执行建议

分析依据

  • references/methodology.md — 薛辉/郑经说/三把刀/小希/南门 技法表(点评提示词的来源)
  • references/voc-api.md — VOC 网关接口(搜索/详情/评论, 解析层级与坑)
  • references/s3-upload.md — S3 发布规范(virtual-hosted/ACL/相对路径/凭证回退)

实现要点(读脚本前先看)

  • scripts/common.py — 身份参数解析/VOC调用/S3 SigV4 纯stdlib实现(不依赖boto3, OBS必须virtual-hosted寻址)
  • scripts/build_report.py — 内置 mini-Jinja(stdlib), 无需安装 jinja2; LLM 点评失败自动回退规则启发式, 永不中断流程
  • 转写短路: transcript.json 已存在则跳过(转写按分钟计费, 别重复花钱)
  • 视频下载完整校验: ffprobe 时长异常即报错, 禁止截断件进入分析

坑(实测)

  • VOC 网关 401 先查 token 是否 sk- 开头且 Bearer 前缀完整
  • OBS path-style 上传报 VirtualHostDomainRequired → bucket 必须放进 Host
  • urllib 对该网关要先设 UA(默认 UA 偶发被 WAF 拦, curl 不拦)
  • fmode-listen 是异步转写, 长音频耐心等(脚本已设 30 分钟超时)
  • 豆包视觉模型: 用 doubao-seed-2-0-pro-260215(当前账号唯一可用豆包pro), DeepSeek 系无视觉
  • 同一视频当天重跑: publish.py 幂等覆盖同日期目录, 直接重传即可

微信视频号(weixin/channels)专用说明 2026-09-03

  • 链接形态: 用户从微信里复制的链接常见两种——
    1. https://channels.weixin.qq.com/platform/post/wxv_xxxx(网页端分享)
    2. https://finder.video.qq.com/251/...&vid=wxv_xxxx&...(客户端外链)
  • 自动识别: --platform auto(默认)按 URL 判平台,wxv_ 前缀的视频 ID 会自动提取,用户不需要选平台
  • 详情接口: 视频号走 weixin/channels/fetch_one_video → 失败降级 weixin/channels/fetch → 再失败降级直连模式(仅下载视频做拉片,不阻塞流程)
  • 与抖音的差异: 视频号 meta 字段是 title/desc/nickname/video_url(非 aweme 结构),summary 已做归一;评论区暂无视频号通道,拉片报告的 VOC 区会标注"该平台暂不支持评论区采集"
  • 实测路径: 拿到真实视频号链接后先跑一次 fetch_video.py --url <链接> --out-dir /tmp/test-wx,确认下载链路通,再给用户出报告