VideoToNo skill

A skill that turns a Bilibili, Douyin or YouTube video link into timestamped notes through local transcription

  • 179 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • Runs a local service, downloads media and models and writes files to a workspace folder
  • May keep API keys and Bilibili cookies on disk, and a keyed note sends the transcript to the chosen model provider
All reasons and checks

like-attract/video-to-note

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/videotono

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Runs a local service, downloads media and models and writes files to a workspace folder
  • May keep API keys and Bilibili cookies on disk, and a keyed note sends the transcript to the chosen model provider

This is third-party code. Review the repository files before installing.

What it does

The video-to-note skill hands a link or local file to the local VideoToNo service, which returns a transcript with real timestamps. Platform subtitles are used first, and for Bilibili also AI subtitles after login. When there are none, faster-whisper transcribes speech on the user's machine. Bilibili including multi-part videos, single public Douyin links, YouTube, other addresses yt-dlp can parse and local audio and video are supported. There are two routes. The transcript route returns only timestamped text with no model call and no API key, and the agent writes the notes itself. The notes route asks the service to build a finished Markdown note through DeepSeek, OpenAI, Zhipu, Qwen, Kimi or any OpenAI-compatible endpoint. The service exports Markdown, HTML, JSON, text, PNG and Word, takes screenshots from the video and ships an MCP server for WorkBuddy, Cherry Studio and Codex. If the service is not running, the skill script starts it headless and shuts it down after 15 idle minutes.

Who it is for. Students, researchers and writers who learn from lectures and talks on Bilibili, Douyin or YouTube and want notes instead of rewatching hours of recording.

Good fit when

  • A three-hour Bilibili lecture is needed as notes with a table of contents and time ranges
  • The agent receives a video and only needs a transcript with timestamps, no API key
  • A local recording of a call has to become a structured note
  • Platform subtitles are missing and speech must be recognized on your own machine
  • A finished note should be saved to Word or HTML with screenshots

Not a fit when

  • Videos from iQiyi or Tencent Video: there is no dedicated support and the result depends on platform access and yt-dlp
  • A macOS or Linux computer: the project is aimed first at Windows and Python 3.11
  • A Russian interface and docs are required: the project's main language is Chinese, with an English README as well

Example request

Transcribe https://www.bilibili.com/video/BV1xx with timestamps and summarize the main conclusions point by point

Limitations

The skill is only a remote control: it does not work without VideoToNo installed, via the portable exe from releases or from source on Python 3.11. The first transcription downloads a Whisper or paraformer model, which can be placed manually. Notes need an API key for the chosen model, a plain transcript does not. Douyin works only with single public links and sometimes needs a login in a separate browser. Keys are saved on the machine only on request and encrypted with DPAPI on Windows. The service listens on 127.0.0.1, ports 8000–8019.

How to disable. Delete the video-to-note folder from the agent's skills directory and close the service in the tray. The VideoToNo workspace with tasks and keys is deleted separately.

FAQ

How do I install the VideoToNo skill in Claude Code?

Copy the `skills/video-to-note/` folder from the repository into the Claude Code skills directory. VideoToNo itself must already be installed: download the portable exe from releases, it needs no Python install.

Do I need an API key for transcription?

No. The `--transcript-only` mode makes no model call and returns timestamped text, and the agent writes the note. A key is needed only for a finished note through the service.

What if the video has no subtitles?

The service transcribes speech locally with faster-whisper. On first run it offers to download a model, which can be imported manually following the in-app guide.

Does the project have an MCP server?

Yes. The service exposes MCP at `http://127.0.0.1:8000/mcp/sse` with summarize_video, transcribe_video, get_transcript and other tools. VideoToNo must be running.

Which export formats does the service support?

Markdown, HTML, JSON, plain text, PNG and Word (.docx), and subtitles also export to .srt. Screenshots from the video can be attached to the note.

Discussion

No questions or reviews yet.

Skills

A Codex and Claude Code skill: subtitles and a summary from a Douyin, Xiaohongshu, Bilibili or YouTube link or a local file

SkillExtended access253Repository stars

A skill that pulls highlights from a long video: download, transcript, segmentation, analysis and clips with titles

SkillExtended access578Repository stars

watch-cli is a skill and CLI that hands an agent the frames and transcript of any social video so it can read the clip itself.

SkillExtended access260Repository stars
Editors’ pick

The /watch skill turns a link or file into frames and captions, or with a Gemini key hands the whole video to Google for the agent to answer from

SkillBroad access20.6KRepository stars

A skill that makes video in pure code: narrated explainers and website promos in 35 visual styles, in 16:9 and 9:16.

SkillExtended access174Repository stars

A skill that turns a topic into a narrated 4K video: research, script, local TTS, Remotion composition and an FFmpeg mix

SkillExtended access1.7KRepository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialRepository starsMain difference
VideoToNo (this card)no179
video-lensno128builds an HTML report from YouTube video subtitles rather than notes from local speech transcription
DeLive Transcript Analyzerno261searches and analyses transcripts from the DeLive app rather than producing them from a video link

README in short

The Chinese README describes a video-to-structured-notes service: input sources, Bilibili and Douyin support, a real timeline, export and local operation. It includes the version history up to 1.4.7, the portable build, MCP mode and the agent skill. MIT licence, with an English README.

README badge

Original SKILL.md

---
name: video-to-note
description: Generate structured, timestamped Markdown notes from videos (Bilibili, Douyin, YouTube, or local media files) using the local VideoToNo service. Use when the user asks to summarize a video, turn a video/lecture/talk into notes, extract video content or a transcript, or mentions VideoToNo.
---

# VideoToNo · 视频笔记生成

通过本机运行的 VideoToNo 服务,把视频变成带时间轴的 Markdown 笔记:优先读取平台字幕(B 站 AI 字幕深度适配,支持多分 P 合并),没有字幕时用本地 faster-whisper 离线转写,最后由已配置的大模型生成笔记。

## 先选路线

| 你要什么 | 走哪条 | 需要 API Key |
|---|---|---|
| 带时间轴的转录原料,笔记结构与风格你自己定 | **转录路线** `--transcript-only` | **不需要** |
| 一份现成的成品笔记(用户只要"给我笔记",或视频很长希望后台跑完) | 笔记路线 `--style` | 需要(本机按接口地址保存过即可省略) |

你自己就有模型可以写笔记时,**优先走转录路线**:本机只负责取字幕或离线转写,写作由你完成,不用向用户索要 Key,也不会被套进固定的笔记模板。

## 第 0 步:服务不在就让它自己起来

脚本先扫 `127.0.0.1` 的 8000-8019;**端口全不通时它不会让你去启动软件**,而是自己后台拉起一个无头服务(不开浏览器、不进托盘、不占桌面),等它健康再往下走。它按这个顺序找"服务怎么启动":

1. 本次命令带的 `--server-cmd "<便携版 exe 路径>"`(也接受 `python launcher.py` 这类命令)
2. 环境变量 `VIDEOTONOTES_SERVER_CMD`
3. 上一次 `--server-cmd` 给过的路径(记在 `%LOCALAPPDATA%\VideoToNo\skill-server-cmd.txt`)
4. 技能脚本仍在 VideoToNo 仓库里时,直接用当前 Python 起 `launcher.py`

四条都没有 → 脚本退出并说清缺什么。这时向用户要一次 exe 的位置("VideoToNo 那个程序放在哪个目录?"),带上 `--server-cmd` 重跑;**给过这一次就不用再问**。

无头实例闲置 15 分钟且没有在建任务时自己退出(要常驻就让它带 `--idle-exit 0`);日志在 exe 同级目录的 `workspace/_app.log`。第一次拉起会多花几秒(打包版还要先解压自身),那不是卡死。

想手动确认服务在不在,健康检查照旧可用:

```bash
curl -s --max-time 2 http://127.0.0.1:8000/api/health
# 期望返回 {"status":"ok","service":"VideoToNo",...}
```

服务已在运行时(用户自己双击了 exe,或跑的是界面版),脚本直接复用它,不会起第二个。

Report a problem