Turn video URLs or local media into structured Markdown notes and mind maps.
中文说明 · MIT License · Contributing
vid2note is a local, single-user application without authentication. Docker Compose binds it to
127.0.0.1:8761by default. Do not expose it to the public internet without authentication, TLS, and network access controls.
download → extract audio → ASR → LLM notes → mind map → cleanup
- YouTube, Bilibili, generic HTTP(S), local video, and local audio input.
- Experimental
bcutonline ASR, local whisper.cpp/faster-whisper, or an external ASR endpoint. - DeepSeek, Qwen, GLM, Moonshot, MiniMax, Doubao, Baidu, Ollama, and one custom OpenAI-compatible endpoint.
- Tabbed Settings and ASR diagnostics, including per-provider connectivity tests.
- Four note-detail levels: concise, balanced, detailed, and exhaustive.
- Optional PDF handout reference and video-frame embedding.
- Markdown, XMind, PNG, and Markdown-outline exports.
- Persistent SQLite tasks, SSE progress, node-level reruns, batch export, and retention rules.
- One same-origin Docker container for the Vue frontend and FastAPI backend.
git clone https://github.com/Goldloli/vid2note.git
cd vid2note
cp .env.example .env
docker compose up -d --buildOpen http://localhost:8761 and configure an LLM in Settings. You can also
provide the initial configuration through .env:
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=your-key
DEEPSEEK_MODEL=deepseek-v4-flashPublic settings stored in data/config/settings.json take precedence over
environment defaults.
Run Ollama on the host:
ollama pull qwen3.5Then use:
LLM_PROVIDER=ollama
OLLAMA_MODEL=qwen3.5
OLLAMA_BASE_URL=http://host.docker.internal:11434/v1Ollama does not need an API key. The Compose configuration provides the
host.docker.internal mapping on Linux.
Models are never downloaded automatically. Mount a faster-whisper model directory or whisper.cpp model into the container and set its in-container path on the ASR page. See configuration.
python3.11 -m venv backend/.venv
backend/.venv/bin/python -m pip install -r backend/requirements-dev.txt
cd backend && .venv/bin/python -m pytest
# Node.js 22+
cd ../frontend
npm ci
npm run checkBrowser E2E checks use a separate dependency boundary:
backend/.venv/bin/python -m pip install -r backend/requirements-e2e.txt
backend/.venv/bin/python -m playwright install chromium
backend/.venv/bin/python backend/tests/test_playwright.pyBefore a public release, scan the tracked tree and reachable Git history. The preflight reports only non-reversible fingerprints, never secret values:
python3 scripts/release_preflight.pySee architecture, troubleshooting, the roadmap, and the security policy.
Credentials stored through the UI are encrypted with Fernet in
data/config/credentials.enc; public settings live in settings.json.
Protect and back up credentials.enc and its master key together. For managed
deployments, mount the key through VID2NOTE_MASTER_KEY_FILE.
bcut is an experimental online compatibility feature that depends on an
external service and may stop working without notice. Video-platform
availability is likewise not guaranteed. Only process content you are
authorized to use and follow applicable platform terms and law.
Licensed under the MIT License.