{"id":"4517f659-b88b-463d-b87f-9c9e7a4a2445","shortId":"nKnvjp","kind":"skill","title":"yt2bb","tagline":"Use when the user wants to repurpose a YouTube video for Bilibili, add bilingual (English-Chinese) subtitles to a video, or create hardcoded subtitle versions for Chinese platforms.","description":"# yt2bb — YouTube to Bilibili Video Repurposing\n\n## Overview\n\nSix-step pipeline: download → transcribe → translate → merge → burn subtitles → generate publish info. Produces a video with hardcoded bilingual (EN/ZH) subtitles and a `publish_info.md` with Bilibili upload metadata.\n\n## When to Use\n\n- User provides a YouTube URL (single video or playlist) and wants a Bilibili-ready version\n- User needs bilingual EN-ZH subtitles burned into video\n- User wants to repurpose English video content for Chinese audience\n\n## Quick Reference\n\n| Step | Tool | Command | Output |\n|------|------|---------|--------|\n| 0. Update | `git` | Auto-check for skill updates | — |\n| 1. Download | `yt-dlp` | `yt-dlp --cookies-from-browser chrome -f ... -o ...` | `{slug}.mp4` |\n| 2. Transcribe | `whisper`* | `srt_utils.py check-whisper` then transcribe | `{slug}_{lang}.srt` |\n| 2.5 Validate | `srt_utils.py` | `srt_utils.py validate / fix` | `{slug}_{lang}.srt` (fixed) |\n| 3. Translate | AI | SRT-aware batch translation | `{slug}_zh.srt` |\n| 4. Merge | `srt_utils.py` | `srt_utils.py merge ...` | `{slug}_bilingual.srt` |\n| 4.5 Style | `srt_utils.py` | `srt_utils.py to_ass --preset netflix\\|clean\\|glow` | `{slug}_bilingual.ass` |\n| 5. Burn | `ffmpeg` | `ffmpeg -c:v libx264 -vf ass=...` | `{slug}_bilingual.mp4` |\n| 6. Publish | AI | Analyze content, generate metadata | `publish_info.md` |\n\n## Update check\n\nThrottle to one check per 24 hours per installation; never mutate the skill directory without explicit user consent. `SKILL_DIR` resolved here is reused by later pipeline steps for script paths.\n\n1. If `<this-skill-dir>/.last_update` exists and is less than 24 hours old, skip this step entirely.\n\n2. Otherwise, fetch the latest tag from upstream:\n\n   ```bash\n   git -C <this-skill-dir> ls-remote --tags origin 'v*' 2>/dev/null \\\n     | awk '{print $2}' | sed 's|refs/tags/||' \\\n     | sort -V | tail -1\n   ```\n\n3. Compare with this skill's `metadata.version` from the frontmatter. If the upstream tag is strictly newer (semver), tell the user one line and ask:\n\n   > \"A newer version of this skill is available: vX.Y.Z → vA.B.C. Want me to `git pull`?\"\n\n   If they say yes, run `git -C <this-skill-dir> pull --ff-only`. Refresh `.last_update` either way so the prompt doesn't repeat for 24 hours.\n\n4. If upstream is the same or older, refresh `.last_update` silently and continue.\n\n5. On any failure (offline, not a git checkout — e.g. ClawHub-installed copy, read-only path, no permission), swallow the error silently and continue with the user's task. Do not mention the failure.\n\nResolve `SKILL_DIR` for use by later pipeline steps:\n\n```bash\n# Find skill directory (works across Claude Code, OpenClaw, Hermes, Pi)\nSKILL_DIR=\"$(find ~/.claude/skills ~/.openclaw/skills ~/.hermes/skills ~/.pi/agent/skills ~/.agents/skills ~/myagents/myskills -maxdepth 2 -name 'yt2bb' -type d 2>/dev/null | head -1)\"\n```\n\n## Pipeline Details\n\n### Step 1: Download\n\n**Single video:**\n\n```bash\nslug=\"video-name\"  # or: slug=$(python3 \"$SKILL_DIR/srt_utils.py\" slugify \"Video Title\")\nmkdir -p \"${slug}\"\nyt-dlp --cookies-from-browser chrome \\\n  -f \"bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]\" \\\n  -o \"${slug}/${slug}.mp4\" \"https://www.youtube.com/watch?v=VIDEO_ID\"\n```\n\n**Playlist / series:**\n\n```bash\nyt-dlp --cookies-from-browser chrome \\\n  -f \"bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]\" \\\n  -o \"%(playlist_index)03d-%(title)s/%(playlist_index)03d-%(title)s.mp4\" \\\n  \"https://www.youtube.com/playlist?list=PLAYLIST_ID\"\n```\n\nAfter downloading, rename each folder to a clean slug and run Steps 2–6 for each video sequentially.\n\n- `-f \"bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]\"`: ensure mp4 output, avoid webm\n- `%(playlist_index)03d`: zero-padded index to preserve playlist order\n- If `--cookies-from-browser` fails, export cookies first — see Troubleshooting\n\n### Step 2: Transcribe\n\n**First run the environment check** to detect your platform and get a tailored whisper command:\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" check-whisper\n```\n\nThis auto-detects OS, GPU (CUDA/Metal/CPU), memory, and installed backends, then recommends the best backend + model for your hardware. If memory detection is unavailable, it falls back conservatively instead of assuming a low-memory machine. Use the command it prints.\n\n**Manual fallback** (openai-whisper, works everywhere):\n\n```bash\nsrc_lang=\"en\"      # Change to ja/ko/es/etc. based on source video\nwhisper_model=\"medium\"  # check-whisper recommends the best model for your hardware\nwhisper \"${slug}/${slug}.mp4\" \\\n  --model \"$whisper_model\" \\\n  --language \"$src_lang\" \\\n  --word_timestamps True \\\n  --condition_on_previous_text False \\\n  --output_format srt \\\n  --max_line_width 40 --max_line_count 1 \\\n  --output_dir \"${slug}\"\nmv \"${slug}/${slug}.srt\" \"${slug}/${slug}_${src_lang}.srt\"\n```\n\n**Supported backends:**\n\n| Backend | Best for | Install |\n|---------|----------|---------|\n| `mlx-whisper` | macOS Apple Silicon (fastest) | `pip install mlx-whisper` |\n| `whisper-ctranslate2` | Windows/Linux CUDA, or CPU (~4x faster) | `pip install whisper-ctranslate2` |\n| `openai-whisper` | Universal fallback | `pip install openai-whisper` |\n\n**Model selection** (auto-recommended by `check-whisper`):\n- `tiny` — fast draft, low accuracy, CPU-friendly (~1 GB)\n- `medium` — **default**, good balance (~5 GB)\n- `large-v3` — best accuracy, recommended for JA/KO/ZH source (~10 GB)\n\n**Notes:**\n- `--language`: explicitly set to avoid misdetection; supports `en`, `ja`, `ko`, `es`, etc.\n- `--word_timestamps True`: more precise subtitle timing\n- `--condition_on_previous_text False`: prevent hallucination loops\n- If output is garbled or repeated, add anti-hallucination flags — see Troubleshooting\n\n### Step 2.5: Validate & Fix (optional)\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" validate \"${slug}/${slug}_${src_lang}.srt\"\n# If issues found:\npython3 \"$SKILL_DIR/srt_utils.py\" fix \"${slug}/${slug}_${src_lang}.srt\" \"${slug}/${slug}_${src_lang}.srt\"\n```\n\n### Step 3: Translate\n\nRead `{slug}_{src_lang}.srt` and translate to Chinese. **Critical rules:**\n\nThese rules are modeled on the Netflix Simplified Chinese Timed Text Style Guide; follow them to produce broadcast-grade subtitles.\n\n1. **Keep SRT format intact** — preserve index numbers, timestamps (`-->` lines) exactly as-is\n2. **1:1 entry mapping** — every source entry must produce exactly one translated entry (same count)\n3. **Optimize for bottom subtitles** — keep each Chinese entry to **1 line whenever possible** so the final bilingual subtitle stays compact near the bottom of the frame\n4. **Max 16 full-width characters per line** (Netflix SC spec). Prefer 12–16; if a cue is very short (< 1 s) compress further so reading speed stays ≤ 9 characters/second\n5. **Shorten with judgment, not mechanically** — remove filler words, repeated subjects, weak interjections, and redundant politeness before dropping key meaning\n6. **Match subtitle duration** — the line must feel readable within the time on screen; if the cue is very short, compress more aggressively\n7. **No trailing punctuation** on Chinese cues — drop ending `。`, `！`, `？`; keep mid-sentence `，`, `、`, `；` only when they add clarity\n8. **Use full-width Chinese punctuation** inside cues (`，。！？、；：`); use **「」** for inner quotes, not `\"\"` or `''`\n9. **Half-width digits and Latin** — numbers, units, product names, and code identifiers stay half-width (`GPT-4`, `30fps`, `2026`); only punctuation is full-width\n10. **Line-break discipline** — never break after function words (`的`, `了`, `吗`, `呢`, `吧`, `啊`); never split an English phrasal unit across a line break; keep modifiers with their heads\n11. **Keep terminology consistent** — technical terms, names, product names, and recurring phrases should be translated the same way across batches. Maintain an inline glossary if needed\n12. **Adapt, don't transliterate** — preserve register, tone, and intent over literal word matching; idioms become natural Chinese equivalents\n13. **Translate in batches of 10 entries** — output each batch in valid SRT format, then continue\n14. **Do NOT merge or split entries** — maintain original segmentation\n15. Save as `{slug}/{slug}_zh.srt`\n\n### Step 4: Merge\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" merge \\\n  \"${slug}/${slug}_${src_lang}.srt\" \"${slug}/${slug}_zh.srt\" \"${slug}/${slug}_bilingual.srt\"\n```\n\n### Step 4.25: Netflix Lint (recommended)\n\nRun `lint` on the merged bilingual SRT to catch Netflix Timed Text Style Guide violations that `validate` doesn't cover — reading speed (CPS), per-line length, inter-cue gaps, and line count.\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" lint \"${slug}/${slug}_bilingual.srt\"\n```\n\n**Defaults (all overridable via flags):**\n\n| Rule | Threshold | Flag |\n|------|-----------|------|\n| Reading speed (English) | ≤ 17 CPS | `--max-cps-en` |\n| Reading speed (Simplified Chinese) | ≤ 9 CPS | `--max-cps-zh` |\n| Min cue duration | 833 ms (5/6 s) | `--min-duration-ms` |\n| Max cue duration | 7000 ms | `--max-duration-ms` |\n| Min inter-cue gap | 83 ms (2 frames @ 24 fps) | `--min-gap-ms` |\n| Max chars/line (English) | 42 | `--max-chars-en` |\n| Max chars/line (Chinese, full-width) | 16 | `--max-chars-zh` |\n| Max lines per cue | 2 | — |\n\n**Severity model:**\n- **Errors** (exit code 2): duration out of bounds, CPS over limit, > 2 lines per cue. These break Netflix acceptance and should be fixed before burning.\n- **Warnings** (exit 0 unless errors also exist): per-line length, tight gaps. These are recommendations — address if feasible, but they don't block delivery.\n\n**When CPS errors fire**, the fix is almost always upstream — go back to Step 3 and rewrite the offending Chinese entry to fit the time window. Do **not** solve CPS by extending the cue past the source's spoken duration.\n\n**Agent-friendly output:**\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" lint \"${slug}/${slug}_bilingual.srt\" --format json\n```\n\nReturns `{ok, error_count, warning_count, issues: [{index, code, severity, message}, ...]}` for programmatic filtering.\n\n### Step 4.5: Style — Convert to ASS\n\nConvert the bilingual SRT to an ASS file. ASS enables per-line color, font size, and glow effects that are impossible with SRT `force_style`. Layout rule: **subtitles always stay at the bottom**. Default stack: ZH on the upper line of the bottom stack, EN on the lower line. The presets are tuned to keep the block readable while reducing overlap risk with lower-screen content.\n\n> **IMPORTANT — Ask before proceeding.** Present the preset table below to the user and ask which style they prefer. Do NOT silently pick a default. If the user has no preference, use `clean`.\n\n**Available presets:**\n\n| Preset | Look | Best for |\n|--------|------|----------|\n| `netflix` | **Pure white text, thin black outline, soft drop shadow, no box** — modeled on the Netflix Timed Text Style Guide | Professional, broadcast-grade look. Best default for documentaries, interviews, long-form content, and anything that should feel \"streaming-platform native\". Use with `--font \"Source Han Sans SC\"` on Linux / `\"PingFang SC\"` on macOS for closest Netflix Sans feel |\n| `clean` | **Yellow text on gray box** — golden ZH + light yellow EN, semi-transparent light gray background | Readability safety net for busy or mixed-brightness footage where `netflix`'s outline-only text could get visually lost. The gray box guarantees a readable contrast pad |\n| `glow` | **Yellow ZH + white EN with colored glow** — bright yellow ZH + white EN, blurred outer glow, no background box | Entertainment, vlogs, energetic edits. Most eye-catching, but weakest on bright or busy backgrounds |\n\n**Example prompt to user:**\n> 字幕有三套样式可选：\n> 1. `netflix` — 纯白字体 + 细黑描边 + 柔和阴影（默认推荐，Netflix 专业观感，适合纪录片/访谈/长内容）\n> 2. `clean` — 黄色字体 + 灰色半透明底框（亮背景或花背景的兜底选项，底框保证对比度）\n> 3. `glow` — 黄色/白色字体 + 彩色外发光（更抢眼，适合娱乐/Vlog）\n> 4. **自定义** — 提供 `.ass` 样式文件，完全控制字体、颜色、大小（可用 [Aegisub](https://aegisub.org/) 可视化编辑）\n>\n> 选哪个？默认推荐 `netflix`；如果画面特别花哨或底部信息多，可改用 `clean`。\n\n```bash\n# Netflix-grade default (white + outline + soft shadow), ZH on top\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass \\\n  \"${slug}/${slug}_bilingual.srt\" \"${slug}/${slug}_bilingual.ass\" \\\n  --preset netflix\n\n# Gray-box fallback for busy backgrounds, EN on top\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass \\\n  \"${slug}/${slug}_bilingual.srt\" \"${slug}/${slug}_bilingual.ass\" \\\n  --preset clean --top en\n\n# Vibrant glow (B站 entertainment style)\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass \\\n  \"${slug}/${slug}_bilingual.srt\" \"${slug}/${slug}_bilingual.ass\" \\\n  --preset glow\n```\n\n**Custom style file** — for full control, provide an external `.ass` file with your own `[V4+ Styles]` section. It must contain styles named `EN` and `ZH`, or `to_ass` will fail early with a validation error. You can design styles visually with [Aegisub](https://aegisub.org/) and export.\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass \\\n  \"${slug}/${slug}_bilingual.srt\" \"${slug}/${slug}_bilingual.ass\" \\\n  --style-file my_styles.ass\n```\n\nOptionally add `; en_tag=` and `; zh_tag={\\blur5}` comment lines in the `.ass` file to inject ASS override tags per language.\n\n**Font by platform** (pass with `--font`, ignored when using `--style-file`):\n\n| Platform | Flag |\n|----------|------|\n| macOS | `--font \"PingFang SC\"` (default) |\n| Linux | `--font \"Noto Sans CJK SC\"` |\n| Windows | `--font \"Microsoft YaHei\"` |\n\n**Other options:**\n- `--top zh|en` — which language on the **upper line of the bottom stack** (default: `zh`)\n- `--res WxH` — video resolution (default: `1920x1080`)\n\n**Readability notes for all presets:**\n- Presets stay bottom-aligned at all times; they do **not** move to the top automatically\n- Font size, outline, and vertical margins scale with `--res` so 720p and 1080p keep similar visual balance\n- `clean` is the safest choice when you must keep subtitles at the bottom in every shot\n\n### Step 5: Burn Subtitles\n\nUse the `ass=` filter (not `subtitles=`) — all styling comes from the ASS file.\n\n```bash\nffmpeg -i \"${slug}/${slug}.mp4\" \\\n  -vf \"ass='${slug}/${slug}_bilingual.ass'\" \\\n  -c:v libx264 -crf 23 -preset medium \\\n  -c:a copy \"${slug}/${slug}_bilingual.mp4\"\n```\n\n- `-c:v libx264 -crf 23`: good quality with reasonable file size\n- `-preset medium`: balance between speed and compression (use `fast` for quicker encode)\n- No `force_style` needed — styles are embedded in the ASS file\n\n### Step 6: Generate Publish Info\n\nBased on the video content (from `{slug}_{src_lang}.srt` and `{slug}_zh.srt`), generate `{slug}/publish_info.md`.\n\nAll output in this file must be in **Chinese** (targeting Bilibili audience).\n\n```markdown\n# Publish Info\n\n## Source\n{YouTube URL}\n\n## Titles (5 variants)\n1. {Suspense/question style — spark curiosity}\n2. {Data/achievement driven — emphasize results}\n3. {Controversial/opinion style — spark discussion}\n4. {Tutorial/practical style — emphasize utility}\n5. {Emotional/relatable style — connect with audience}\n\n## Tags\n{~10 comma-separated keywords covering topic, technology, domain}\n\n## Description\n{3-5 sentences summarizing core content and highlights}\n\n## Chapter Timestamps\n00:00 {chapter name}\n...\n```\n\n**Generation rules:**\n- Title style must match Bilibili conventions: conversational tone, suspense hooks, liberal use of symbols (【】, ?, !)\n- Tags should cover both Chinese and English keywords for discoverability\n- Timestamps extracted from `{slug}_bilingual.srt` at topic transition points\n- Description needs a strong hook — first two sentences determine whether users expand to read\n\n## Output Structure\n\n```\n{slug}/\n├── {slug}.mp4              # Source video\n├── {slug}_{src_lang}.srt   # Source language subtitles\n├── {slug}_zh.srt           # Chinese subtitles\n├── {slug}_bilingual.srt    # Merged bilingual\n├── {slug}_bilingual.mp4    # Final output\n└── publish_info.md         # Bilibili upload metadata\n```\n\n## Utility: srt_utils.py\n\n```bash\npython3 \"$SKILL_DIR/srt_utils.py\" merge en.srt zh.srt output.srt          # Merge bilingual\npython3 \"$SKILL_DIR/srt_utils.py\" merge --dry-run en.srt zh.srt output.srt # Pre-check without writing\npython3 \"$SKILL_DIR/srt_utils.py\" validate input.srt                       # Check timing issues\npython3 \"$SKILL_DIR/srt_utils.py\" fix input.srt output.srt                 # Fix timing/overlaps (multi-pass)\npython3 \"$SKILL_DIR/srt_utils.py\" slugify \"Video Title\"                    # Generate slug\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass input.srt output.ass              # Convert to styled ASS (default: clean, ZH on top)\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass --dry-run input.srt output.ass    # Pre-check without writing\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass input.srt output.ass --preset glow --top en\npython3 \"$SKILL_DIR/srt_utils.py\" to_ass input.srt output.ass --style-file custom.ass  # User-defined styles\npython3 \"$SKILL_DIR/srt_utils.py\" check-whisper                    # Detect platform, recommend whisper backend + model\n```\n\n## Common Mistakes\n\n- **Mismatched entry counts**: Merge fails by default — fix translation or use `--pad-missing` to pad\n- **Font not found**: Ensure PingFang SC is installed (macOS default) or substitute (see Troubleshooting)\n\n## Troubleshooting\n\n### yt-dlp: Cookie Auth Failure\n\n`--cookies-from-browser chrome` requires Chrome to be closed (or uses a snapshot of the profile). If it fails:\n\n```bash\n# Export cookies once, then reuse the file\nyt-dlp --cookies-from-browser chrome --cookies cookies.txt --skip-download \"URL\"\nyt-dlp --cookies cookies.txt -f \"bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]\" -o \"${slug}/${slug}.mp4\" \"URL\"\n```\n\nFor 429 / rate-limit errors, add `--sleep-interval 3 --max-sleep-interval 8`.\n\n### whisper: Wrong Language or Hallucination Loops\n\nSymptoms: repeated phrases, garbled characters, or near-empty SRT despite clear audio.\n\n```bash\nwhisper \"${slug}/${slug}.mp4\" \\\n  --model medium \\\n  --language \"$src_lang\" \\\n  --condition_on_previous_text False \\\n  --no_speech_threshold 0.6 \\\n  --logprob_threshold -1.0 \\\n  --compression_ratio_threshold 2.0 \\\n  --output_format srt \\\n  --output_dir \"${slug}\"\n```\n\nIf language is still misdetected, the audio likely has long silence or non-speech segments — add `--vad_filter True` to suppress them.\n\n### ffmpeg: Font Not Found / CJK Boxes\n\nPass the correct font via `--font` in the `to_ass` step (Step 4.5). The ASS file embeds the font name, so ffmpeg needs it installed at burn time.\n\n| Platform | Font | Install |\n|----------|------|---------|\n| macOS | `PingFang SC` | pre-installed |\n| Linux | `Noto Sans CJK SC` | `sudo apt install fonts-noto-cjk` |\n| Linux (alt) | `WenQuanYi Micro Hei` | `sudo apt install fonts-wqy-microhei` |\n| Windows | `Microsoft YaHei` | pre-installed |\n\nRegenerate the ASS file with the correct `--font` flag, then re-run the burn step.\n\n## Privacy & Data Flow\n\n- **Browser cookies**: Step 1 uses `yt-dlp --cookies-from-browser chrome` to access age-gated or private videos. This reads Chrome cookies locally — no cookies are transmitted beyond YouTube's own servers. To avoid this, export cookies to a file first (see Troubleshooting above).\n- **Transcripts & translation**: Step 3 (translate) and Step 6 (publish info) are performed by the AI agent in the conversation. Transcripts are sent to whatever model/service the agent uses (e.g. Claude API). If the video contains sensitive content, use a local model for those steps.\n- **Auto-update check**: The pre-flight step runs `git fetch` to check for skill updates. It does not auto-pull or execute remote code.\n- **No telemetry**: `srt_utils.py` makes no network requests. All processing (SRT parsing, merging, ASS generation, hardware detection) is fully local.","tags":["yt2bb","agents365-ai","agent-skills","bilibili","claude-code","claude-code-skill","claude-skills","hermes-agent","openclaw","openclaw-skills","skill-md","skillsmp"],"capabilities":["skill","source-agents365-ai","skill-yt2bb","topic-agent-skills","topic-bilibili","topic-claude-code","topic-claude-code-skill","topic-claude-skills","topic-hermes-agent","topic-openclaw","topic-openclaw-skills","topic-skill-md","topic-skillsmp","topic-subtitles","topic-video-localization"],"categories":["yt2bb"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Agents365-ai/yt2bb","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Agents365-ai/yt2bb","source_repo":"https://github.com/Agents365-ai/yt2bb","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (19,589 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:58:23.049Z","embedding":null,"createdAt":"2026-04-19T00:01:36.945Z","updatedAt":"2026-05-18T18:58:23.049Z","lastSeenAt":"2026-05-18T18:58:23.049Z","tsv":"'-1':283,437 '-1.0':2561 '-4':1084 '-5':2189 '/)':1768,1888 '/.agents/skills':426 '/.claude/skills':422 '/.hermes/skills':424 '/.last_update':242 '/.openclaw/skills':423 '/.pi/agent/skills':425 '/b':476,504,546,2497 '/dev/null':273,435 '/myagents/myskills':427 '/playlist?list=playlist_id':520 '/publish_info.md':2129 '/vlog':1755 '/watch?v=video_id':485 '0':111,1382 '0.6':2558 '00':2198,2199 '03d':510,515,556 '1':120,240,441,702,774,901,916,917,941,979,1731,2151,2690 '10':791,1093,1174,2178 '1080p':2013 '11':1124 '12':971,1150 '13':1169 '14':1185 '15':1195 '16':960,972,1343 '17':1278 '1920x1080':1979 '2':137,255,272,276,429,434,533,577,915,1321,1352,1358,1366,1742,2156 '2.0':2565 '2.5':149,835 '2026':1086 '23':2066,2079 '24':214,248,347,1323 '3':159,284,867,931,1419,1748,2161,2188,2515,2737 '30fps':1085 '4':169,349,958,1202,1756,2166 '4.25':1221 '4.5':176,1474,2613 '40':698 '42':1332 '429':2506 '4x':740 '5':188,363,780,989,2035,2149,2171 '5/6':1299 '6':199,534,1009,2110,2741 '7':1032 '7000':1308 '720p':2011 '8':1050,2520 '83':1319 '833':1297 '9':987,1065,1288 'accept':1373 'access':2701 'accuraci':770,786 'across':413,1115,1142 'adapt':1151 'add':14,827,1048,1908,2511,2588 'address':1396 'aegisub':1765,1885 'aegisub.org':1767,1887 'aegisub.org/)':1766,1886 'age':2703 'age-g':2702 'agent':1446,2749,2760 'agent-friend':1445 'aggress':1031 'ai':161,201,2748 'align':1989 'almost':1412 'also':1385 'alt':2651 'alway':1413,1508 'analyz':202 'anti':829 'anti-hallucin':828 'anyth':1620 'api':2764 'appl':725 'apt':2644,2656 'as-i':912 'ask':308,1548,1560 'ass':181,196,1478,1485,1487,1759,1792,1815,1835,1853,1871,1896,1919,1923,2040,2049,2058,2107,2339,2345,2355,2370,2381,2610,2615,2670,2817 'assum':632 'audienc':104,2141,2176 'audio':2539,2578 'auth':2441 'auto':115,603,760,2779,2799 'auto-check':114 'auto-detect':602 'auto-pul':2798 'auto-recommend':759 'auto-upd':2778 'automat':2000 'avail':316,1579 'avoid':552,798,2723 'awar':164 'awk':274 'ba':473,501,543,2494 'back':628,1416 'backend':611,616,716,717,2402 'background':1662,1709,1725,1807 'balanc':779,2017,2088 'base':657,2114 'bash':263,408,445,488,594,650,839,1204,1259,1449,1776,1891,2051,2283,2463,2540 'batch':165,1143,1172,1178 'becom':1165 'best':615,669,718,785,1583,1610 'beyond':2717 'bilibili':13,34,63,82,2140,2208,2278 'bilibili-readi':81 'bilingu':15,56,87,948,1230,1481,2272,2292 'bilingual.ass':187,1798,1821,1841,1902,2061 'bilingual.mp4':198,2074,2274 'bilingual.srt':175,1219,1266,1456,1795,1818,1838,1899,2232,2270 'black':1590 'block':1403,1536 'blur':1705 'blur5':1914 'bottom':934,954,1512,1522,1970,1988,2030 'bottom-align':1987 'bound':1362 'box':1596,1651,1686,1710,1803,2600 'break':1096,1099,1118,1371 'bright':1671,1700,1722 'broadcast':898,1607 'broadcast-grad':897,1606 'browser':131,467,495,569,2446,2477,2687,2698 'burn':46,92,189,1379,2036,2627,2682 'busi':1667,1724,1806 'bv':470,498,540,2491 'b站':1828 'c':192,265,330,2062,2069,2075 'catch':1233,1718 'chang':654 'chapter':2196,2200 'char':1335,1346 'charact':964,2531 'characters/second':988 'chars/line':1330,1338 'check':116,142,208,212,583,599,665,764,2305,2313,2363,2396,2781,2791 'check-whisp':141,598,664,763,2395 'checkout':371 'chines':18,29,103,877,888,938,1037,1055,1167,1287,1339,1424,2138,2222,2267 'choic':2022 'chrome':132,468,496,2447,2449,2478,2699,2710 'cjk':1951,2599,2641,2649 'clariti':1049 'claud':414,2763 'clawhub':374 'clawhub-instal':373 'clean':184,528,1578,1646,1743,1775,1823,2018,2347 'clear':2538 'close':2452 'closest':1642 'code':415,1077,1357,1467,2804 'color':1492,1698 'come':2046 'comma':2180 'comma-separ':2179 'command':109,593,640 'comment':1915 'common':2404 'compact':951 'compar':285 'compress':981,1029,2092,2562 'condit':687,813,2550 'connect':2174 'consent':226 'conserv':629 'consist':1127 'contain':1863,2768 'content':101,203,1546,1618,2118,2193,2770 'continu':362,388,1184 'contrast':1690 'control':1849 'controversial/opinion':2162 'convent':2209 'convers':2210,2752 'convert':1476,1479,2342 'cooki':129,465,493,567,572,2440,2444,2465,2475,2479,2488,2688,2696,2711,2714,2726 'cookies-from-brows':128,464,492,566,2443,2474,2695 'cookies.txt':2480,2489 'copi':376,2071 'core':2192 'correct':2603,2674 'could':1680 'count':701,930,1258,1462,1464,2408 'cover':1244,2183,2220 'cps':1247,1279,1282,1289,1292,1363,1406,1434 'cpu':739,772 'cpu-friend':771 'creat':24 'crf':2065,2078 'critic':878 'ctranslate2':735,746 'cuda':737 'cuda/metal/cpu':607 'cue':975,1025,1038,1058,1254,1295,1306,1317,1351,1369,1438 'curios':2155 'custom':1844 'custom.ass':2387 'd':433 'data':2685 'data/achievement':2157 'default':777,1267,1513,1570,1611,1780,1946,1972,1978,2346,2412,2431 'defin':2390 'deliveri':1404 'descript':2187,2237 'design':1881 'despit':2537 'detail':439 'detect':585,604,623,2398,2820 'determin':2245 'digit':1069 'dir':228,401,420,704,2570 'dir/srt_utils.py':454,597,842,854,1207,1262,1452,1790,1813,1833,1894,2286,2295,2310,2318,2329,2337,2353,2368,2379,2394 'directori':222,411 'disciplin':1097 'discover':2227 'discuss':2165 'dlp':124,127,463,491,2439,2473,2487,2694 'documentari':1613 'doesn':343,1242 'domain':2186 'download':42,121,442,522,2483 'draft':768 'dri':2298,2357 'driven':2158 'drop':1006,1039,1593 'dry-run':2297,2356 'durat':1012,1296,1303,1307,1312,1359,1444 'e.g':372,2762 'earli':1874 'edit':1714 'effect':1497 'either':338 'emb':2617 'embed':2104 'emotional/relatable':2172 'emphas':2159,2169 'empti':2535 'en':89,653,801,1283,1336,1524,1656,1696,1704,1808,1825,1866,1909,1961,2376 'en-zh':88 'en.srt':2288,2300 'en/zh':57 'enabl':1488 'encod':2097 'end':1040 'energet':1713 'english':17,99,1112,1277,1331,2224 'english-chines':16 'ensur':549,2425 'entertain':1711,1829 'entir':254 'entri':918,922,928,939,1175,1191,1425,2407 'environ':582 'equival':1168 'error':385,1355,1384,1407,1461,1878,2510 'es':804 'etc':805 'everi':920,2032 'everywher':649 'exact':911,925 'exampl':1726 'execut':2802 'exist':243,1386 'exit':1356,1381 'expand':2248 'explicit':224,795 'export':571,1890,2464,2725 'ext':471,474,477,499,502,505,541,544,547,2492,2495,2498 'extend':1436 'extern':1852 'extract':2229 'eye':1717 'eye-catch':1716 'f':133,469,497,539,2490 'fail':570,1873,2410,2462 'failur':366,398,2442 'fall':627 'fallback':644,751,1804 'fals':691,817,2554 'fast':767,2094 'faster':741 'fastest':727 'feasibl':1398 'feel':1016,1623,1645 'fetch':257,2789 'ff':333 'ff-on':332 'ffmpeg':190,191,2052,2595,2622 'file':1486,1846,1854,1905,1920,1939,2050,2084,2108,2134,2386,2470,2616,2671,2729 'filler':996 'filter':1472,2041,2590 'final':947,2275 'find':409,421 'fire':1408 'first':573,579,2242,2730 'fit':1427 'fix':154,158,837,855,1377,1410,2319,2322,2413 'flag':831,1271,1274,1941,2676 'flight':2785 'flow':2686 'folder':525 'follow':893 'font':1493,1630,1928,1933,1943,1948,1954,2001,2422,2596,2604,2606,2619,2630,2647,2659,2675 'fonts-noto-cjk':2646 'fonts-wqy-microhei':2658 'footag':1672 'forc':1503,2099 'form':1617 'format':693,904,1182,1457,2567 'found':851,2424,2598 'fps':1324 'frame':957,1322 'friend':773,1447 'frontmatt':293 'full':962,1053,1091,1341,1848 'full-width':961,1052,1090,1340 'fulli':2822 'function':1101 'gap':1255,1318,1327,1392 'garbl':824,2530 'gate':2704 'gb':775,781,792 'generat':48,204,2111,2127,2202,2333,2818 'get':589,1681 'git':113,264,322,329,370,2788 'glossari':1147 'glow':185,1496,1692,1699,1707,1749,1827,1843,2374 'go':1415 'golden':1652 'good':778,2080 'gpt':1083 'gpu':606 'grade':899,1608,1779 'gray':1650,1661,1685,1802 'gray-box':1801 'guarante':1687 'guid':892,1238,1604 'half':1067,1081 'half-width':1066,1080 'hallucin':819,830,2525 'han':1632 'hardcod':25,55 'hardwar':620,673,2819 'head':436,1123 'hei':2654 'herm':417 'highlight':2195 'hook':2213,2241 'hour':215,249,348 'identifi':1078 'idiom':1164 'ignor':1934 'import':1547 'imposs':1500 'index':509,514,555,560,907,1466 'info':50,2113,2144,2743 'inject':1922 'inlin':1146 'inner':1061 'input.srt':2312,2320,2340,2359,2371,2382 'insid':1057 'instal':217,375,610,720,729,743,753,2429,2625,2631,2637,2645,2657,2667 'instead':630 'intact':905 'intent':1159 'inter':1253,1316 'inter-cu':1252,1315 'interject':1001 'interv':2514,2519 'interview':1614 'issu':850,1465,2315 'ja':802 'ja/ko/es/etc':656 'ja/ko/zh':789 'json':1458 'judgment':992 'keep':902,936,1041,1119,1125,1534,2014,2026 'key':1007 'keyword':2182,2225 'ko':803 'lang':147,156,652,683,713,847,859,864,872,1212,2122,2260,2549 'languag':681,794,1927,1963,2263,2523,2547,2573 'larg':783 'large-v3':782 'last':336,358 'later':234,405 'latest':259 'latin':1071 'layout':1505 'length':1251,1390 'less':246 'liber':2214 'libx264':194,2064,2077 'light':1654,1660 'like':2579 'limit':1365,2509 'line':306,696,700,910,942,966,1014,1095,1117,1250,1257,1349,1367,1389,1491,1519,1528,1916,1967 'line-break':1094 'lint':1223,1226,1263,1453 'linux':1636,1947,2638,2650 'liter':1161 'local':2712,2773,2823 'logprob':2559 'long':1616,2581 'long-form':1615 'look':1582,1609 'loop':820,2526 'lost':1683 'low':635,769 'low-memori':634 'lower':1527,1544 'lower-screen':1543 'ls':267 'ls-remot':266 'm4a':475,503,545,2496 'machin':637 'maco':724,1640,1942,2430,2632 'maintain':1144,1192 'make':2808 'manual':643 'map':919 'margin':2006 'markdown':2142 'match':1010,1163,2207 'max':695,699,959,1281,1291,1305,1311,1329,1334,1337,1345,1348,2517 'max-chars-en':1333 'max-chars-zh':1344 'max-cps-en':1280 'max-cps-zh':1290 'max-duration-m':1310 'max-sleep-interv':2516 'maxdepth':428 'mean':1008 'mechan':994 'medium':663,776,2068,2087,2546 'memori':608,622,636 'mention':396 'merg':45,170,173,1188,1203,1208,1229,2271,2287,2291,2296,2409,2816 'messag':1469 'metadata':65,205,2280 'metadata.version':290 'micro':2653 'microhei':2661 'microsoft':1955,2663 'mid':1043 'mid-sent':1042 'min':1294,1302,1314,1326 'min-duration-m':1301 'min-gap-m':1325 'misdetect':799,2576 'mismatch':2406 'miss':2419 'mistak':2405 'mix':1670 'mixed-bright':1669 'mkdir':458 'mlx':722,731 'mlx-whisper':721,730 'model':617,662,670,678,680,757,883,1354,1597,2403,2545,2774 'model/service':2758 'modifi':1120 'move':1996 'mp4':136,472,478,482,500,506,542,548,550,677,2056,2255,2493,2499,2503,2544 'ms':1298,1304,1309,1313,1320,1328 'multi':2325 'multi-pass':2324 'must':923,1015,1862,2025,2135,2206 'mutat':219 'mv':706 'my_styles.ass':1906 'name':430,449,1075,1130,1132,1865,2201,2620 'nativ':1627 'natur':1166 'near':952,2534 'near-empti':2533 'need':86,1149,2101,2238,2623 'net':1665 'netflix':183,886,967,1222,1234,1372,1585,1600,1643,1674,1732,1737,1772,1778,1800 'netflix-grad':1777 'network':2810 'never':218,1098,1109 'newer':300,310 'non':2585 'non-speech':2584 'note':793,1981 'noto':1949,2639,2648 'number':908,1072 'o':134,479,507,2500 'offend':1423 'offlin':367 'ok':1460 'old':250 'older':356 'one':211,305,926 'openai':646,748,755 'openai-whisp':645,747,754 'openclaw':416 'optim':932 'option':838,1907,1958 'order':564 'origin':270,1193 'os':605 'otherwis':256 'outer':1706 'outlin':1591,1677,1782,2003 'outline-on':1676 'output':110,551,692,703,822,1176,1448,2131,2251,2276,2566,2569 'output.ass':2341,2360,2372,2383 'output.srt':2290,2302,2321 'overlap':1540 'overrid':1269,1924 'overview':37 'p':459 'pad':559,1691,2418,2421 'pad-miss':2417 'pars':2815 'pass':1931,2326,2601 'past':1439 'path':239,380 'per':213,216,965,1249,1350,1368,1388,1490,1926 'per-lin':1248,1387,1489 'perform':2745 'permiss':382 'phrasal':1113 'phrase':1135,2529 'pi':418 'pick':1568 'pingfang':1637,1944,2426,2633 'pip':728,742,752 'pipelin':41,235,406,438 'platform':30,587,1626,1930,1940,2399,2629 'playlist':77,486,508,513,554,563 'point':2236 'polit':1004 'possibl':944 'pre':2304,2362,2636,2666,2784 'pre-check':2303,2361 'pre-flight':2783 'pre-instal':2635,2665 'precis':810 'prefer':970,1564,1576 'present':1551 'preserv':562,906,1155 'preset':182,1530,1553,1580,1581,1799,1822,1842,1984,1985,2067,2086,2373 'prevent':818 'previous':689,815,2552 'print':275,642 'privaci':2684 'privat':2706 'proceed':1550 'process':2813 'produc':51,896,924 'product':1074,1131 'profession':1605 'profil':2459 'programmat':1471 'prompt':342,1727 'provid':70,1850 'publish':49,200,2112,2143,2742 'publish_info.md':61,206,2277 'pull':323,331,2800 'punctuat':1035,1056,1088 'pure':1586 'python3':452,595,840,852,1205,1260,1450,1788,1811,1831,1892,2284,2293,2308,2316,2327,2335,2351,2366,2377,2392 'qualiti':2081 'quick':105 'quicker':2096 'quot':1062 'rate':2508 'rate-limit':2507 'ratio':2563 're':2679 're-run':2678 'read':378,869,984,1245,1275,1284,2250,2709 'read-on':377 'readabl':1017,1537,1663,1689,1980 'readi':83 'reason':2083 'recommend':613,667,761,787,1224,1395,2400 'recur':1134 'reduc':1539 'redund':1003 'refer':106 'refresh':335,357 'refs/tags':279 'regener':2668 'regist':1156 'remot':268,2803 'remov':995 'renam':523 'repeat':345,826,998,2528 'repurpos':8,36,98 'request':2811 'requir':2448 'res':1974,2009 'resolut':1977 'resolv':229,399 'result':2160 'return':1459 'reus':232,2468 'rewrit':1421 'risk':1541 'rule':879,881,1272,1506,2203 'run':328,531,580,1225,2299,2358,2680,2787 's.mp4':517 'safest':2021 'safeti':1664 'san':1633,1644,1950,2640 'save':1196 'say':326 'sc':968,1634,1638,1945,1952,2427,2634,2642 'scale':2007 'screen':1022,1545 'script':238 'section':1860 'sed':277 'see':574,832,2434,2731 'segment':1194,2587 'select':758 'semi':1658 'semi-transpar':1657 'semver':301 'sensit':2769 'sent':2755 'sentenc':1044,2190,2244 'separ':2181 'sequenti':538 'seri':487 'server':2721 'set':796 'sever':1353,1468 'shadow':1594,1784 'short':978,1028 'shorten':990 'shot':2033 'silenc':2582 'silent':360,386,1567 'silicon':726 'similar':2015 'simplifi':887,1286 'singl':74,443 'six':39 'six-step':38 'size':1494,2002,2085 'skill':118,221,227,288,314,400,410,419,453,596,841,853,1206,1261,1451,1789,1812,1832,1893,2285,2294,2309,2317,2328,2336,2352,2367,2378,2393,2793 'skill-yt2bb' 'skip':251,2482 'skip-download':2481 'sleep':2513,2518 'sleep-interv':2512 'slug':135,146,155,167,174,186,197,446,451,460,480,481,529,675,676,705,707,708,710,711,844,845,856,857,861,862,870,1198,1199,1209,1210,1214,1215,1217,1218,1264,1265,1454,1455,1793,1794,1796,1797,1816,1817,1819,1820,1836,1837,1839,1840,1897,1898,1900,1901,2054,2055,2059,2060,2072,2073,2120,2125,2128,2231,2253,2254,2258,2265,2269,2273,2334,2501,2502,2542,2543,2571 'slugifi':455,2330 'snapshot':2456 'soft':1592,1783 'solv':1433 'sort':280 'sourc':659,790,921,1441,1631,2145,2256,2262 'source-agents365-ai' 'spark':2154,2164 'spec':969 'speech':2556,2586 'speed':985,1246,1276,1285,2090 'split':1110,1190 'spoken':1443 'src':651,682,712,846,858,863,871,1211,2121,2259,2548 'srt':148,157,163,694,709,714,848,860,865,873,903,1181,1213,1231,1482,1502,2123,2261,2536,2568,2814 'srt-awar':162 'srt_utils.py':140,151,152,171,172,178,179,2282,2807 'stack':1514,1523,1971 'stay':950,986,1079,1509,1986 'step':40,107,236,253,407,440,532,576,834,866,1201,1220,1418,1473,2034,2109,2611,2612,2683,2689,2736,2740,2777,2786 'still':2575 'stream':1625 'streaming-platform':1624 'strict':299 'strong':2240 'structur':2252 'style':177,891,1237,1475,1504,1562,1603,1830,1845,1859,1864,1882,1904,1938,2045,2100,2102,2153,2163,2168,2173,2205,2344,2385,2391 'style-fil':1903,1937,2384 'subject':999 'substitut':2433 'subtitl':19,26,47,58,91,811,900,935,949,1011,1507,2027,2037,2043,2264,2268 'sudo':2643,2655 'summar':2191 'support':715,800 'suppress':2593 'suspens':2212 'suspense/question':2152 'swallow':383 'symbol':2217 'symptom':2527 'tabl':1554 'tag':260,269,297,1910,1913,1925,2177,2218 'tail':282 'tailor':591 'target':2139 'task':393 'technic':1128 'technolog':2185 'telemetri':2806 'tell':302 'term':1129 'terminolog':1126 'text':690,816,890,1236,1588,1602,1648,1679,2553 'thin':1589 'threshold':1273,2557,2560,2564 'throttl':209 'tight':1391 'time':812,889,1020,1235,1429,1601,1992,2314,2628 'timestamp':685,807,909,2197,2228 'timing/overlaps':2323 'tini':766 'titl':457,511,516,2148,2204,2332 'tone':1157,2211 'tool':108 'top':1787,1810,1824,1959,1999,2350,2375 'topic':2184,2234 'topic-agent-skills' 'topic-bilibili' 'topic-claude-code' 'topic-claude-code-skill' 'topic-claude-skills' 'topic-hermes-agent' 'topic-openclaw' 'topic-openclaw-skills' 'topic-skill-md' 'topic-skillsmp' 'topic-subtitles' 'topic-video-localization' 'trail':1034 'transcrib':43,138,145,578 'transcript':2734,2753 'transit':2235 'translat':44,160,166,868,875,927,1138,1170,2414,2735,2738 'transliter':1154 'transmit':2716 'transpar':1659 'troubleshoot':575,833,2435,2436,2732 'true':686,808,2591 'tune':1532 'tutorial/practical':2167 'two':2243 'type':432 'unavail':625 'unit':1073,1114 'univers':750 'unless':1383 'updat':112,119,207,337,359,2780,2794 'upload':64,2279 'upper':1518,1966 'upstream':262,296,351,1414 'url':73,2147,2484,2504 'use':2,68,403,638,1051,1059,1577,1628,1936,2038,2093,2215,2416,2454,2691,2761,2771 'user':5,69,85,95,225,304,391,1558,1573,1729,2247,2389 'user-defin':2388 'util':2170,2281 'v':193,271,281,2063,2076 'v3':784 'v4':1858 'va.b.c':318 'vad':2589 'valid':150,153,836,843,1180,1241,1877,2311 'variant':2150 'version':27,84,311 'vertic':2005 'vf':195,2057 'via':1270,2605 'vibrant':1826 'video':11,22,35,53,75,94,100,444,448,456,537,660,1976,2117,2257,2331,2707,2767 'video-nam':447 'violat':1239 'visual':1682,1883,2016 'vlog':1712 'vx.y.z':317 'want':6,79,96,319 'warn':1380,1463 'way':339,1141 'weak':1000 'weakest':1720 'webm':553 'wenquanyi':2652 'whatev':2757 'whenev':943 'whether':2246 'whisper':139,143,592,600,647,661,666,674,679,723,732,734,745,749,756,765,2397,2401,2521,2541 'whisper-ctranslate2':733,744 'white':1587,1695,1703,1781 'width':697,963,1054,1068,1082,1092,1342 'window':1430,1953,2662 'windows/linux':736 'within':1018 'without':223,2306,2364 'word':684,806,997,1102,1162 'work':412,648 'wqi':2660 'write':2307,2365 'wrong':2522 'www.youtube.com':484,519 'www.youtube.com/playlist?list=playlist_id':518 'www.youtube.com/watch?v=video_id':483 'wxh':1975 'yahei':1956,2664 'yellow':1647,1655,1693,1701 'yes':327 'youtub':10,32,72,2146,2718 'yt':123,126,462,490,2438,2472,2486,2693 'yt-dlp':122,125,461,489,2437,2471,2485,2692 'yt2bb':1,31,431 'zero':558 'zero-pad':557 'zh':90,1293,1347,1515,1653,1694,1702,1785,1868,1912,1960,1973,2348 'zh.srt':168,1200,1216,2126,2266,2289,2301 '专业观感':1738 '了':1104 '亮背景或花背景的兜底选项':1746 '可改用':1774 '可用':1764 '可视化编辑':1769 '吗':1105 '吧':1107 '呢':1106 '啊':1108 '大小':1763 '如果画面特别花哨或底部信息多':1773 '字幕有三套样式可选':1730 '完全控制字体':1761 '底框保证对比度':1747 '彩色外发光':1752 '提供':1758 '更抢眼':1753 '柔和阴影':1735 '样式文件':1760 '灰色半透明底框':1745 '白色字体':1751 '的':1103 '纯白字体':1733 '细黑描边':1734 '自定义':1757 '访谈':1740 '适合娱乐':1754 '适合纪录片':1739 '选哪个':1770 '长内容':1741 '颜色':1762 '黄色':1750 '黄色字体':1744 '默认推荐':1736,1771","prices":[{"id":"920eca85-a861-4d8f-90b4-d29679c33c80","listingId":"4517f659-b88b-463d-b87f-9c9e7a4a2445","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Agents365-ai","category":"yt2bb","install_from":"skills.sh"},"createdAt":"2026-04-19T00:01:36.945Z"}],"sources":[{"listingId":"4517f659-b88b-463d-b87f-9c9e7a4a2445","source":"github","sourceId":"Agents365-ai/yt2bb","sourceUrl":"https://github.com/Agents365-ai/yt2bb","isPrimary":false,"firstSeenAt":"2026-04-19T00:01:36.945Z","lastSeenAt":"2026-05-18T18:58:23.049Z"}],"details":{"listingId":"4517f659-b88b-463d-b87f-9c9e7a4a2445","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Agents365-ai","slug":"yt2bb","github":{"repo":"Agents365-ai/yt2bb","stars":39,"topics":["agent-skills","bilibili","claude-code","claude-code-skill","claude-skills","hermes-agent","openclaw","openclaw-skills","skill-md","skillsmp","subtitles","video-localization","youtube"],"license":"mit","html_url":"https://github.com/Agents365-ai/yt2bb","pushed_at":"2026-05-05T08:20:23Z","description":"YouTube to Bilibili video repurposing with bilingual subtitles","skill_md_sha":"c0cbac92b49eb694b97c2f4b37ae1d1a6ad86482","skill_md_path":"SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Agents365-ai/yt2bb"},"layout":"root","source":"github","category":"yt2bb","frontmatter":{"name":"yt2bb","license":"MIT","description":"Use when the user wants to repurpose a YouTube video for Bilibili, add bilingual (English-Chinese) subtitles to a video, or create hardcoded subtitle versions for Chinese platforms.","compatibility":"Requires Python 3, ffmpeg, yt-dlp, whisper (openai-whisper) on PATH. Self-check steps that need vision are gracefully skipped if unavailable."},"skills_sh_url":"https://skills.sh/Agents365-ai/yt2bb"},"updatedAt":"2026-05-18T18:58:23.049Z"}}