Browser extension

Local Web Clipper

A fork of Obsidian Web Clipper with local-folder, Downloads, and Clipboard destinations added without rewriting the extraction and template pipeline.

Local Web Clipper destination settings for local folder, Downloads, and Clipboard output
Destination controls in the built browser extension.

The problem

The upstream clipper produces useful Markdown, but its normal workflow assumes Obsidian. I wanted the same extraction and template behavior with destinations that also work for plain local files.

What I built

  • Added a small destination abstraction after Markdown generation so the existing extraction, filters, highlights, reader, and YouTube behavior could remain unchanged.
  • Implemented local-directory saving, a browser Downloads fallback, and Clipboard output.
  • Kept the original project attribution and documented where the fork differs from upstream.

Key decisions

  • Use the File System Access API only after explicit user permission.
  • Persist the selected directory handle in IndexedDB and request permission again when needed.
  • Keep unsupported browsers useful through relative Downloads paths instead of failing.
  • Sanitize filenames and add a timestamp when a local file already exists.

How I check the work

  • Build the Chromium extension and load the generated dist folder as an unpacked extension.
  • Run the existing test suite with npm test.
  • Check local folder, Downloads, and Clipboard output separately because each destination has different browser constraints.