Communitygithub.com

ClayKW/skill

根据 TikTok 视频链接识别电影或剧集名称。下载视频、拆分为 10 帧、由两个 AI 角色(侦探 vs 怀疑者)交替讨论并通过网络搜索验证,所有结果通过 rclone 保存到 Google Drive。

skill 是什么?

此技能旨在从 TikTok 视频中识别电影或剧集。它首先通过一个 Bash 脚本下载 TikTok 视频,提取关键帧(默认跳过开头和结尾的 10%),并将视频上传至 Google Drive。然后,它会启动两个 AI 子代理进行多轮对话:一个扮演“侦探”角色,负责分析每一帧的视觉线索(如服装、场景、演员等),并提出 1-3 个候选标题;另一个扮演“怀疑者”角色,利用网络搜索功能验证这些候选,通过查找具体剧集细节(如 IMDb/TMDB 上的剧集时长、剧情梗概)来确认或反驳。整个过程支持两种模式:'per-gambar'(逐帧深入讨论)和 'batch'(批量讨论所有帧,更高效)。讨论完成后,它会生成结构化结论,对于剧集还会尝试推断特定季、集、曲目和时长。所有分析记录、讨论记录和最终结论都会作为 Markdown 文件保存到 Google Drive。该技能可直接在支持 shell 工具和子代理的 AI 代理平台(如 OpenAI Codex、Claude Code 等)中使用,前提是环境中配置了 rclone。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ClayKW/skill/tree/HEAD/movie-finder

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Movie Finder

用于通过帧分析和两个 AI 的讨论,从 TikTok 视频中识别电影或剧集。所有工作文件(视频、帧、转录、结果)均通过 rclone 保存到 Google Drive —— 本地仅临时使用,之后会被清理。

用户可设置的参数(根据请求提问或推测)

参数默认值说明
帧数10grab_frames.sh 的第二个参数
讨论模式per-gambar每帧 3 轮讨论(较重,10 帧约需 30 次讨论)。batch 模式 = 所有帧一次性 3 轮讨论(更节省,适用于大多数情况)
轮数3AI1 ↔ AI2 的交替回复对数
rclone 远程路径gdrive:Linux-Server/movie-finder可通过环境变量 MF_REMOTE 覆盖
保留本地0第三个参数,1 = 同时在本地保存视频

流程

1. 下载 + 拆分帧

bash scripts/grab_frames.sh "<url_tiktok>" [num_frames] [keep_local]
  • 输出 JSON 包含:gdrive(目标文件夹)、frames_local(帧 jpg 路径)、duration_sec、video_size、scratch_dir。
  • 脚本自动执行:下载 → 提取帧(跳过开头/结尾 10%)→ 上传到 gdrive → 删除本地视频。帧在会话期间保留在本地(你需要能够查看它们)。
  • 下载失败(区域/年龄限制):告知用户,建议提供替代链接。

2. 查看所有帧

使用读取工具(图片)读取 frames_local 中的每个 jpg 文件。自行记录线索:服装、地点、演员、时代/胶片颗粒、屏幕上的文字、水印、摄影风格、片头字幕。

3. 两个 AI 的讨论(通过工具子代理,代理: general)

交替运行两个角色,类似 WhatsApp 聊天:

  • 🕵️ AI 1 侦探 — 提示:分析帧的视觉(说明你看到的具体线索),猜测 1-3 个候选 标题 + 年份 + 理由,给出置信度。AI 1 必须直接读取帧文件(提供其路径)。
  • 🔍 AI 2 怀疑者 — 提示:使用网络搜索工具验证每个候选(搜索 "<标题> <年份> 电影" + 独特场景细节),用链接证据反驳或确认,可提议新的候选。

规则:

  • 1 轮 = AI 1 分析 → AI 2 验证。默认为 3 轮。
  • 在转录和回答中记录并显示每个 AI 使用的模型(示例标题:🕵️ AI 1 — 侦探 [model: custom/auto])。从子代理元数据/配置中检查模型名称;如果两个角色使用相同模型,如实记录。也包含在 diskusi.md 和最终回答中。
  • per-gambar 模式:对每个帧重复,始终包含上一轮转录 + 现有候选上下文,以便讨论连贯。去重:如果在不同帧中重复出现相同候选,只需 1 轮加强确认,无需完整的 3 轮。
  • batch 模式:在单次 3 轮讨论中发送所有帧(路径列表)。
  • 不要设置子代理的 model 参数(使用默认值)。
  • 建议限制每个子代理:AI 1 只分析(不需要工具),AI 2 专注于网络搜索。

4. 结论

整理:标题 + 年份 + 置信度(高/中/低)+ AI 2 提供的参考链接 + 如果未达成共识则注明。

对于剧集/电视剧,AI 2(最后一轮)必须尝试补充:

  • 季 & 集:片段最可能来自哪一集(线索:已识别的场景/角色/服装 + 网络搜索“剧集指南”,每集梗概,TMDB 每集演职员表)。
  • 剧集标题(如果有)。
  • 精确到分钟:秒的剧集时长(格式 47:23),来自 IMDb(技术规范/剧集页面)或 TMDB —— 不是粗略估计。
  • 如果无法确定具体剧集,明确写明“无法确定剧集” + 剧集时长即可。
  • 额外奖励(尽力而为,标注“估算”):根据已识别的场景在剧集指南/梗概中的位置,估算片段在剧集中的时间戳位置。

对于电影:注明精确到 小时:分钟:秒 的电影时长(格式 1:52:47),来自 IMDb 技术规范/TMDB,而不是“±120 分钟”。

5. 保存结果到 gdrive(不创建新的本地文件)

  • 完整转录 → rclone rcat "<DEST>/diskusi.md"(聊天格式:emoji 🕵️/🔍,角色名称,回复内容)。
  • 结论 → rclone rcat "<DEST>/hasil.md"。

serail/hasil.md 模板(必须填写剧集详情):

# 识别结果 — Movie Finder
- 标题 / 类型 / 年份 / 平台 / 创建者 / 置信度

## 剧集详情
- 季 & 集 : S01E05(如果可以确定,否则“无法确定”)
- 剧集标题   : "Beautiful Billionaires"
- 剧集时长  : 47:23(分钟:秒,来自 IMDb/TMDB)
- 总剧集数   : 11(S1)
- 片段估计位置 : ±12:40 在剧集中(尽力而为,估算)

## 为何匹配
...主要证据...

## 参考链接
...链接...

对于电影:将“剧集详情”部分替换为“电影时长: 1:52:47(小时:分钟:秒)”。

6. 本地清理

rm -rf <scratch_dir>

7. 回答用户

回答顺序:如果是剧集,先说剧集详情 & 时长(季,集号,剧集标题,运行时长)或电影时长 + 简短的讨论要点总结 + 参考链接 + gdrive 文件夹位置 —— 然后把最终猜测(🎬 结果:标题/年份)放在最底部作为结尾。除非被要求,否则不要显示完整转录。

转录示例

🕵️ AI 1 — 侦探 [model: custom/auto]: 帧 3 显示 19 世纪英军制服... 候选: "1917" (2019), "The Northman" (2022)
🔍 AI 2 — 怀疑者 [model: custom/auto]: 我查一下... [网络搜索] "The Northman" 是维京时代,不匹配。"1917" 匹配:战壕战,一镜到底。已验证: [链接]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能