| name | bilibili-creator-distill |
| description | Distill a Bilibili creator's expression DNA, content strategy, argument patterns and judgment heuristics from their public videos into a callable skill package. Use when the user asks to analyse, emulate, or study a specific UP 主's creative approach. |
Bilibili Creator Distill Skill
When to use
Trigger this skill whenever the user wants to:
- Reverse-engineer how a Bilibili UP 主 thinks, structures arguments, or frames topics.
- Generate "what would this UP 主 say about X" outlines grounded in their public record.
- Build a reusable creator-skill package for later sessions.
Do not trigger this skill for:
- One-off video summarisation (use plain summarisation instead).
- Emulating tone without substance (this skill refuses that explicitly).
- Private / paid / leaked content.
Core principle
Distill stable, repeatable, transferable patterns from public expression. Not tone mimicry, not one-video hot takes, not ad reads. When you lack evidence, say so — do not fabricate missing layers.
Keep two outputs separate at all times:
- How the creator talks (surface — last priority).
- How the creator thinks (substance — first priority).
Deliverable
A creator-skill/ directory with this exact structure (see references/deliverable_template.md for file-level specs):
creator-skill/
├── SKILL.md # entry, 5-10 core patterns with triggers
├── soul.md # core drives, long-term preferences, value floor
├── limit.md # evidence gaps, non-transferable topics, time-bound notes
├── resource/
│ ├── content_strategy.md
│ ├── argument_patterns.md
│ ├── speech_patterns.md
│ ├── audience_dynamics.md
│ ├── key_videos_and_turning_points.md
│ └── anti_patterns.md
├── evidence/
│ ├── evidence_map.md
│ └── source_index.md
└── validation/
├── regression_cases.md
└── generalization_cases.md
How to invoke scripts
This skill ships with a Python CLI under scripts/. Always prefer the CLI over ad-hoc scraping.
python -m scripts.cli run --uid <uid> --limit 20 --output ./output/<slug>
python -m scripts.cli smoke --uid <uid>
python -m scripts.cli collect --uid <uid> --limit 30
python -m scripts.cli transcribe --uid <uid> --limit 10
python -m scripts.cli clean --uid <uid>
python -m scripts.cli summarize --uid <uid> --backend claude-in-session
python -m scripts.cli distill --uid <uid>
python -m scripts.cli package --uid <uid> --output ./output/<slug>
Backend modes for summarize / distill:
claude-in-session (default): CLI writes a prompt file under data/intermediate/<uid>/prompts/. The running Claude session (this one) reads the prompt, reasons inline over the cleaned corpus, and writes the structured output back. Uses zero external API credits.
anthropic-api: CLI calls the Anthropic SDK directly. Needs ANTHROPIC_API_KEY. Useful when running headless.
Required environment
- Python ≥ 3.10 and
pip install -r requirements.txt once per environment.
- Optional
SESSDATA in .env — unlocks full subtitle access. Without it the skill runs with reduced video coverage. See .env.example.
ENABLE_ASR=false by default. For UP 主 whose videos have neither creator-uploaded nor AI-generated subtitles (long-form talking-head channels like 马督工), set ENABLE_ASR=true and run python -m scripts.cli transcribe --uid <uid> --limit N to fill in subtitles via yt-dlp + faster-whisper. Requires ffmpeg on PATH.
Workflow
Follow the six steps in references/workflow.md strictly, and stop at every checkpoint so the user can confirm before the next stage burns more time/tokens.
- Build corpus —
collect fetches video index + CC subtitles + pinned comments → data/raw/<uid>/.
- Clean corpus —
clean strips ads, intros, outros, fillers; tags scene_type → data/intermediate/<uid>/clean_corpus.jsonl.
- Slice & summarise —
summarize chunks long subtitles into slices, then rolls slice summaries up to video and topic level.
- Extract pattern candidates —
distill reads summaries and produces pattern_candidates.jsonl with evidence references.
- Cross-video verification — promote candidates to A/B only when they recur across multiple videos and contexts. See
references/evidence_rules.md.
- Package —
package renders the creator-skill/ directory from templates/creator-skill/.
Checkpoints
After each stage, post a short report to the user:
- files written (with byte counts)
- sample of 2-3 records (anonymised/truncated)
- any anomalies (missing subtitles, rate-limit backoff, schema validation failures)
- next stage that is about to run
Wait for ok / continue before moving on.
Distillation dimensions
Extract in these eight layers. Detail is in references/dimensions.md.
- Expression DNA — opening gambit, rhythm, recurring rhetoric, transitions, closings, signature phrases.
- Content strategy — topic sourcing, hot-take handling, selection criteria, serialisation tendencies.
- Argument patterns — conclusion-first vs. setup-first, evidence preference (case/data/history/analogy), counter-view handling.
- Judgment heuristics — when to commit to a verdict vs. remain reserved, risk posture, edge-case logic.
- Audience dynamics — stance toward fans, critics, peers, platform, brand deals.
- Honesty boundaries — where evidence is thin, where a claim is stage-bound, where extrapolation is banned.
- Emotional value (
affect) 🆕 — audience-reported emotional experience from danmaku/comments/stats. Phrased from audience side only.
- Visual persona (
persona) 🆕 — cover phash clustering, title template, duration bucket, dominant colors.
Evidence rules
See references/evidence_rules.md for the full ladder. Short form:
| Level | Meaning | Usable in |
|---|
| A | Recurs across multiple videos AND multiple time periods | Core SKILL.md |
| B | Recurs within one theme across multiple videos | Core SKILL.md |
| C | Single high-signal occurrence, worth recording | Footnote / exception |
| D | Speculative, below evidence threshold | Must NOT enter output |
Output style
- Prefer accuracy over flair.
- Write judgments before tone markers.
- Each core pattern should be stateable as "when X, this creator tends to Y, because Z" — not an abstract adjective.
- Downgrade wording when evidence is thin.
Bad examples
Good examples
- "遇到争议议题时,他通常先拆背景变量,再给有限结论,避免直接站队。(证据:BV1, BV2, BV3)"
- "讲复杂主题时,他倾向先给一层直觉版结论,再补结构化解释。"
Anti-patterns
You must reject each of these:
- Distilling only tone, skipping judgment.
- Generalising one viral video into a permanent rule.
- Moving ad copy into core expression DNA.
- Confusing platform persona with real personality.
- Filling evidence gaps with fabrication.
- Replacing structural rules with personality adjectives.
Honesty policy
When the user asks you to "fully role-play" as the creator, obey these:
- You may mimic stable public expression.
- You may reuse verifiable judgment frameworks.
- You must not fabricate private views, personal history, or undisclosed positions.
- You must not pretend to know topics the creator has not publicly discussed.
Recommended hedges:
- "基于公开视频内容,他更可能采用的分析路径是……"
- "公开内容里没有足够证据支持他在这个问题上的立场。"
Activation behaviour
When this skill is invoked:
- First confirm the target creator (UID, handle, or URL) and the sample range.
- Pull up the existing
creator-skill/ if one already exists for this UID; otherwise run the pipeline.
- Prefer matching the creator's judgment path before layering their expression style.
- For under-evidenced queries, announce the gap before answering.
- Phrase answers as "based on public output" rather than as the creator themself.
Reference index
references/workflow.md — six-step pipeline with per-stage artifacts and checkpoint script
references/dimensions.md — the eight distillation layers, detailed
references/evidence_rules.md — A/B/C/D ladder + promotion logic
references/distillation_prompts.md — prompt templates for slice / video / topic / pattern / packaging stages
references/deliverable_template.md — exact file-level spec for the creator-skill/ output
Final standard
The distillation is only acceptable if the output can:
- Answer "how would he analyse this problem?" with his judgment path.
- Answer "how would he structure a video on this?" with his known scaffolding.
- Refuse gracefully when asked about topics lacking public evidence.
- Cite ≥ 2 BV-IDs for every A-level pattern.
If any of those four breaks, the result is a character card, not a skill.