rexxall117 downloadsTurn video links, local recordings and transcripts into notes with a summary, a timestamped transcript and key points, processed by a backend you run.
Needs Obsidian 1.11.4+ on desktop and Docker Desktop or OrbStack. Costs nothing for the plugin and the backend; the summary model is billed by your provider (eight summaries, one of them 47 minutes, cost about ¥0.4 with DeepSeek off-peak on 2026-10-29). Step-by-step guide: INSTALL.md (English, 日本語).
~/video-summary-backend) and opens Terminal, which shows the command it will run and waits for you to press Return before downloading the 550 MB backend image. The plugin never downloads or updates anything by itself.uploads/ folder, a pasted transcript, or a note with a link property. The obsidian://video-summary URI and the browser extension capture a link from outside Obsidian.The note reads only what is said, not the picture. What the backend does, what the n8n workflow looks like and where to find errors: backend capability matrix.
![]() Before setup, the side panel offers the first-run setup or an example note. |
![]() First-run setup: paste the connection code, check, trial run, optional Bilibili login. |
![]() The full check names each failing part and what to change. |
![]() Several links at once, one per line, each with its own progress. |
| Part | What it is | Cost |
|---|---|---|
| The plugin | Obsidian desktop | Free, no account |
| Backend hosting | n8n with yt-dlp and ffmpeg in Docker on your own computer, started by the script | Free: Docker Desktop or OrbStack, free for personal use; no server to rent |
| Speech-to-text | SiliconFlow SenseVoiceSmall, used only for videos without subtitles and for local audio or video |
The model is free, but SiliconFlow refuses even free models while the account balance is zero; top up a small amount once |
| Summary model | DeepSeek deepseek-flash by default, or any OpenAI-compatible model |
Billed per token by the provider. In our test on 2026-10-29, eight summaries including a 47-minute video cost about ¥0.4 off-peak. Check the provider's price page. |
Bilibili login is optional and free: scan a QR code in the setup wizard to let the backend read Bilibili subtitles and AI subtitles.
Run these from the command palette:
快速总结当前笔记 (quick summary of the current note)将当前笔记全文作为文稿总结 (summarise the note's text as a transcript)快速提取文稿 (transcript only)收集当前笔记里的视频链接到侧栏 (collect the note's video links into the side panel)更新视频信息(不改正文) (refresh video details without touching the body)批量处理视频 (batch)搜索跨模态视频记忆, 生成多视频论点实验室, 复习当前视频的学习卡, 复习所有到期的视频学习卡用本地可复现工件重新处理, 生成或安全更新视频库 Base, 标记为非视频笔记Command IDs changed in 2.6.0; hotkeys set on a manually installed 2.4.1 need setting again.
Settings cover the backend and webhook profiles (each with its own Header Auth secret, which the bundled workflow requires), output folder and file names, language, depth, content type, cache, batch concurrency, cookies, and request field names for custom n8n workflows. The cache reuses a result only when the source and every processing option match.
| What | Goes to | Stored |
|---|---|---|
| Link, pasted transcript or local file, note name, mode and language | Your backend on 127.0.0.1 only (light tier: see below) |
The note in your vault, plus evidence and learning data in the plugin folder |
| Video subtitles or audio | Fetched by your backend from the video platform | The backend's working volume; downloads older than a day are removed |
| Audio without subtitles | Your backend sends it to SiliconFlow for speech-to-text | Not kept by the plugin |
| Transcript text | Your backend sends it to your summary model | Not kept by the plugin |
| Model and speech-to-text keys | Only to their providers, through your backend | Keys chosen in settings: Obsidian's secret storage, and the backend's own Docker volume (n8n's encrypted credential store plus one file only the container user can read). Keys from the start script: the backend's .env. Never in the vault, data.json, a command line or an n8n execution record. |
| Connection code (backend address and password) | Only to your backend | The plugin's data.json in the vault, so it syncs with the vault. The backend listens on 127.0.0.1, so another computer needs its own backend and its own code. |
| Bilibili login | Only to your backend | The backend; the plugin does not keep it |
| Light tier: transcript text, title and your summary key | The plugin sends them to your summary model directly | Not kept by the plugin beyond the note it writes |
The plugin does not include client-side telemetry, analytics, advertising or a self-update mechanism, and sends nothing to the plugin author.
Notes in your vault. The plugin lists the vault's Markdown files to find video notes: for the side panel's library, for the pending-video batch, to open the note behind a job, and to find the existing note before a result, capture or course import would create a duplicate. It reads frontmatter from Obsidian's metadata cache; when a note's frontmatter lacks the field it looks for (a video link, a source hash, an artifact ID), it reads the note text for that field. What it reads stays on your computer. It lists folders only when you pick an output folder, and changes a note only when you process it, then only its own blocks.
Clipboard. It writes to the clipboard only when you press a copy action: a note's video link, a transcript quote, a job's error or raw result. It reads the clipboard only when you press Paste from clipboard in first-run setup, to take the connection code.
Local cache. Processing results, evidence, learning progress and Bilibili cover addresses are kept as files under the plugin's data/ folder (results and covers in data/cache/), not in data.json and not in the browser's local storage. Clear all in the cache settings removes cached results.
Local port for the browser extension. Off until you turn on Receive in the background. Then, on desktop, the plugin listens on 127.0.0.1 (port 27183 by default, changeable) so the browser extension can hand it a video without bringing Obsidian forward. It accepts a request only with the pairing code shown under Settings → Video Summary → Browser extension, refuses requests from web pages, and does nothing but what an obsidian://video-summary link does. Turn it off there.
Network use. Besides your backend, the plugin contacts your summary model's address for light-tier jobs (only when a job carries a transcript and the light tier is on), and video platforms directly for playlist import (youtube.com, api.bilibili.com), Bilibili covers (api.bilibili.com), short-link expansion, the QR login in first-run setup (passport.bilibili.com; the resulting login goes only to your backend) and the embedded YouTube or Bilibili player; those hosts see your IP address. Covers load only over HTTPS from known platform media hosts. Markdown written by the model has its images, embeds and active HTML neutralised before it is shown or saved.
Node and Electron access (desktop only). fs and path list the files in the cookies folder and read their size and age, never their contents. http and https send one request to a short link and read only its Location header, and stream the summary model's reply for light-tier jobs. Electron's shell.openPath shows a folder in Finder or Explorer.
Programs the plugin runs (desktop only, and only for a backend on this computer). The backend check-up and the Backend settings run docker info, docker ps and docker inspect to show whether Docker and the backend container are running. Start backend opens OrbStack or Docker Desktop, then runs docker start on the container that owns the webhook's port, or docker compose up -d --no-build --pull never in the backend folder when no container exists yet. Stop runs docker stop; the start-with-the-computer switch runs docker update --restart. When you change the model or a key in settings, the plugin runs docker exec -i … configure.mjs apply with the values on standard input, then docker restart. Install and start and Update backend open Terminal on a script the plugin wrote; the script prints docker compose pull && docker compose up -d and runs it only after you press Return. Each program is run directly with a fixed argument list and no shell. The plugin never downloads, builds or updates the backend by itself: downloading and updating happen in that Terminal window, on your confirmation.
Files outside the vault. Install and start writes the backend folder (by default ~/video-summary-backend): compose.yaml, .env with a random token and the port, install-backend.command, and empty uploads and cookies folders; an existing .env keeps every line it has. A local-media input is sent to the backend as a file name; the bundled backend reads only files placed directly in its uploads/ folder, and the Reader plays only files inside the vault. Evidence, learning progress, reproducibility records and course manifests are kept under the plugin's data/ folder; back it up if you want them to survive a reinstall, and remove it before sharing a vault. The webhook secret is stored unencrypted in the plugin's data.json; rotate it if that file is exposed.
Download main.js, manifest.json and styles.css from the latest release into <your-vault>/.obsidian/plugins/video-summary/. Restart Obsidian and enable Video Summary in Settings → Community plugins. To verify a download:
gh attestation verify main.js --repo Rexxall/obsidian-video-summary
Desktop only; Obsidian 1.11.4 or newer. The generated .base library views need Obsidian 1.9.10 with the Bases core plugin.
The backend has its own release, backend-v<version>, linked from the plugin release under Other downloads (video-summary-backend-<version>.zip, with a SHA256SUMS). It needs Docker Desktop or OrbStack; on Linux run ./vs-backend.sh. It listens only on 127.0.0.1 and checks the connection code's token on every request. Full guide: INSTALL.md, with English and Japanese versions; security notes: backend/SECURITY.md.
To build from source, see CONTRIBUTING.md.
browser-extension/ contains Video Summary Capture, a Chromium extension that sends the video you are watching, with its timestamp, to Obsidian or to the same backend. It can also scan a page for video links, keep a queue and copy timestamped Markdown links. See browser-extension/README.md.
Issues: github.com/Rexxall/obsidian-video-summary/issues. Changes in each version: CHANGELOG.md. MIT licence, see LICENSE.