Open-source desktop app · macOS & Windows

Turn video subtitles
into study notes

Paste a public Bilibili or YouTube link. Subquill fetches the captions, sends them to any OpenAI-compatible model you configure, and streams back a structured Markdown note with timestamps you can copy, export, or auto-save to a folder.

Runs on your machine. Bring your own OpenAI-compatible key — Subquill never touches a server of its own.

Notes preview · example transcript (22:14)

Summary

One paragraph that orients you: what the video covers and the argument it makes, written only from the caption lines.

Section breakdown

  • 00:00:00 – 00:04:32Setup and core concepts
  • 00:04:32 – 00:09:11Main idea, developed step by step
  • 00:09:11 – 00:15:40Worked example and caveats
  • 00:15:40 – 00:22:14Takeaways and further reading

What it does

Everything between a video link and a Markdown note

Subquill handles caption fetching, transcript chunking, generation and export end to end — with an honest preview of what it found before it spends a single token.

Batch links, multi-P aware

Paste several URLs, one per line, and pick the result of each job from one preview. Append ?p=2 to a Bilibili URL to target a specific part.

Real caption detection

Before generating, Subquill previews title, duration, part info and available subtitle tracks — including AI and login-gated Bilibili tracks, and warns when a SESSDATA cookie is required.

Any OpenAI-compatible model

Point Subquill at any base URL that speaks the OpenAI chat format — hosted providers or local servers — pick a model, and verify with one-click connection testing.

Notes stream in

Long transcripts are chunked, generated per chunk and merged. Markdown renders live in a safe preview that strips raw HTML, so nothing injected can execute.

Copy, export, auto-save

Copy the finished note as Markdown, save it anywhere through the native dialog, or set a notes folder once and every finished note is written there automatically.

Secrets stay on disk

The API key and Bilibili cookie are written to local credential files and handled entirely by the Rust core. The UI only ever shows a “configured” placeholder — never the value.

Progress you can cancel

Each job reports percentage and stage with an honest “long videos take minutes” hint, and a running generation can be cancelled without closing the app.

Chinese & English UI

Switch the interface between zh and en or follow the system locale. Notes are generated in the same language as the transcript and your locale.

The flow

Four steps, zero copy-paste of transcripts

  1. 01

    Paste

    Drop one or many Bilibili / YouTube URLs into the workspace. Subquill parses them locally.

  2. 02

    Fetch

    The Rust core queries official platform APIs for metadata and caption tracks — cookies go to bilibili.com only, never to a third party.

  3. 03

    Generate

    Timestamped subtitle chunks are sent to your configured model, which writes a Summary plus Section breakdown with hh:mm:ss ranges, streamed back live.

  4. 04

    Export

    Copy the Markdown, save it as .md, or let Subquill auto-write every finished note into your notes folder.

Integrations

Your videos, your model, your folder

Subquill is the plumbing between three things you already control: public captioned videos, an OpenAI-compatible endpoint, and wherever you keep your notes.

Video sources
  • Bilibili

    Public + AI & login-gated captions (optional SESSDATA)

  • YouTube

    Public caption tracks, no account login

Model endpoints
  • OpenAI-compatible endpoints

    Any base URL + model name you own

  • Local servers

    Works with any server exposing the chat completions format

Output
  • Markdown

    Summary + timestamped section breakdown

  • .md files

    Manual export or auto-save to a folder

The note shape

Summary first.
Timestamps always.

Every note lands in the same shape — a Summary up top, then a Section breakdown whose titles carry hh:mm:ss ranges taken straight from the caption lines.

## Summary

One paragraph that orients you: what the video covers, the argument it makes, and who it is for — no invented facts beyond the transcript.

## Section breakdown

### Core concepts (00:00:00 - 00:04:32)

What this stretch of the video establishes, in the video's own language, so you can jump back to the exact minute.

### Worked example (00:04:32 - 00:11:07)

The demo walked through step by step, plus the caveats the speaker raised mid-way.

Privacy

Your keys never leave the machine

Subquill runs no backend. Onboarding credentials are written straight to local files by the Rust core and the React layer is never given the plaintext values after save — the UI only shows “configured”. Outbound network traffic goes where you told it to: the platform APIs and your own LLM endpoint.

where secrets live

local only

FilemacOS / LinuxWindows
~/.config/subquill/%APPDATA%\subquill\
~/.local/share/subquill/%LOCALAPPDATA%\subquill\
  • API key & SESSDATA stored on disk only
  • No telemetry, no Subquill servers in the loop
  • Optional cookie goes to Bilibili's official API
  • Safe Markdown preview renders no raw HTML

FAQ

Got questions? We've got answers.

Subquill AMP

Every model, one endpoint

Subquill AMP is our hosted OpenAI-compatible gateway. Sign up, top up, and paste the base URL into Subquill — no need to juggle provider keys. Pay as you go, cancel any time.

Ready to study?

Clone Subquill, build it locally, drop in your model endpoint, and turn your next Bilibili or YouTube video into a Markdown note you actually keep.

Build from source