К основному содержанию
скилл CX Codex

bangumi-frames — скилл для Claude Code: что делает и как установить

Нарезает аниме-видео с Bilibili или локального диска на кадры, отделяет пейзажи и группирует персонажей по их внешности.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Agents365-ai/365-skills --skill bangumi-frames -a claude-code
Открыть на GitHub

Что делает bangumi-frames

Скилл скачивает видео с Bilibili через yt-dlp или берёт готовый файл на диске. Далее через ffmpeg или scenedetect он находит смены сцен, отделяет пейзажные кадры от кадров с людьми и вырезает персонажей с помощью моделей dghs-imgutils. Работа идёт строго с аниме и 2.5D-графикой; живое видео с актёрами модели распознать не смогут.

Предусмотрено два сценария: собрать всех найденных героев в отдельные папки characters/char_NN/ либо найти кадры конкретного персонажа по папке с примерами через флаг --ref. Опция --clean стирает водяные знаки и субтитры нейросетью LaMa. Результат работы выводится в виде JSON-структуры и обзорных коллажей.

Для запуска понадобятся ffmpeg, yt-dlp и Python 3.9+. Шаг сопоставления лиц CCIP нужно запускать строго на CPU: на macOS в режиме ONNX_MODE=CoreML этот этап падает с ошибкой. Для серий из платной подписки потребуется передать файл cookies от аккаунта Bilibili.

Какие задачи решает

  • вырезать ключевые кадры из аниме-серии на Bilibili
  • разложить скриншоты по отдельным папкам для каждого героя
  • найти все кадры с конкретным персонажем по папке-образцу
  • очистить полученные скриншоты от субтитров и водяных знаков

Примеры запросов агенту

  • Разбери серию ep1231575 на кадры и сгруппируй персонажей по папкам
  • Найди кадры с персонажем из папки ~/refs/hero в видео BV15qVm68E2h
  • Вытащи кадры из локального файла video.mp4 и очисти субтитры

Как установить bangumi-frames

1Через Skills CLI (Vercel)

npx skills add Agents365-ai/365-skills --skill bangumi-frames -a claude-code

2Вручную: положить файлы

~/.claude/skills/bangumi-frames/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/bangumi-frames/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о bangumi-frames

Как установить bangumi-frames в Claude Code?

Выполните команду npx skills add Agents365-ai/365-skills --skill bangumi-frames -a claude-code.

Что делает скилл bangumi-frames?

Он автоматически нарезает видео на кадры, фильтрует кадры без людей и объединяет вырезанных персонажей по сходству внешности с помощью эмбеддингов CCIP.

Почему этап CCIP нельзя запускать на CoreML?

При установке флага ONNX_MODE=CoreML библиотека CCIP завершается аварийно, поэтому вычисление эмбеддингов персонажей должно производиться на центральном процессоре.

Исходный текст

SKILL.md · MIT
---
disable-model-invocation: true
name: bangumi-frames
version: 0.5.0
description: Extract and organize frames from a Bilibili video (bangumi episode, UP upload, or a local file) into scenery shots and per-character image groups, using anime-specific person detection + CCIP character-identity embeddings. Two modes — cluster everyone, or pull out one (or several) named characters via reference folders. Use when the user wants to collect, extract, or organize anime frames/screenshots by character or by scenery from a Bilibili video. Read-only download for personal viewing/analysis; uploads nothing.
license: MIT
homepage: https://github.com/Agents365-ai/365-skills/tree/main/plugins/bangumi-frames/skills/bangumi-frames
compatibility: Requires ffmpeg and (for downloads) yt-dlp on PATH; Python 3.9+ with dghs-imgutils (anime person detection + CCIP). The CCIP step runs on CPU — do NOT set ONNX_MODE=CoreML (CCIP crashes there); person detection is fine on CoreML. Anime / 2.5D-render art only — not for live-action. Optional --clean (subtitle/watermark removal) needs rapidocr-onnxruntime + simple-lama-inpainting.
platforms: [macos, linux]
metadata: {"openclaw":{"requires":{"anyBins":["ffmpeg"]},"emoji":"🎬","os":["darwin","linux"],"install":[{"id":"brew-ffmpeg","kind":"brew","formula":"ffmpeg","bins":["ffmpeg"],"label":"Install ffmpeg via Homebrew","os":["darwin"]},{"id":"pip-yt-dlp","kind":"pip","package":"yt-dlp","bins":["yt-dlp"],"label":"Install yt-dlp (download Bilibili streams)"},{"id":"pip-imgutils","kind":"pip","package":"dghs-imgutils","label":"Install anime person detection + CCIP models"}]},"hermes":{"tags":["bilibili","anime","bangumi","frames","character","ccip","screenshot","video"],"category":"media","requires_tools":["ffmpeg","yt-dlp"],"related_skills":[]},"author":"Agents365-ai","version":"0.5.0"}
---

# bangumi-frames — Bilibili Anime Frame & Character Organizer

## Overview

Give a Bilibili video (a bangumi `ep` link, a UP-upload `BV` link/id, or a **local
video file**); it downloads → extracts scene-change keyframes → splits scenery vs
character frames → organizes the character crops. **One pass, two modes:**

- **no `--ref` (cluster mode)** — group every character crop by CCIP identity into
  `characters/char_NN/`.
- **with `--ref DIR` (one-vs-rest mode)** — given ONE character's reference folder,
  pull every crop in the video that matches it into `matched/`, filenames prefixed
  with distance (closest first) so a tight threshold yields a pure set.

Models are **anime-specific** (deepghs anime person detection + CCIP character-identity
embeddings) — they do not work on live-action footage.

## When to use / when NOT to use

- **Use** when the user wants to collect/extract/organize anime frames or screenshots
  from a Bilibili video — by character, by scenery, or to pull out one specific person.
- **Don't use** for live-action video (needs an insightface-class face stack instead),
  or for generic video editing/trimming/transcoding.

## Bundled resources

| Resource | Read it when |
|---|---|
| `references/pipeline.md` | Tuning a stage — download (`--height`/`--prefer`), extract (`--scene`/`--interval`/`--dedup`/`--skip`), `--clean` (OCR+LaMa subtitle/watermark removal), classify (`--conf`/`--min-area`); feature caching; the CPU/CoreML rule; `--redo` |
| `references/modes.md` | Choosing/tuning the two modes — mode 1 cluster (`--eps`/`--min-samples`) vs mode 2 one-vs-rest (`--ref-eps`, the distance-band histogram, the compressed-embedding threshold lore); full output layout |
| `scripts/bangumi_frames.py` | The entry point (all stages + both modes) |
| `scripts/remove_overlay.py` | Standalone subtitle/watermark removal on a frame dir or single image |

## Prerequisites

1. `ffmpeg` on PATH; `yt-dlp` on PATH for downloads (a local-file input skips download).
2. Python 3.9+, `pip install dghs-imgutils` (first run pulls ~300 MB of models from
   HuggingFace, then cached locally).
3. A Bilibili cookie (Netscape `cookies.txt`). Resolution order:
   `--cookies` > `$BILIBILI_COOKIES` > `~/bb_up/bb_cookies/www.bilibili.com_cookies.txt`.
   1080p+ / premium episodes need a cookie with membership; a preview-only download means
   the cookie lacks access to that episode. Local-file input needs no cookie.
4. **Run the CCIP step on CPU** — do not set `ONNX_MODE=CoreML` (CCIP crashes; the script
   pops it before clustering/matching). Person detection is fine on CoreML.
5. (Only for `--clean`) `pip install rapidocr-onnxruntime simple-lama-inpainting`.
6. (Only for `--engine pyscenedetect`) `pip install scenedetect`.

## Usage

```bash
SKILL=skills/bangumi-frames/scripts/bangumi_frames.py

# Mode 1 — cluster everyone into char_NN groups
python3 $SKILL https://www.bilibili.com/video/BV15qVm68E2h --out ~/frames
python3 $SKILL ep1231575 --out ~/frames           # ep / BV id also accepted
python3 $SKILL ~/local.mp4 --out ~/frames          # local file, skips download

# Mode 2 — pull out ONE character (ref folder = ~200 crops of that character)
python3 $SKILL BV15qVm68E2h --ref ~/refs/紫灵 --ref-eps 0.04 --out ~/frames

# Optional: strip burned-in subtitles + watermark before analysis
python3 $SKILL ep1231575 --clean --out ~/frames
```

Stages are idempotent (a stage is skipped when its output already exists; clustering /
matching always re-runs since the CCIP features are cached). For every flag, the per-stage
trade-offs, and the threshold lore, read the two reference files above.

**Agent-native output:** `stdout` is a single JSON envelope (`{"ok", "data", "next", "meta"}`
on success, `{"ok": false, "error"}` on failure — JSON when piped, a human summary on a TTY;
force with `--format`), `stderr` carries human progress logs, and exit codes are stable
(`0` ok · `1` runtime · `2` auth · `3` validation). Use `--dry-run` to preview the plan
without downloading, `--schema` to print the output contract. Details in `references/pipeline.md`.

## Output

```
<out>/<id>/                     # id = BV id / ep id / local filename
├── frames/  frames.json        # keyframes + timestamps
├── scenery/                    # frames with no detected character
├── crops/  features.npy        # character crops + cached CCIP features
├── detect.json                 # frame -> person boxes / crops
├── characters/                 # MODE 1: char_NN_crop/ + char_NN_full/ (paired), _unsorted/, _montage.png
├── matched/                    # MODE 2: 0.012_<crop>.jpg (distance-prefixed) + index.json
├── matched_montage.png         # MODE 2 sample montage
└── index.json                  # MODE 1: char group -> {crop, frame, time}
```

After a run, look at `characters/_montage.png` (mode 1) or `matched_montage.png` (mode 2)
first to judge quality, then read `index.json`. See `references/modes.md` for what to
adjust when grouping/matching is off.

## Limits

- Anime / 2.5D-render art only; live-action needs a different (face-recognition) stack.
- CCIP may split one character's different forms (outfit / transform) into separate groups
  — usually fine for "group by visual appearance"; for mode 2, put each form in the ref.
- 1080p+ on Bilibili needs a membership cookie; download is for personal offline analysis
  only and uploads nothing.

© Agents365-ai · MIT · Agents365-ai/365-skills

Похожие скиллы

Всё по теме «ИИ и ML» →
youtube-downloader daymade Загружает видео, аудио и субтитры с YouTube или HLS-потоков через yt-dlp и ffmpeg. Помогает получить медиафайл или сохранить текстовую расшифровку без скачивания полного видео. CX Codex +1 1 500установок recovering-from-errors oxbshw Скилл разбирает сбои Watch Skill: читает код ошибки, запускает watch-skill doctor и повторяет упавшую команду один раз. CX Codex +1 498установок watch bradautomates Смотрит видео по URL или локальному пути, собирает кадры и расшифровку, чтобы агент отвечал на вопросы о содержимом. Подходит для разбора роликов прямо из IDE. CX Codex +1 17 200установок chat-with-anyone NoizAI Скилл находит речь человека в открытых видео, берёт из неё чистый образец и озвучивает ответы его голосом. Ещё умеет собрать голос по фотографии. CX Codex +1 2 100установок video-summarizer liang121 Скачивает видео и аудио с веб-сайтов через yt-dlp, извлекает субтитры или распознаёт речь через faster-whisper и собирает текстовое саммари. CX Codex +1 524установок video-download calesthio Скачивает видео, аудио и субтитры по URL через yt-dlp. Пригодится для получения файла, выбора качества или просмотра метаданных без загрузки. CX Codex +1 1 200установок

Из того же набора12

semanticscholar-skill Ищет научные статьи, авторов и цепочки цитирований через Semantic Scholar API. Помогает подбирать публикации и анализировать исследования прямо в чате с агентом. CX Codex +1 3 400установок asta Ищет научные статьи в Semantic Scholar через MCP-сервер Asta. Помогает находить цитирования, авторов и фрагменты текста для фактчекинга. CX Codex +1 3 100установок journal-abbrev Ищет сокращения названий журналов и расшифровывает их обратно по ISO 4 и MEDLINE. Пригодится при подготовке списка литературы и правке BibTeX. CX Codex +1 3 000установок pi-prompting Скилл задаёт правила составления промптов для исполнителя Pi на базе DeepSeek. Он помогает структурировать задачи по кодингу, ревью и исследованию репозитория. CX Codex +1 2 900установок target-prioritization Скилл собирает досье по списку генов-кандидатов из DE-анализа: тянет данные из UniProt, OpenTargets, PubMed, HPA и ChEMBL и пересортировывает гены по составному баллу. CX Codex +1 2 900установок agent-native-design Помогает спроектировать или переделать CLI так, чтобы им пользовались и люди, и ИИ-агенты. Пригодится, когда API или SDK нужно превратить в агентный интерфейс. CX Codex +1 1 900установок obsidian-organizer Раскладывает заметки по папкам хранилища Obsidian и наводит порядок в структуре. Пригодится, когда входящие копятся в корне, а связи между файлами нельзя ломать. CX Codex +1 1 800установок imagencn Генерирует изображения через облачные API DashScope, Ark, Hunyuan, а также сервисы OpenAI и FLUX. Пригодится для рендеринга китайского текста и создания графики прямо из чата агента. CX Codex +1 1 700установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой