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.

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.