anyscribe  ·  v0.13.1  ·  MIT open source recording · local-first

Let your AI agent scribe anything.

anyscribe turns YouTube videos, reels, podcasts, and recordings into clean, searchable markdown on your own machine. Built so your AI agent can run it for you, with a clean local dashboard when you want to see it, and a full CLI when you want your hands on it.

install  ·  macos & linux ● one line
$curl -fsSL https://raw.githubusercontent.com/rishmadaan/anyscribecli/main/install.sh | bash
or pip install anyscribecli · windows: irm https://…/install.ps1 | iex
Platforms
macOS · Linux · Win
Requires
Python 3.10+
Engines
Seven, incl. offline
Licence
MIT
§01  the primary way · with your AI agent

Just ask. Your agent
does the scribing.

anyscribe was built agent-first. It ships as a Claude Code skill that installs itself during onboarding, plus an MCP server that plugs into Claude Desktop, Cursor, and any MCP host. You describe the outcome. The agent picks the flags, runs it, and hands back a markdown file you own.

Claude Code  ·  anyscribe skill active
you

Transcribe this conference talk and pull out the action items. https://youtube.com/watch?v=roadmap-2026

claude

On it. Routing to the balanced engine and diarizing so I can attribute the asks.

running scribe "https://youtube.com/watch?v=roadmap-2026" --diarize --json
✓ saved ~/anyscribe/sources/youtube/roadmap-2026.md
deepgram · 3 speakers · 6,204 words · 41 min read

Done. The full transcript is in your vault. Here are the action items I found:

  • Priya: ship the migration guide before the v2 cutover
  • Marco: get the load-test numbers to the SRE channel by Friday
  • Team: decide on the deprecation window at next week's sync
Claude Code skill

Onboarding detects Claude Code and installs a skill that teaches it how to drive anyscribe: a decision tree, safety rules, and JSON patterns. No config to write.

$scribe install-skill # or auto during onboarding
MCP server

Ten tools over the Model Context Protocol: transcribe, batch, download, browse history, read and set config, list and test providers, run diagnostics.

$pip install "anyscribecli[mcp]"
JSON on every command

Add --json to any primary command for machine-readable metadata, file paths, and provider info. Structured exit codes, no silent defaults.

$scribe "url" --json
§02  when you want to see it · the web UI

A clean local dashboard,
on your machine.

Run scribe ui and anyscribe opens a dashboard at 127.0.0.1:8457, served from your own machine, no cloud behind it. Paste a URL, watch progress live, browse your history, change settings. First run walks you through setup in a wizard. It is a first-class surface, not a fallback.

127.0.0.1:8457
The anyscribe web UI: a dark dashboard with a Transcribe, History, and Settings sidebar, a URL input reading paste a URL or file path, an amber Transcribe button, and a balanced hi-Latn clean options row.
Live progress

Download, convert, and transcribe stream over WebSocket, the same events the CLI prints.

History

Every transcript you have made, newest first, backed by the same vault the agent and CLI write to.

Settings

Pick an engine, paste a key with a live Test button, set your workspace folder.

First-run wizard

A full-screen setup on first launch: engine, key, offline option, workspace, done.

§03  when you want your hands on it · the CLI

Paste a link.
Get a document.

For people who live in terminals. One command runs the whole pipeline: download the media, clean up the audio, transcribe it with the engine you picked, write markdown into your vault. The terminal is the command. The file next to it is what lands on your disk.

~/work     anyscribe · live
rish@studio ~/work  
~/anyscribe/sources/youtube/perfect-espresso.md MD
title: "How to Pull the Perfect Espresso"
platform: youtube
duration: "12:34"
provider: deepgram
word_count: 1847
tags: [transcript, coffee]

How to Pull the Perfect Espresso

transcribed · deepgram · 2 speakers

00:04HOSTToday we're going to talk about the three variables that actually matter when you're pulling espresso: grind, dose, and yield.

00:19GUESTRight, and the trick is that none of them matter in isolation. It's the ratio between them that defines the shot.

… 1,798 more words, timestamped and speaker-labelled

in  ·  one command on a URL or file click the terminal to replay markdown in your vault  ·  out

No browser extensions, no paid SaaS dashboard, no scrubbing through a video to cherry-pick a quote. One command on your machine, and the result is a folder of markdown you own forever. Written in Python, MIT-licensed.

Every flag the CLI takes, your agent takes too, and the web UI drives the same engine. Pick the surface that fits the moment: scribe "<url>" here, scribe ui for the dashboard, or just ask Claude.

§04  what's in the box

The same engine, however
you reach for it, and a vault
that organises itself.

01

Your AI agent can drive it

--json on every primary command for clean machine output. A Claude Code skill that installs itself when Claude is detected. An MCP server (pip install anyscribecli[mcp]) with ten tools that plugs into Claude Desktop, Cursor, and anything else speaking MCP.

02

A proper web UI

scribe ui launches a local dashboard at 127.0.0.1:8457. Paste URLs, watch progress live over WebSocket, browse your transcript history, manage config. It's all backed by the exact same engine as the CLI.

03

One knob, seven engines

Don't know which service to pick? Don't. Choose --quality accuracy, balanced, cost, or free and anyscribe routes to the right engine, from ElevenLabs Scribe down to fully offline Whisper. Seven providers in all; name one explicitly whenever you'd rather.

04

Obsidian-native output

Every transcript is markdown with proper YAML frontmatter: title, platform, duration, language, word count, reading time, tags. Daily logs in daily/, a master _index.md newest-first, per-platform folders. Everything lives in ~/anyscribe/, a real folder you can grep, git-clone, or open in Obsidian.

05

Speaker diarization

Add --diarize for multi-speaker transcripts. Turns get grouped by speaker with timestamps, ideal for meetings, interviews, and podcasts. anyscribe auto-switches to Deepgram for the best separation, unless you override it.

06

Local & private by default

Audio never leaves your machine unless you've picked a cloud engine. The Local option is fully offline, no API key, free forever. Config and API keys live in ~/.anyscribecli/ and nowhere else. No analytics, no tracking, no cookies.

§05  the quality knob

Tell it what matters.
It picks the engine.

Comparing seven transcription services is nobody's idea of fun. So don't. Tell it what matters in one word (accuracy, balance, cost, or free) and anyscribe routes to the engine that fits. Want a specific provider? Name it and it obeys.

--quality accuracy

Accuracy

When the words have to be right: legal, medical, anything you'll quote.

routes to ElevenLabs Scribe
--quality balanced

Balanced

The sensible default. Great transcripts, native speaker labels, fair price.

routes to Deepgram Nova
--quality cost

Cost

Long backlogs, rough drafts, anything where cheap-and-fast wins.

routes to Groq Whisper
--quality free

Free

Sensitive audio, no budget, no signal. Runs entirely on your machine.

routes to Local Whisper · $0

Under the knob sit seven engines you can also call by name, like --provider deepgram. Each has its own strengths.

OpenAI Whisper

general

The reliable workhorse. General-purpose, multilingual, word-level timestamps. Files >25 MB get auto-chunked.

~$0.006 / min 57 languages word-level ts

Deepgram Nova

balanced tier

Best-in-class speaker separation. Native diarization, Hinglish support, $200 free credit on signup.

~$0.0043 / min 36+ languages native diarize

ElevenLabs Scribe

accuracy tier

99 languages, top-tier accuracy on Western European audio. Word-level timestamps plus per-word confidence scores.

~$0.005 / min 99 languages word confidence

Groq Whisper

cost tier

Whisper-large-v3-turbo on Groq's silicon: the cheapest, fastest cloud route. The pick when you have a backlog to burn through.

cheapest cloud very fast multilingual

Sarvam AI

indic

Purpose-built for Indic languages. Hindi, Tamil, Telugu, Bengali, Marathi, Kannada, Malayalam, Gujarati, Punjabi.

rupee-priced 11 Indic langs made in India

OpenRouter

flexible

Audio-via-chat through GPT-4o-audio-preview and friends. One API key, many models, pay per-token.

model choice per-token many models

Local whisper

free · offline

faster-whisper on your own CPU or GPU. No API key, no network, no bills, no audio leaving the building. Perfect for sensitive recordings, or a flight. Set it up once with scribe local setup --model base.

$0 · forever offline CPU or GPU
§06  what it writes

Markdown that feels
like a document.

Not a transcript dump. Every note gets proper metadata, a sensible header, timestamps and speaker labels when you ask, so Obsidian, ripgrep, and git all play nicely. So does any model you hand it to.

i.

Your vault, your files.

Everything under ~/anyscribe/. Change the path with scribe config set workspace_path. Point Obsidian at it and it just works.

ii.

Searchable out of the box.

A master _index.md with every transcript newest-first. Daily logs in daily/. Per-platform folders: youtube/, instagram/, local/.

iii.

YAML for everything.

Title, duration, language, word count, reading time, tags. Obsidian properties out of the box: filter, sort, query with Dataview.

iv.

Diarized when you ask.

Add --diarize and you get speaker-labelled turns with timestamps. Perfect for meetings, interviews, panel discussions.

~/anyscribe/sources/local/weekly-standup.md MD
title: "Weekly Team Standup"
platform: local
duration: "28:51"
language: en
word_count: 4212
reading_time: "21 min"
provider: deepgram
tags: [transcript, meetings]

Weekly Team Standup

Transcribed · deepgram · diarized · from a local recording

Transcript

00:02SPEAKER 1Quick round: what shipped this week, and what's blocked.

00:09SPEAKER 2The payments retry logic went out on Tuesday. Error rate is back under one percent.

00:21SPEAKER 1Good. Anything blocked?

00:24SPEAKER 2Waiting on the schema review before I can merge the export job…

… 4,140 more words

§07  the first five minutes

Install anyscribe. Run
the wizard. Go.

One command installs everything. Then scribe ui opens a wizard in your browser that checks your system, installs missing pieces (yt-dlp, ffmpeg), and walks you through picking an engine. From nothing to your first transcript in about five minutes.

$curl -fsSL https://raw.githubusercontent.com/rishmadaan/anyscribecli/main/install.sh | bash

Installs Python (if missing), ffmpeg, yt-dlp, and the anyscribe CLI. Works on macOS (Homebrew) and Linux (apt, dnf, pacman).

>irm https://raw.githubusercontent.com/rishmadaan/anyscribecli/main/install.ps1 | iex

PowerShell on native Windows. If you're on WSL2, use the macOS / Linux command above.

$pip install anyscribecli

If you already have Python 3.10+, yt-dlp and ffmpeg, pip is the shortest path there is.

i.

Open the wizard in your browser

Runs a local dashboard at 127.0.0.1:8457. No cloud, no account. Pick an engine, paste a key (with a live Test button), confirm your folder. Prefer the terminal? scribe onboard does the same with arrow keys.   scribe ui

ii.

Ask Claude to transcribe it, or run it yourself

The Claude Code skill auto-installs during onboarding, so you can just ask Claude to transcribe a talk and pull out the notes. Rather type it? Pass a YouTube URL, an Instagram reel, or a local file and the markdown lands in ~/anyscribe/. Add --diarize for speaker labels.   scribe "https://youtube.com/watch?v=…"

iii.

Open the vault in Obsidian

“Open folder as vault” → point at ~/anyscribe/. You'll see _index.md, sources/, and daily/.

copied