Install
openclaw skills install @willguo715/videototext指导稳定拉取 B 站官方字幕(应对限流/登录可见轨道)、并用 OpenAI 兼容接口生成中文总结稿;技能包内含 code/ 镜像源码与 env 模板,可打 zip 给 OpenClaw 离线使用。 适用于 Bilibili 链接解析、字幕提取失败排查、SESSDATA/Cookie、WBI player 字幕、字幕校验与多轮采样、以及 SUMMARY_LLM_* 总结配置。
openclaw skills install @willguo715/videototext_throttle / _request_with_retry 逻辑。.env.example,自行复制为技能包根目录的 .env 后填写。app/utils/url_tools.py(包内 code/app/utils/url_tools.py)— 展开 b23.tv、解析 BV 与分 P ?p=。app/services/orchestrator.py — 先官方字幕;失败且开启 ASR 时再本机转写;正文就绪后调用总结服务。技能包未含 orchestrator/ASR,仅含抽取与总结核心模块。app/extractors/bilibili.py + app/services/bilibili_subtitle.py(包内 code/app/...)。app/utils/audio_fetch.py + app/asr/local_faster_whisper.py(需 LOCAL_ASR_ENABLED 等)。app/services/summary.py — 优先 LLM(OpenAI 兼容 Chat Completions),失败则本地抽样回退。SESSDATA(及可选 BILI_JCT、DEDEUSERID、DEDEUSERID__CKMD5)由 app/services/bilibili_subtitle.py 中 _build_bilibili_cookie() 组装为 Cookie 请求头。need_login_subtitle):仅 SESSDATA 往往不够,应配齐四件套(见 .env.example 注释)。get_bilibili_sessdata_cookie_header()(app/extractors/bilibili.py)。https://www.bilibili.com/、桌面 Chrome User-Agent、Accept JSON(_client_headers)。BILIBILI_MIN_INTERVAL_SECONDS(默认约 0.8s),全局锁节流。BILIBILI_MAX_RETRIES 等控制。GET https://api.bilibili.com/x/web-interface/view?bvid= — 取 aid、pages、标题、时长等。GET https://api.bilibili.com/x/player/wbi/v2?aid=&cid=&bvid= — 优先取字幕轨道列表(与 yt-dlp 一致,登录可见轨常在此)。subtitles 为空,再回退 GET https://api.bilibili.com/x/player/v2(部分稿件仅旧接口有轨,如部分 AI 字幕)。subtitle_url 再 GET 拉 JSON,body[].content 拼正文(payload_to_text)。prefer_lang(_ordered_tracks)。BILIBILI_SUBTITLE_VALIDATE=true 时:多轮采样可选;对每条下载结果做时长覆盖与标题汉字二元组命中率过滤,防止 AI 串台;AI 轨使用更高阈值(BILIBILI_SUBTITLE_AI_MIN_TITLE_MATCH)。BILIBILI_SUBTITLE_VALIDATE=false 时:更快,取首条非空;若开启 BILIBILI_SUBTITLE_AI_SANITY_WHEN_VALIDATE_OFF,仍可对 AI 轨做标题 sanity。only_lan 分支,不做标题命中率过滤(仍可在 validate 开启时做时长覆盖)。BILIBILI_SUBTITLE_VALIDATE、调整采样轮次与间隔,或让用户指定 lan。BILIBILI_MIN_INTERVAL_SECONDS,避免并发多请求。SUMMARY_ENABLED、SUMMARY_LLM_BASE_URL 或 SUMMARY_LLM_CHAT_COMPLETIONS_URL、SUMMARY_LLM_MODEL;API Key 可用 SUMMARY_LLM_API_KEY 或 OPENAI_API_KEY(见 app/core/settings.py 别名)。BASE_URL 已以 /chat/completions 结尾则不再拼接;否则为 {base}/chat/completions。chat/completions,temperature 来自 SUMMARY_LLM_TEMPERATURE。max_chars <= 200):单段电报体中文;长目标:## 总标题 + 若干 **主题:** 块(见 summary.py 内 prompt)。message.content 为字符串或多段 list;无有效 content 时回退 _summarize_fallback。python scripts/verify_subtitle_canary.py(需 .env 中 SESSDATA 等,见 CLAUDE.md)。pytest。将本目录 videototext 整夹 打成 zip(含 SKILL.md、reference.md、code/、requirements-code.txt)。解压后:
SKILL.md、reference.md、code/ 下源码。pip install -r requirements-code.txt,PYTHONPATH 指向 code/,.env 放在与 SKILL.md 同级目录(见 code/README.md)。