闲社服务运行正常AI智能体自动化平台
c

本地视频剪辑

技能标识:clip-local

Clips a YouTube video locally using yt-dlp and ffmpeg. Supports auto-highlight detection, translation, and CapCut-style karaoke subtitle burning. Triggers when the user wants local video clipping, highlight extraction, or subtitle generation. Optional GROQ_API_KEY env var enables Whisper transcription fallback when YouTube has no subtitles.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.1
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

本地视频剪辑

影片剪輯(本地端)

需要 yt-dlp、ffmpeg 和 python3。使用 command -v 檢查。

尋找外掛腳本

ASS 卡拉 OK 產生器與此外掛綁定。請在開始時定位一次(這僅搜尋外掛自帶的檔案):

bash
ASS_SCRIPT=$(find ~/.claude/plugins -path /clip-local//scripts/ass-karaoke.py 2>/dev/null | head -1)

自動精華模式

當使用者未指定開始/結束時間時(例如「幫我剪這個影片的精華」或「clip the best parts」):

  1. 1. 下載完整逐字稿(下方步驟 1–2)
  2. 閱讀完整逐字稿,找出 3–5 個精華片段。針對每個片段記錄:
- 開始與結束時間戳 - 簡短描述為何有趣(關鍵見解、有趣時刻、戲劇性轉折等)
  1. 3. 將精華片段以編號選項呈現給使用者,詢問要剪輯哪些片段
  2. 僅剪輯使用者選擇的片段,然後繼續正常流程(翻譯、字幕等)

流程

1. 取得影片資訊與原始語言

bash
yt-dlp --print title --print duration_string --print language \
--no-playlist --no-warnings --force-ipv4

第三行是原始語言代碼(例如 en、en-US、ja、zh-Hant)。下載字幕時使用基礎代碼(- 之前的部分)。

2. 下載原始語言字幕

bash
yt-dlp --write-auto-sub --sub-lang * --sub-format vtt --skip-download \
--no-playlist --no-warnings --force-ipv4 \
--extractor-args youtube:player-client=default,mweb \
-o subs

將 替換為步驟 1 中的基礎語言代碼(例如 en、ja)。* 萬用字元可匹配 en-orig 等變體。請勿使用 YouTube 的自動翻譯字幕——品質較差。所有翻譯由您自行完成。

3. 修剪 VTT 至剪輯範圍

剪輯部分內容時(例如 10–130 秒),過濾 VTT 僅保留時間戳落在範圍內的提示。保留原始的絕對時間戳——不要調整它們。 ass-karaoke.py 中的 --offset 標誌會處理時間偏移。

過濾時,移除時間戳行中的任何額外元資料(例如 align:start position:0%)——僅保留 HH:MM:SS.mmm --> HH:MM:SS.mmm。ASS 解析器的正則表達式需要乾淨的時間戳行。

4. 翻譯字幕

撰寫並執行一個 Python 腳本:

  1. 1. 解析修剪後的 VTT(正則表達式:HH:MM:SS.mmm --> HH:MM:SS.mmm + 文字行)
  2. 將所有文字行收集到一個列表中
  3. 您翻譯該列表(輸出一個翻譯後字串的 Python 列表)
  4. 使用相同的時間戳和翻譯後的文字寫入新的 VTT

範例結構:
python
import re

解析原始 VTT

with open(clip.vtt) as f: content = f.read() cues = re.findall(r(\d{2}:\d{2}:\d{2}\.\d{3} --> \d{2}:\d{2}:\d{2}\.\d{3})\n((?:(?!\d{2}:\d{2}).+\n?)*), content)

翻譯——在此填入您的翻譯,每個提示對應一個

translations = [ 翻譯後的第一行, 翻譯後的第二行, # ... ]

寫入翻譯後的 VTT

with open(clip_translated.vtt, w) as f: f.write(WEBVTT\n\n) for (timestamp, _), translation in zip(cues, translations): f.write(f{timestamp}\n{translation.strip()}\n\n)

生成此腳本並填入 translations 列表,然後執行。這可確保時間戳精確且 VTT 格式正確。

5. 生成 ASS 卡拉 OK 字幕

bash
python3 $ASSSCRIPT -o subs.ass -t --offset SECONDS>

  • - 第一個參數 = 原始語言 VTT(上方卡拉 OK 時間軸)
  • -t = 翻譯後 VTT(顯示在卡拉 OK 行下方)
  • --offset = 剪輯開始時間(相對於剪輯開始調整時間戳)

處理 YouTube 滾動字幕去重、中日韓逐字分割及雙語排版。

6. 解析串流網址並剪輯

一次呼叫取得影片+音訊網址:

bash
URLS=$(yt-dlp --get-url -f bv[height<=720]+ba/b[height<=720] \
--no-playlist --no-warnings --force-ipv4 \
--extractor-args youtube:player-client=default,mweb )
VIDEO_URL=$(echo $URLS | head -1)
AUDIO_URL=$(echo $URLS | tail -1)

然後使用 ffmpeg 剪輯:

  • - 含字幕:-vf ass=subs.ass -c:v libx264 -preset fast -crf 23 -c:a aac -b:a 128k -movflags +faststart
  • 不含字幕:-c copy -avoidnegativets make_zero
  • 輸入定位:在每個 -i 前使用 -ss
  • 分離串流:-map 0:v:0 -map 1:a:0

Whisper 備援(無 YouTube 字幕)

如果 yt-dlp 找不到自動字幕且使用者已設定 GROQAPIKEY:

  1. 1. 下載音訊:yt-dlp -f ba -x --audio-format mp3 --postprocessor-args ffmpeg:-ac 1 -ar 16000 -b:a 64k
  2. 轉錄:POST https://api.groq.com/openai/v1/audio/transcriptions 搭配 model=whisper-large-v3、responseformat=verbosejson
  3. 將片段轉換為 VTT

如果未設定 GROQAPIKEY,告知使用者無可用字幕,並詢問如何處理(無字幕剪輯,或設定金鑰)。

常見問題

  • - YouTube 限流:將 cookies 匯出至檔案,使用 --cookies cookies.txt
  • ASS 缺少中日韓字型:brew install font-noto-sans-cjk-tc(macOS)
  • Groq 25MB 音訊限制:超過 50 分鐘的影片需分割音訊
  • 串流網址約 6 小時過期:若剪輯失敗請重新解析
  • 字幕嵌入會重新編碼影片(60 秒片段約需 1–3 分鐘)

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 video-clip-skill-1776275412 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 video-clip-skill-1776275412 技能

通过命令行安装

skillhub install video-clip-skill-1776275412

下载

⬇ 下载 clip-local v1.0.1(免费)

文件大小: 6.15 KB | 发布时间: 2026-4-16 17:14

v1.0.1 最新 2026-4-16 17:14
**No functional changes; documentation and description improvements.**

- Updated skill description for clarity: transcription fallback via GROQ_API_KEY now described as optional, not default.
- Instructions specify that finding the bundled `ass-karaoke.py` script only searches the plugin's own files.
- Clarified VTT filtering: extra metadata on timestamp lines should be stripped to ensure compatibility.
- Whisper fallback behavior now explicitly asks users how to proceed if no GROQ_API_KEY is set and no subs are available.
- Added minor clarifications and more robust language to the troubleshooting/common issues section.
返回顶部