{"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## Pre-flight: Auto Update\n\n**Run this BEFORE any pipeline step.** Locates the skill directory and checks for updates. The `SKILL_DIR` variable is reused by later steps for script paths.\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)\"\necho \"yt2bb: SKILL_DIR=$SKILL_DIR\"\nif [ -n \"$SKILL_DIR\" ] && [ -d \"$SKILL_DIR/.git\" ]; then\n  git -C \"$SKILL_DIR\" fetch --quiet origin main 2>/dev/null\n  LOCAL=$(git -C \"$SKILL_DIR\" rev-parse HEAD)\n  REMOTE=$(git -C \"$SKILL_DIR\" rev-parse origin/main 2>/dev/null)\n  if [ \"$LOCAL\" != \"$REMOTE\" ]; then\n    echo \"yt2bb: new version available. Run: git -C $SKILL_DIR pull origin main\"\n  else\n    echo \"yt2bb: up to date.\"\n  fi\nfi\n```\n\n> **Note:** Does not auto-pull — the current session already loaded the old SKILL.md. Notify the user and let them update between sessions.\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.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 28 github stars · SKILL.md body (19,090 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-04-22T18:59:12.015Z","embedding":null,"createdAt":"2026-04-19T00:01:36.945Z","updatedAt":"2026-04-22T18:59:12.015Z","lastSeenAt":"2026-04-22T18:59:12.015Z","tsv":"'-1':267 '-1.0':2483 '-4':1006 '-5':2111 '/)':1690,1810 '/.agents/skills':256 '/.claude/skills':252 '/.hermes/skills':254 '/.openclaw/skills':253 '/.pi/agent/skills':255 '/b':398,426,468,2419 '/dev/null':265,291,311 '/myagents/myskills':257 '/playlist?list=playlist_id':442 '/publish_info.md':2051 '/vlog':1677 '/watch?v=video_id':407 '0':111,1304 '0.6':2480 '00':2120,2121 '03d':432,437,478 '1':120,363,624,696,823,838,839,863,901,1653,2073,2612 '10':713,1015,1096,2100 '1080p':1935 '11':1046 '12':893,1072 '13':1091 '14':1107 '15':1117 '16':882,894,1265 '17':1200 '1920x1080':1901 '2':137,259,264,290,310,455,499,837,1243,1274,1280,1288,1664,2078 '2.0':2487 '2.5':149,757 '2026':1008 '23':1988,2001 '24':1245 '3':159,789,853,1341,1670,2083,2110,2437,2659 '30fps':1007 '4':169,880,1124,1678,2088 '4.25':1143 '4.5':176,1396,2535 '40':620 '42':1254 '429':2428 '4x':662 '5':188,702,911,1957,2071,2093 '5/6':1221 '6':199,456,931,2032,2663 '7':954 '7000':1230 '720p':1933 '8':972,2442 '83':1241 '833':1219 '9':909,987,1210 'accept':1295 'access':2623 'accuraci':692,708 'across':243,1037,1064 'adapt':1073 'add':14,749,970,1830,2433,2510 'address':1318 'aegisub':1687,1807 'aegisub.org':1689,1809 'aegisub.org/)':1688,1808 'age':2625 'age-g':2624 'agent':1368,2671,2682 'agent-friend':1367 'aggress':953 'ai':161,201,2670 'align':1911 'almost':1334 'alreadi':346 'also':1307 'alt':2573 'alway':1335,1430 'analyz':202 'anti':751 'anti-hallucin':750 'anyth':1542 'api':2686 'appl':647 'apt':2566,2578 'as-i':834 'ask':1470,1482 'ass':181,196,1400,1407,1409,1681,1714,1737,1757,1775,1793,1818,1841,1845,1962,1971,1980,2029,2261,2267,2277,2292,2303,2532,2537,2592,2739 'assum':554 'audienc':104,2063,2098 'audio':2461,2500 'auth':2363 'auto':115,210,341,525,682,2701,2721 'auto-check':114 'auto-detect':524 'auto-pul':340,2720 'auto-recommend':681 'auto-upd':2700 'automat':1922 'avail':320,1501 'avoid':474,720,2645 'awar':164 'ba':395,423,465,2416 'back':550,1338 'backend':533,538,638,639,2324 'background':1584,1631,1647,1729 'balanc':701,1939,2010 'base':579,2036 'bash':238,367,410,516,572,761,1126,1181,1371,1698,1813,1973,2205,2385,2462 'batch':165,1065,1094,1100 'becom':1087 'best':537,591,640,707,1505,1532 'beyond':2639 'bilibili':13,34,63,82,2062,2130,2200 'bilibili-readi':81 'bilingu':15,56,87,870,1152,1403,2194,2214 'bilingual.ass':187,1720,1743,1763,1824,1983 'bilingual.mp4':198,1996,2196 'bilingual.srt':175,1141,1188,1378,1717,1740,1760,1821,2154,2192 'black':1512 'block':1325,1458 'blur':1627 'blur5':1836 'bottom':856,876,1434,1444,1892,1910,1952 'bottom-align':1909 'bound':1284 'box':1518,1573,1608,1632,1725,2522 'break':1018,1021,1040,1293 'bright':1593,1622,1644 'broadcast':820,1529 'broadcast-grad':819,1528 'browser':131,389,417,491,2368,2399,2609,2620 'burn':46,92,189,1301,1958,2549,2604 'busi':1589,1646,1728 'bv':392,420,462,2413 'b站':1750 'c':192,283,294,303,323,1984,1991,1997 'catch':1155,1640 'chang':576 'chapter':2118,2122 'char':1257,1268 'charact':886,2453 'characters/second':910 'chars/line':1252,1260 'check':116,142,223,505,521,587,686,2227,2235,2285,2318,2703,2713 'check-whisp':141,520,586,685,2317 'chines':18,29,103,799,810,860,959,977,1089,1209,1261,1346,2060,2144,2189 'choic':1944 'chrome':132,390,418,2369,2371,2400,2621,2632 'cjk':1873,2521,2563,2571 'clariti':971 'claud':244,2685 'clean':184,450,1500,1568,1665,1697,1745,1940,2269 'clear':2460 'close':2374 'closest':1564 'code':245,999,1279,1389,2726 'color':1414,1620 'come':1968 'comma':2102 'comma-separ':2101 'command':109,515,562 'comment':1837 'common':2326 'compact':873 'compress':903,951,2014,2484 'condit':609,735,2472 'connect':2096 'conserv':551 'consist':1049 'contain':1785,2690 'content':101,203,1468,1540,2040,2115,2692 'continu':1106 'contrast':1612 'control':1771 'controversial/opinion':2084 'convent':2131 'convers':2132,2674 'convert':1398,1401,2264 'cooki':129,387,415,489,494,2362,2366,2387,2397,2401,2410,2610,2618,2633,2636,2648 'cookies-from-brows':128,386,414,488,2365,2396,2617 'cookies.txt':2402,2411 'copi':1993 'core':2114 'correct':2525,2596 'could':1602 'count':623,852,1180,1384,1386,2330 'cover':1166,2105,2142 'cps':1169,1201,1204,1211,1214,1285,1328,1356 'cpu':661,694 'cpu-friend':693 'creat':24 'crf':1987,2000 'critic':800 'ctranslate2':657,668 'cuda':659 'cuda/metal/cpu':529 'cue':897,947,960,980,1176,1217,1228,1239,1273,1291,1360 'curios':2077 'current':344 'custom':1766 'custom.ass':2309 'd':263,278 'data':2607 'data/achievement':2079 'date':334 'default':699,1189,1435,1492,1533,1702,1868,1894,1900,2268,2334,2353 'defin':2312 'deliveri':1326 'descript':2109,2159 'design':1803 'despit':2459 'detail':361 'detect':507,526,545,2320,2742 'determin':2167 'digit':991 'dir':228,250,271,273,277,285,296,305,325,626,2492 'dir/.git':280 'dir/srt_utils.py':376,519,764,776,1129,1184,1374,1712,1735,1755,1816,2208,2217,2232,2240,2251,2259,2275,2290,2301,2316 'directori':221,241 'disciplin':1019 'discover':2149 'discuss':2087 'dlp':124,127,385,413,2361,2395,2409,2616 'documentari':1535 'doesn':1164 'domain':2108 'download':42,121,364,444,2405 'draft':690 'dri':2220,2279 'driven':2080 'drop':928,961,1515 'dry-run':2219,2278 'durat':934,1218,1225,1229,1234,1281,1366 'e.g':2684 'earli':1796 'echo':268,316,330 'edit':1636 'effect':1419 'els':329 'emb':2539 'embed':2026 'emotional/relatable':2094 'emphas':2081,2091 'empti':2457 'en':89,575,723,1205,1258,1446,1578,1618,1626,1730,1747,1788,1831,1883,2298 'en-zh':88 'en.srt':2210,2222 'en/zh':57 'enabl':1410 'encod':2019 'end':962 'energet':1635 'english':17,99,1034,1199,1253,2146 'english-chines':16 'ensur':471,2347 'entertain':1633,1751 'entri':840,844,850,861,1097,1113,1347,2329 'environ':504 'equival':1090 'error':1277,1306,1329,1383,1800,2432 'es':726 'etc':727 'everi':842,1954 'everywher':571 'exact':833,847 'exampl':1648 'execut':2724 'exist':1308 'exit':1278,1303 'expand':2170 'explicit':717 'export':493,1812,2386,2647 'ext':393,396,399,421,424,427,463,466,469,2414,2417,2420 'extend':1358 'extern':1774 'extract':2151 'eye':1639 'eye-catch':1638 'f':133,391,419,461,2412 'fail':492,1795,2332,2384 'failur':2364 'fall':549 'fallback':566,673,1726 'fals':613,739,2476 'fast':689,2016 'faster':663 'fastest':649 'feasibl':1320 'feel':938,1545,1567 'fetch':286,2711 'ffmpeg':190,191,1974,2517,2544 'fi':335,336 'file':1408,1768,1776,1827,1842,1861,1972,2006,2030,2056,2308,2392,2538,2593,2651 'filler':918 'filter':1394,1963,2512 'final':869,2197 'find':239,251 'fire':1330 'first':495,501,2164,2652 'fit':1349 'fix':154,158,759,777,1299,1332,2241,2244,2335 'flag':753,1193,1196,1863,2598 'flight':209,2707 'flow':2608 'folder':447 'follow':815 'font':1415,1552,1850,1855,1865,1870,1876,1923,2344,2518,2526,2528,2541,2552,2569,2581,2597 'fonts-noto-cjk':2568 'fonts-wqy-microhei':2580 'footag':1594 'forc':1425,2021 'form':1539 'format':615,826,1104,1379,2489 'found':773,2346,2520 'fps':1246 'frame':879,1244 'friend':695,1369 'full':884,975,1013,1263,1770 'full-width':883,974,1012,1262 'fulli':2744 'function':1023 'gap':1177,1240,1249,1314 'garbl':746,2452 'gate':2626 'gb':697,703,714 'generat':48,204,2033,2049,2124,2255,2740 'get':511,1603 'git':113,282,293,302,322,2710 'glossari':1069 'glow':185,1418,1614,1621,1629,1671,1749,1765,2296 'go':1337 'golden':1574 'good':700,2002 'gpt':1005 'gpu':528 'grade':821,1530,1701 'gray':1572,1583,1607,1724 'gray-box':1723 'guarante':1609 'guid':814,1160,1526 'half':989,1003 'half-width':988,1002 'hallucin':741,752,2447 'han':1554 'hardcod':25,55 'hardwar':542,595,2741 'head':266,300,1045 'hei':2576 'herm':247 'highlight':2117 'hook':2135,2163 'identifi':1000 'idiom':1086 'ignor':1856 'import':1469 'imposs':1422 'index':431,436,477,482,829,1388 'info':50,2035,2066,2665 'inject':1844 'inlin':1068 'inner':983 'input.srt':2234,2242,2262,2281,2293,2304 'insid':979 'instal':532,642,651,665,675,2351,2547,2553,2559,2567,2579,2589 'instead':552 'intact':827 'intent':1081 'inter':1175,1238 'inter-cu':1174,1237 'interject':923 'interv':2436,2441 'interview':1536 'issu':772,1387,2237 'ja':724 'ja/ko/es/etc':578 'ja/ko/zh':711 'json':1380 'judgment':914 'keep':824,858,963,1041,1047,1456,1936,1948 'key':929 'keyword':2104,2147 'ko':725 'lang':147,156,574,605,635,769,781,786,794,1134,2044,2182,2471 'languag':603,716,1849,1885,2185,2445,2469,2495 'larg':705 'large-v3':704 'later':233 'latin':993 'layout':1427 'length':1173,1312 'let':355 'liber':2136 'libx264':194,1986,1999 'light':1576,1582 'like':2501 'limit':1287,2431 'line':618,622,832,864,888,936,1017,1039,1172,1179,1271,1289,1311,1413,1441,1450,1838,1889 'line-break':1016 'lint':1145,1148,1185,1375 'linux':1558,1869,2560,2572 'liter':1083 'load':347 'local':292,313,2634,2695,2745 'locat':218 'logprob':2481 'long':1538,2503 'long-form':1537 'look':1504,1531 'loop':742,2448 'lost':1605 'low':557,691 'low-memori':556 'lower':1449,1466 'lower-screen':1465 'm4a':397,425,467,2418 'machin':559 'maco':646,1562,1864,2352,2554 'main':289,328 'maintain':1066,1114 'make':2730 'manual':565 'map':841 'margin':1928 'markdown':2064 'match':932,1085,2129 'max':617,621,881,1203,1213,1227,1233,1251,1256,1259,1267,1270,2439 'max-chars-en':1255 'max-chars-zh':1266 'max-cps-en':1202 'max-cps-zh':1212 'max-duration-m':1232 'max-sleep-interv':2438 'maxdepth':258 'mean':930 'mechan':916 'medium':585,698,1990,2009,2468 'memori':530,544,558 'merg':45,170,173,1110,1125,1130,1151,2193,2209,2213,2218,2331,2738 'messag':1391 'metadata':65,205,2202 'micro':2575 'microhei':2583 'microsoft':1877,2585 'mid':965 'mid-sent':964 'min':1216,1224,1236,1248 'min-duration-m':1223 'min-gap-m':1247 'misdetect':721,2498 'mismatch':2328 'miss':2341 'mistak':2327 'mix':1592 'mixed-bright':1591 'mkdir':380 'mlx':644,653 'mlx-whisper':643,652 'model':539,584,592,600,602,679,805,1276,1519,2325,2467,2696 'model/service':2680 'modifi':1042 'move':1918 'mp4':136,394,400,404,422,428,464,470,472,599,1978,2177,2415,2421,2425,2466 'ms':1220,1226,1231,1235,1242,1250 'multi':2247 'multi-pass':2246 'must':845,937,1784,1947,2057,2128 'mv':628 'my_styles.ass':1828 'n':275 'name':260,371,997,1052,1054,1787,2123,2542 'nativ':1549 'natur':1088 'near':874,2456 'near-empti':2455 'need':86,1071,2023,2160,2545 'net':1587 'netflix':183,808,889,1144,1156,1294,1507,1522,1565,1596,1654,1659,1694,1700,1722 'netflix-grad':1699 'network':2732 'never':1020,1031 'new':318 'non':2507 'non-speech':2506 'note':337,715,1903 'notifi':351 'noto':1871,2561,2570 'number':830,994 'o':134,401,429,2422 'offend':1345 'ok':1382 'old':349 'one':848 'openai':568,670,677 'openai-whisp':567,669,676 'openclaw':246 'optim':854 'option':760,1829,1880 'order':486 'origin':288,327,1115 'origin/main':309 'os':527 'outer':1628 'outlin':1513,1599,1704,1925 'outline-on':1598 'output':110,473,614,625,744,1098,1370,2053,2173,2198,2488,2491 'output.ass':2263,2282,2294,2305 'output.srt':2212,2224,2243 'overlap':1462 'overrid':1191,1846 'overview':37 'p':381 'pad':481,1613,2340,2343 'pad-miss':2339 'pars':299,308,2737 'pass':1853,2248,2523 'past':1361 'path':237 'per':887,1171,1272,1290,1310,1412,1848 'per-lin':1170,1309,1411 'perform':2667 'phrasal':1035 'phrase':1057,2451 'pi':248 'pick':1490 'pingfang':1559,1866,2348,2555 'pip':650,664,674 'pipelin':41,216,360 'platform':30,509,1548,1852,1862,2321,2551 'playlist':77,408,430,435,476,485 'point':2158 'polit':926 'possibl':866 'pre':208,2226,2284,2558,2588,2706 'pre-check':2225,2283 'pre-flight':207,2705 'pre-instal':2557,2587 'precis':732 'prefer':892,1486,1498 'present':1473 'preserv':484,828,1077 'preset':182,1452,1475,1502,1503,1721,1744,1764,1906,1907,1989,2008,2295 'prevent':740 'previous':611,737,2474 'print':564 'privaci':2606 'privat':2628 'proceed':1472 'process':2735 'produc':51,818,846 'product':996,1053 'profession':1527 'profil':2381 'programmat':1393 'prompt':1649 'provid':70,1772 'publish':49,200,2034,2065,2664 'publish_info.md':61,206,2199 'pull':326,342,2722 'punctuat':957,978,1010 'pure':1508 'python3':374,517,762,774,1127,1182,1372,1710,1733,1753,1814,2206,2215,2230,2238,2249,2257,2273,2288,2299,2314 'qualiti':2003 'quick':105 'quicker':2018 'quiet':287 'quot':984 'rate':2430 'rate-limit':2429 'ratio':2485 're':2601 're-run':2600 'read':791,906,1167,1197,1206,2172,2631 'readabl':939,1459,1585,1611,1902 'readi':83 'reason':2005 'recommend':535,589,683,709,1146,1317,2322 'recur':1056 'reduc':1461 'redund':925 'refer':106 'regener':2590 'regist':1078 'remot':301,314,2725 'remov':917 'renam':445 'repeat':748,920,2450 'repurpos':8,36,98 'request':2733 'requir':2370 'res':1896,1931 'resolut':1899 'result':2082 'return':1381 'reus':231,2390 'rev':298,307 'rev-pars':297,306 'rewrit':1343 'risk':1463 'rule':801,803,1194,1428,2125 'run':212,321,453,502,1147,2221,2280,2602,2709 's.mp4':439 'safest':1943 'safeti':1586 'san':1555,1566,1872,2562 'save':1118 'sc':890,1556,1560,1867,1874,2349,2556,2564 'scale':1929 'screen':944,1467 'script':236 'section':1782 'see':496,754,2356,2653 'segment':1116,2509 'select':680 'semi':1580 'semi-transpar':1579 'sensit':2691 'sent':2677 'sentenc':966,2112,2166 'separ':2103 'sequenti':460 'seri':409 'server':2643 'session':345,359 'set':718 'sever':1275,1390 'shadow':1516,1706 'short':900,950 'shorten':912 'shot':1955 'silenc':2504 'silent':1489 'silicon':648 'similar':1937 'simplifi':809,1208 'singl':74,365 'six':39 'six-step':38 'size':1416,1924,2007 'skill':118,220,227,240,249,270,272,276,279,284,295,304,324,375,518,763,775,1128,1183,1373,1711,1734,1754,1815,2207,2216,2231,2239,2250,2258,2274,2289,2300,2315,2715 'skill-yt2bb' 'skill.md':350 'skip':2404 'skip-download':2403 'sleep':2435,2440 'sleep-interv':2434 'slug':135,146,155,167,174,186,197,368,373,382,402,403,451,597,598,627,629,630,632,633,766,767,778,779,783,784,792,1120,1121,1131,1132,1136,1137,1139,1140,1186,1187,1376,1377,1715,1716,1718,1719,1738,1739,1741,1742,1758,1759,1761,1762,1819,1820,1822,1823,1976,1977,1981,1982,1994,1995,2042,2047,2050,2153,2175,2176,2180,2187,2191,2195,2256,2423,2424,2464,2465,2493 'slugifi':377,2252 'snapshot':2378 'soft':1514,1705 'solv':1355 'sourc':581,712,843,1363,1553,2067,2178,2184 'source-agents365-ai' 'spark':2076,2086 'spec':891 'speech':2478,2508 'speed':907,1168,1198,1207,2012 'split':1032,1112 'spoken':1365 'src':573,604,634,768,780,785,793,1133,2043,2181,2470 'srt':148,157,163,616,631,636,770,782,787,795,825,1103,1135,1153,1404,1424,2045,2183,2458,2490,2736 'srt-awar':162 'srt_utils.py':140,151,152,171,172,178,179,2204,2729 'stack':1436,1445,1893 'stay':872,908,1001,1431,1908 'step':40,107,217,234,362,454,498,756,788,1123,1142,1340,1395,1956,2031,2533,2534,2605,2611,2658,2662,2699,2708 'still':2497 'stream':1547 'streaming-platform':1546 'strong':2162 'structur':2174 'style':177,813,1159,1397,1426,1484,1525,1752,1767,1781,1786,1804,1826,1860,1967,2022,2024,2075,2085,2090,2095,2127,2266,2307,2313 'style-fil':1825,1859,2306 'subject':921 'substitut':2355 'subtitl':19,26,47,58,91,733,822,857,871,933,1429,1949,1959,1965,2186,2190 'sudo':2565,2577 'summar':2113 'support':637,722 'suppress':2515 'suspens':2134 'suspense/question':2074 'symbol':2139 'symptom':2449 'tabl':1476 'tag':1832,1835,1847,2099,2140 'tailor':513 'target':2061 'technic':1050 'technolog':2107 'telemetri':2728 'term':1051 'terminolog':1048 'text':612,738,812,1158,1510,1524,1570,1601,2475 'thin':1511 'threshold':1195,2479,2482,2486 'tight':1313 'time':734,811,942,1157,1351,1523,1914,2236,2550 'timestamp':607,729,831,2119,2150 'timing/overlaps':2245 'tini':688 'titl':379,433,438,2070,2126,2254 'tone':1079,2133 'tool':108 'top':1709,1732,1746,1881,1921,2272,2297 'topic':2106,2156 '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':956 'transcrib':43,138,145,500 'transcript':2656,2675 'transit':2157 'translat':44,160,166,790,797,849,1060,1092,2336,2657,2660 'transliter':1076 'transmit':2638 'transpar':1581 'troubleshoot':497,755,2357,2358,2654 'true':608,730,2513 'tune':1454 'tutorial/practical':2089 'two':2165 'type':262 'unavail':547 'unit':995,1036 'univers':672 'unless':1305 'updat':112,119,211,225,357,2702,2716 'upload':64,2201 'upper':1440,1888 'upstream':1336 'url':73,2069,2406,2426 'use':2,68,560,973,981,1499,1550,1858,1960,2015,2137,2338,2376,2613,2683,2693 'user':5,69,85,95,353,1480,1495,1651,2169,2311 'user-defin':2310 'util':2092,2203 'v':193,1985,1998 'v3':706 'v4':1780 'vad':2511 'valid':150,153,758,765,1102,1163,1799,2233 'variabl':229 'variant':2072 'version':27,84,319 'vertic':1927 'vf':195,1979 'via':1192,2527 'vibrant':1748 'video':11,22,35,53,75,94,100,366,370,378,459,582,1898,2039,2179,2253,2629,2689 'video-nam':369 'violat':1161 'visual':1604,1805,1938 'vlog':1634 'want':6,79,96 'warn':1302,1385 'way':1063 'weak':922 'weakest':1642 'webm':475 'wenquanyi':2574 'whatev':2679 'whenev':865 'whether':2168 'whisper':139,143,514,522,569,583,588,596,601,645,654,656,667,671,678,687,2319,2323,2443,2463 'whisper-ctranslate2':655,666 'white':1509,1617,1625,1703 'width':619,885,976,990,1004,1014,1264 'window':1352,1875,2584 'windows/linux':658 'within':940 'without':2228,2286 'word':606,728,919,1024,1084 'work':242,570 'wqi':2582 'write':2229,2287 'wrong':2444 'www.youtube.com':406,441 'www.youtube.com/playlist?list=playlist_id':440 'www.youtube.com/watch?v=video_id':405 'wxh':1897 'yahei':1878,2586 'yellow':1569,1577,1615,1623 'youtub':10,32,72,2068,2640 'yt':123,126,384,412,2360,2394,2408,2615 'yt-dlp':122,125,383,411,2359,2393,2407,2614 'yt2bb':1,31,261,269,317,331 'zero':480 'zero-pad':479 'zh':90,1215,1269,1437,1575,1616,1624,1707,1790,1834,1882,1895,2270 'zh.srt':168,1122,1138,2048,2188,2211,2223 '专业观感':1660 '了':1026 '亮背景或花背景的兜底选项':1668 '可改用':1696 '可用':1686 '可视化编辑':1691 '吗':1027 '吧':1029 '呢':1028 '啊':1030 '大小':1685 '如果画面特别花哨或底部信息多':1695 '字幕有三套样式可选':1652 '完全控制字体':1683 '底框保证对比度':1669 '彩色外发光':1674 '提供':1680 '更抢眼':1675 '柔和阴影':1657 '样式文件':1682 '灰色半透明底框':1667 '白色字体':1673 '的':1025 '纯白字体':1655 '细黑描边':1656 '自定义':1679 '访谈':1662 '适合娱乐':1676 '适合纪录片':1661 '选哪个':1692 '长内容':1663 '颜色':1684 '黄色':1672 '黄色字体':1666 '默认推荐':1658,1693","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-04-22T18:59:12.015Z"}],"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":28,"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-04-11T14:57:21Z","description":"YouTube to Bilibili video repurposing with bilingual subtitles","skill_md_sha":"d95b76ede727c46cb908b6ed40c9906a934c6227","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-04-22T18:59:12.015Z"}}