v1.7.0 · stablereleased 7 days ago

Paste a link.Walk away with study notesyou actually keep.

One command reads the transcript, writes real structured Markdown, and can throw in a quiz and a PDF while it's at it. Point it at a whole playlist and it runs unattended, through whichever model you already have a key for.

  • Single video or full playlist
  • Splits by chapter on its own
  • Any model you've got a key for
  • MD, HTML, PDF, DOCX — one run
~/notewise
›notewise process "https://youtu.be/iDulhoQ2pro" --quiz --format md,pdf›→ parsing url · fetching transcript · detecting chapters›→ chapters: 7 · chunking 4000 / overlap 200›→ generating with gemini/gemini-2.5-flash›✓ wrote attention_is_all_you_need.md›✓ wrote attention_is_all_you_need_quiz.md›✓ wrote attention_is_all_you_need.pdf›
cached · skip on rerun unless --force
  • attention_is_all_you_need.md
  • …_quiz.md
  • attention_is_all_you_need.pdf
No 02 · Output

One run. Six
kinds of paper.

Six formats come out of one generation pass. Wanting a PDF too doesn't mean running the transcript through the model a second time.

› notewise process "…" --format md,html,pdf,docx

¶ PDF ships a bundled Unicode font (Latin, Cyrillic, Greek, Vietnamese, Devanagari); other scripts fall back to Markdown for that video.

  • .md

    Markdown

    Plain, portable, the source of truth.

    01
  • .html

    HTML

    Self-contained, opens in any browser.

    02
  • .pdf

    PDF

    Typeset, printable, archive-grade.

    03
  • .docx

    DOCX

    Edit, annotate, share with non-devs.

    04
  • .txt

    Transcript .txt

    Raw words, no formatting.

    05
  • .json

    Transcript .json

    Word-level timestamps for tooling.

    06
No 03 · Pipeline

From URL to filed-away notes, in six small steps.

Six ordinary steps, not a black box. Each one shows up in the logs, takes a flag if you want to change it, and if step four dies, rerunning picks up from cache instead of starting over.

  1. Resolve

    01

    Single video, full playlist, or a .txt of URLs. Cookies file optional for age-gated or private content.

  2. Cache check

    02

    Hit? Skip the rest entirely. Otherwise pulls captions from YouTube over a reused connection, rate-limited (default 10/min) and stored verbatim under ~/.notewise.

  3. Chapter-split

    03

    Bundled into one note by default. Pass --chapter-directory-output to write each chapter as its own file. No chapters → 4 000-token chunks, 200-token overlap.

  4. Generate

    04

    LiteLLM routes the chunks through your provider. Concurrency tunable; defaults to 5 parallel videos. Per-token cost is tracked as it goes, with pricing discovered from the endpoint itself for custom or self-hosted setups.

  5. Render

    05

    Markdown is the source. HTML, PDF, and DOCX are typeset on top — same content, four surfaces.

  6. Persist

    06

    Files land in ./output (or wherever -o points). The cache index updates so the next run skips what's already done.

No 04 · Providers

Bring the model
you already pay for.

NoteWise doesn't have its own model. It hands the prompt to LiteLLM (opens in a new tab), which already speaks to two dozen providers. Point one environment variable at whichever you've got a key for. Gemini 2.5 Flash is the default — its free tier alone covers a full course.

¶ Any LiteLLM-supported model string works — including local llama.cpp endpoints.

Google Geminidefault
gemini/…GEMINI_API_KEY
OpenAI
openai/…OPENAI_API_KEY
Anthropic
anthropic/…ANTHROPIC_API_KEY
AI21
ai21/…AI21_API_KEY
Azure OpenAI
azure/…AZURE_API_KEY
AWS Bedrock
bedrock/…AWS_ACCESS_KEY_ID
Cerebras
cerebras/…CEREBRAS_API_KEY
Cloudflare
cloudflare/…CLOUDFLARE_API_KEY
Cohere
cohere/…COHERE_API_KEY
DashScope
dashscope/…DASHSCOPE_API_KEY
Databricks
databricks/…DATABRICKS_API_KEY
DeepInfra
deepinfra/…DEEPINFRA_API_KEY
DeepSeek
deepseek/…DEEPSEEK_API_KEY
Fireworks
fireworks_ai/…FIREWORKS_AI_API_KEY
Groq
groq/…GROQ_API_KEY
Hugging Face
huggingface/…HUGGINGFACE_API_KEY
Jina AI
jina_ai/…JINA_API_KEY
Mistral
mistral/…MISTRAL_API_KEY
Novita
novita/…NOVITA_API_KEY
NVIDIA NIM
nvidia_nim/…NVIDIA_NIM_API_KEY
OpenRouter
openrouter/…OPENROUTER_API_KEY
Perplexity
perplexity/…PERPLEXITYAI_API_KEY
Replicate
replicate/…REPLICATE_API_KEY
SambaNova
sambanova/…SAMBANOVA_API_KEY
Together AI
together_ai/…TOGETHERAI_API_KEY
Vercel AI Gateway
vercel_ai_gateway/…VERCEL_AI_GATEWAY_API_KEY
Voyage AI
voyage/…VOYAGE_API_KEY
watsonx
watsonx/…WATSONX_API_KEY
xAI Grok
xai/…XAI_API_KEY
OAuth · no API key needed
  • ChatGPT (OAuth)chatgpt/gpt-5.6-lunanotewise auth login chatgpt
  • GitHub Copilot (OAuth)github_copilot/gpt-5-mininotewise auth login github_copilot
Self-hosted & custom endpoints

Point NoteWise at any OpenAI-compatible base URL — llama.cpp, vLLM, Ollama, a private gateway — and save it under a name you pick. Even without LiteLLM's built-in pricing for that endpoint, NoteWise reads its /v1/models response and uses that to estimate cost per run.

› notewise inference add local --base-url http://localhost:8000/v1

¶ Leave off a flag and it's asked for interactively — including a numbered, arrow-key model picker.

No 05 · Cookbook

Four commands that cover
most of a semester.

These four cover almost everything. For the rest, there's a flag for it: notewise process --help.

Recipe · 01

Single video, default everything

The most boring, useful command in the project.

zsh
›notewise process "https://youtu.be/VIDEO"
-> ./output/<title>.md

Recipe · 02

Full playlist · PDF + DOCX

Hand it the playlist URL and walk away.

zsh
›notewise process "https://youtube.com/playlist?list=…" --format md,pdf,docx -o ./course
concurrent · respects YOUTUBE_REQUESTS_PER_MINUTE

Recipe · 03

Batch a syllabus from a .txt

One URL per line. Resume on next run.

zsh
›notewise process syllabus.txt --quiz
-> writes <name>.md and <name>_quiz.md per video

Recipe · 04

Sign in with ChatGPT — no API key

OAuth device flow; uses your existing ChatGPT account.

zsh
›notewise auth login chatgpt›notewise process "…" --model chatgpt/gpt-5.6-luna
tokens stored under ~/.notewise/oauth/ · also: github_copilot/gpt-5-mini
No 06 · Notes in the margin

Honest answers, before you install.

  • Where do my notes live?

    Wherever --output points, ./output if you don't say otherwise. The Markdown file is the real artifact; every other format is rendered next to it. Nothing about the video or your notes leaves your machine except the request to your LLM.

  • What about videos without captions?

    Can't be processed. NoteWise reads YouTube's transcript API and stops there — it doesn't run its own speech-to-text. If a video has no captions, bring your own transcription and feed the text in some other way.

  • Will it cost me money?

    NoteWise itself is free, MIT-licensed, and always will be. What the model call costs depends entirely on your provider's pricing and your usage — check their docs before you point it at a 40-video playlist. NoteWise tracks and estimates that per-run cost as it works, even for self-hosted or custom endpoints without built-in LiteLLM pricing.

  • Do I have to remember every flag?

    No. Commands for managing saved endpoints, reading or writing config keys, and inspecting a cached video will prompt you for anything you leave out — including a numbered, arrow-key picker for choosing a model.

  • Can I use private or members-only videos?

    Yes. Export a Netscape-format cookie file, set YOUTUBE_COOKIE_FILE, and NoteWise transcribes anything your own browser session can already watch.

  • Why CLI and not a web app?

    Because a terminal command drops into cron, CI, your editor, and whatever scripts you already have. A web app would mean re-uploading and re-pasting every time. The notes belong in your repo, not behind someone else's login.

  • How are long videos handled?

    By default, one file — chapters just become headings inside it. Pass --chapter-directory-output for one file per chapter instead. Videos without chapter markers get chunked into 4,000-token windows with a 200-token overlap, so nothing important falls on a seam.

Coda · Install

Pick a video. Keep what you learn.

Already set up with uv or pipx? Grab the PyPI package below. Just want a binary and nothing else? The short URL figures out your shell and hands back the right installer.

notewise.click/install
›# recommended Python tool install›uv tool install notewise››# try without installing›uvx notewise --help››# pipx / pip›pipx install notewise›python -m pip install notewise››# prefer standalone binary?›curl -fsSL https://notewise.click/install | sh››# Windows binary installer›irm https://notewise.click/install | iex
the endpoint returns the right installer for curl, wget, PowerShell, or a browser