-
Notifications
You must be signed in to change notification settings - Fork 11
Incremental Video
Video is one of the richest sources of knowledge available today. Lectures, tutorials, talks, and documentaries carry information that can't always be captured by reading alone — tone of voice, visual demonstrations, and live reasoning all contribute to deeper understanding.
However, watching a full video in a single sitting often leads to the same problem as traditional reading: massive input with poor retention. Most of what we watch is forgotten within days. Even worse, we tend to re-watch entire videos just to find a single passage that mattered.
Incremental Video applies the principles of incrementalism to video content. Instead of watching a video from start to finish, you:
- Watch in segments — process a video gradually across multiple review sessions
- Extract key passages — mark important segments with precise start/end times
- Prioritize what matters — assign priorities so the most important segments surface first
- Interleave with other material — mix video segments with readings, flashcards, and notes in a single session
This mirrors how incremental reading breaks articles into manageable extracts. The goal is the same: fluent transition from passive consumption to active retention, guided by priorities.
In SuperMemo's terminology, incremental video ensures that "the student can process far more video material than conventional viewing can allow" — because the student is always reviewing the most important segments first, at optimum intervals, rather than rewatching entire videos.
Any YouTube URL added as an Incremental Rem will automatically display the Video Component when it appears in your queue. There is no special setup — just make a Rem incremental and paste a YouTube link as its source.
When reviewing an Incremental Rem with a YouTube URL, the plugin displays an embedded video player with:
- Playback controls: Play/pause, seek, and playback speed adjustment
- Position tracking: Your playback position is saved automatically between sessions, so you resume where you left off
- A notes panel (📝 button): Toggle the editor side-by-side with the video to take notes while watching
- Extract controls: Create Video Extracts from specific passages (see below)
Video Extracts let you mark a specific segment of a video as a new Incremental Rem — with its own schedule, priority, and child notes.
- Start watching the video in your queue
- Click ✂️ Extract at the point where the important passage begins
- The current timestamp is recorded as the start time
- A green indicator shows
▶ Start: MM:SSand tracks the current position
- Continue watching until the passage ends
- Click Set End to finalize the extract
- The video pauses automatically so you can set a priority without distraction
- The Priority popup appears for you to assign a priority
- The extract is created as a child Rem with the label
Video Extract [MM:SS – MM:SS]
The extract becomes a new Incremental Rem in your queue. When you review it later, it opens the video directly at the start time of the passage — no need to search through the video again.
Tip: You can create multiple extracts from the same video. Each one keeps its own start/end time, priority, and schedule. This is perfect for lectures where only certain sections are relevant.
When creating a Video Extract, the plugin can automatically fetch the YouTube transcript for that segment and save it as a child Rem under the extract. This makes the spoken content searchable and reviewable as text.
Transcript fetching uses a small local proxy server that runs on your machine. This is necessary because YouTube's transcript API requires requests from a residential IP address — cloud-hosted proxies (like Cloudflare Workers) are blocked by YouTube.
The proxy:
- Uses zero external dependencies — runs with Node.js built-in modules only
- Listens on
http://localhost:3456 - Fetches YouTube caption data through YouTube's internal API
- Parses captions and returns clean text segments
- Stays running in the background, using virtually no resources when idle
-
Node.js installed (check with
node --versionin Terminal)
This installs the proxy as a macOS LaunchAgent — it starts automatically when you log in and restarts if it crashes.
-
In Terminal, copy the LaunchAgent plist:
cp ~/incremental-everything/com.incrementaleverything.yt-transcript-proxy.plist ~/Library/LaunchAgents/
-
Load the agent:
launchctl load ~/Library/LaunchAgents/com.incrementaleverything.yt-transcript-proxy.plist -
Verify it's running:
curl http://localhost:3456/
You should see:
{"status":"ok","message":"YouTube Transcript Proxy running"}
To stop the proxy:
launchctl unload ~/Library/LaunchAgents/com.incrementaleverything.yt-transcript-proxy.plistRun the proxy manually whenever you want transcripts:
node ~/incremental-everything/yt-local-proxy.jsYou'll see:
🎬 YouTube Transcript Proxy running on http://localhost:3456
Keep this terminal window open while using the plugin. Press Ctrl+C to stop.
When you create a Video Extract with the proxy running, the transcript for that time range is automatically fetched and saved as child Rems under the extract. The text is consolidated into readable blocks (~300 characters each) rather than individual word-level segments.
If the proxy is not running or the video has no captions available, the extract is still created normally — transcription is a best-effort enhancement that fails silently.
- Language: The proxy attempts to fetch English captions by default. Auto-generated captions (ASR) are supported.
- Availability: Not all YouTube videos have captions. Videos with captions disabled or private videos will not return transcripts.
-
Proxy logs: If something isn't working, check the Terminal running the proxy for
[Proxy]log messages, or check/tmp/yt-transcript-proxy.logif using the LaunchAgent.
See also:
- 1. Getting Started
- 2. The Philosophy: What is Incrementalism?
- 3. The Core Loop
- 4. Mastering the Queue: Prioritization & Sorting
- 5. Advanced Workflows & Use Cases
- 6. Essential References
- 7. FAQ & Troubleshooting
- 8. Changelog
- 9. Contributing to the Wiki