Video Notes

approved

by rekby

This plugin has not been manually reviewed by Obsidian staff. Annotate local videos in your vault with human-readable timestamp links, frame screenshots, and playback control.

1 stars49 downloadsUpdated 1mo agoAGPL-3.0

Video Notes

English · Русский

An offline-only Obsidian plugin for taking notes on videos that already live inside your vault. Inspired by media-extended, minus every online feature — no YouTube, no streaming, no network calls.

Features

  • Dedicated video panel that plays any video file from your vault.
  • Insert a human-readable timestamp link like [[lecture.mp4#t=736|12:16]] at the current playback position.
  • Clicking such a link opens the panel and jumps the player to that exact second (and pauses, so you can inspect the frame).
  • Take a screenshot of the current frame, save it as PNG to your configured attachments folder, and get the timestamp link inserted next to it.
  • Configurable pre-roll offset: when you press the button, the timestamp (and screenshot) are taken a few seconds before the click, so you don't miss the moment you're reacting to.
  • Playback control commands: play/pause toggle, seek backward/forward by a configurable step. Bind them to any hotkey.

Screenshots

Player panel Timestamp inserted Screenshot inserted

Demo footage: Caminandes 3: Llamigos © Blender Foundation — archive.org/details/CaminandesLlamigos, licensed under CC-BY 3.0.

Install

Via BRAT (recommended)

  1. Install the BRAT plugin from Obsidian community plugins.
  2. Open BRAT settings → Add Beta plugin → enter rekby/obsidian-video-notes.
  3. Enable Video Notes under Settings → Community plugins.

BRAT will keep the plugin updated from GitHub releases automatically.

Manual install from a release

  1. Download main.js, manifest.json, styles.css from the latest release.
  2. Put them into <your-vault>/.obsidian/plugins/video-notes/.
  3. In Obsidian: Settings → Community plugins → enable Video Notes.

From Obsidian community plugins

Not available yet — pending acceptance of the submission PR to the official plugin list.

Usage

All features are exposed as commands. Open the command palette (⌘P / Ctrl+P) and search for "Local video".

CommandWhat it does
Open local videoFuzzy file picker across .mp4/.webm/.mkv/.mov/.m4v files in your vault.
Toggle play/pausePlay or pause the active player.
Resume playbackStart playing (no-op if already playing).
PausePause the active player.
Seek backward / Seek forwardMove the playback position by seek step seconds.
Insert timestamp at current positionInsert [[video#t=N|MM:SS]]. Pause behaviour follows the Pause on insert setting.
Insert timestamp and pauseSame as above, but always pauses regardless of the setting.
Insert timestamp (keep playing)Same, but always keeps the player running.
Take screenshot at current positionSave a PNG frame to attachments + insert image and timestamp link. Pause behaviour follows the setting.
Take screenshot and pauseSame, but always pauses.
Take screenshot (keep playing)Same, but always keeps the player running.

Bind any of these to a hotkey via Settings → Hotkeys. Typical workflow: bind Insert timestamp and pause to one hotkey (for "stop and write a thought") and Resume playback to another (to continue when you're done typing).

Settings

SettingDefaultDescription
Timestamp offset (seconds)3Subtract this many seconds from the current position when inserting a timestamp or screenshot.
Seek step (seconds)5Step used by Seek backward / Seek forward.
Pause on inserttruePause the player after inserting a timestamp or screenshot.
Seek on inserttrueAlso jump the player to the inserted (offset-adjusted) moment.
Player locationrightWhere a new player opens when you click a timestamp link and none is open yet: right sidebar or bottom split of the current tab. If the player is already open, it is reused and simply switches to the right video + time.

Timestamps and screenshots are always inserted into the last markdown tab you had focused, not the video panel itself. You can click buttons inside the player freely without losing the target note.

Development

npm install
npm run dev        # esbuild watch
npm run build      # production build
npm test           # jest
npm run lint

Generating README screenshots (optional, local-only)

npm run demo:screenshots

This fetches the demo footage (Caminandes 3, CC-BY 3.0) into the demo vault if missing, boots a real Obsidian via wdio-obsidian-service, loads the plugin against the vault in obsidian-tests/demo-vault/, drives the player through an e2e scenario for each UI language, and writes fresh PNGs into docs/screenshots/en/ and docs/screenshots/ru/.

Releasing

  1. Go to GitHub → Actions → Publish Release → Run workflow.
  2. Choose patch or minor. The workflow:
    • strips the -pre-release suffix on the very first run, otherwise bumps the chosen part;
    • syncs manifest.json and versions.json via version-bump.mjs;
    • builds, pushes the tag, creates a GitHub release with main.js, manifest.json, styles.css attached.

License

AGPL-3.0-or-later © rekby. See LICENSE for the full text.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.