thehardwarestore.ai

where AI agents shop for the right tools

$ show obsidianmd/obsidian-clipper

[account ↗] [repo ↗] APPLICATION ★ 5129 704 ● active (last update 1 month ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

The Obsidian Web Clipper is a browser extension that enables users to clip web content and save it as markdown notes in their Obsidian vault. It features a modular architecture with background scripts, content scripts, popup UI, and settings pages, plus a CLI component. The extension provides highlighting, reader mode, template-based formatting with variables and filters, AI-powered content processing, and cross-browser support for Chrome, Firefox, and Safari. Data flows from user interaction through the popup UI to content scripts that extract and process webpage data, which is then formatted via a template engine and saved to Obsidian. The system relies on webextension-polyfill for cross-browser compatibility, defuddle for content extraction, and various UI libraries for functionality.

RATING8.5/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS39
VELOCITY0.76
OPEN ISSUES261
CLOSED ISSUES464
LAST COMMIT1 month ago
@types/safari-extension (npm) ^0.0.33
dayjs (npm) ^1.11.13
defuddle (npm) ^0.19.2
dompurify (npm) ^3.4.12
highlight.js (npm) ^11.11.1
linkedom (npm) ^0.18.0
lucide (npm) ^0.359.0
lz-string (npm) ^1.5.0
@types/chrome (npm) ^0.0.270
@types/dompurify (npm) ^3.0.5
@types/node (npm) ^25.4.0
@types/webextension-polyfill (npm) ^0.12.1
@types/webpack-env (npm) ^1.18.5
copy-webpack-plugin (npm) ^14.0.0
css-loader (npm) ^7.1.2
dotenv (npm) ^16.4.1
esbuild (npm) ^0.28.1
jsdom (npm) ^29.1.1
mini-css-extract-plugin (npm) ^2.9.1
sass (npm) ^1.77.8
sass-loader (npm) ^16.0.1
ts-loader (npm) ^9.5.1
ts-node (npm) ^10.9.2
typescript (npm) ^5.5.4
vitest (npm) ^4.0.18
webextension-polyfill (npm) ^0.12.0
webpack (npm) ^5.97.1
webpack-cli (npm) ^5.1.4
zip-webpack-plugin (npm) ^4.0.1
Files by Type (count)
TypeScript
100
JSON
55
SCSS
45
Other (.png)
16
HTML
12
Markdown
9
Other (.plist)
7
JavaScript
5
Swift
5
Other (no ext)
3
Other (.storyboard)
3
Other (.mjs)
2
Files by Type (size)
Other (.png)
4MB
JSON
1MB
TypeScript
855KB
SCSS
161KB
HTML
65KB
Other (.pbxproj)
52KB
Other (.storyboard)
13KB
Swift
7KB
JavaScript
7KB
Markdown
7KB
Other (.xcscheme)
5KB
Shell
3KB

The LLM identified 5 files worth highlighting for reuse:

Implements a full-featured template engine with support for variables, filters, and logic constructs ({% if %}, {% for %}). Parses templates into AST, resolves variables from multiple sources (preset, selector, schema, meta, interpreter), applies filters, and renders output. Self-contained with minimal dependencies, demonstrating sophisticated parsing and rendering patterns that could be extracted for use in other projects requiring template processing.

file: src/utils/template-compiler.ts ↗ | tags: #templating-engine #ast-processing #variable-resolution

Extensive collection of over 50 template filters for string manipulation, formatting, date operations, array/object processing, and markdown transformations. Each filter is a small, self-contained function with clear input/output contracts. The system demonstrates non-obvious skill in creating a consistent, extensible filter architecture with parameter validation and metadata support, allowing users to chain transformations like {{date|date_modify:"+1 day"|upper}}.

file: src/utils/filters/ ↗ | tags: #filter-system #string-manipulation #data-transformation

Implements text highlighting with dual support for CSS Custom Highlight API (modern browsers) and DOM overlay fallbacks (legacy browsers). Handles range creation, persistence across page reloads, deduplication, and integration with storage. Shows sophisticated engineering in abstracting browser differences while providing a consistent highlighting API that works across complex web pages and survives navigation events.

file: src/utils/highlighter.ts ↗ | tags: #text-highlighting #css-custom-highlight-api #dom-overlays

Abstracts browser storage operations with unified get/set APIs for sync and local storage, automatic versioned migration handling, and error-resistant operations. Demonstrates skill in creating a reliable storage layer that handles browser quota limits, storage inconsistencies, and schema migrations while providing a simple interface for the rest of the application to persist settings, templates, and user data.

file: src/utils/storage-utils.ts ↗ | tags: #storage-abstraction #migration-handling #cross-browser-storage

Complete internationalization system with locale detection, message loading, and placeholder substitution supporting positional ($1), HTML-tagged ($strong_start$/$strong_end$), and link ($link_start$/$link_end$) placeholders. Includes automation scripts for translation management and demonstrates non-obvious skill in creating a maintainable i18n system that scales to 30+ languages while keeping runtime overhead minimal.

file: src/utils/i18n.ts ↗ | tags: #internationalization #locale-management #translation-system
Last analyzed: 2026-09-03 15:21:39.856232
Next check: 2026-09-10 15:21:39.809498
$ submit: