Files
edgeever/apps/extension
tianma-if 37640cfe40 chore(extension): prepare web clipper 0.1.8 store listings
Record a Google Search image as the search and its keyword in the store copy, and point the package at 0.1.8.
2026-09-28 16:00:08 +08:00
..

EdgeEver Web Clipper

Chrome, Edge, and Firefox Manifest V3 extension for saving the current webpage, selected text, or a right-clicked image to a user's self-hosted EdgeEver instance.

Current MVP

  • Configure an EdgeEver instance URL and API Token.
  • Test the connection and select a default notebook.
  • Click the extension action to capture the selected content, or extract the article body with Mozilla Readability when there is no selection.
  • Convert the extracted article HTML into Markdown with Turndown before uploading it.
  • Right-click an image and choose Save image to EdgeEver. The image file is uploaded into a new note in the default notebook, with the source page linked underneath. An image saved from Google Search records “Google Search” and the search keyword instead of the results URL.
  • Select text on a page, right-click, and choose Save selection to EdgeEver. That passage is saved as a new note in the default notebook, with the source page linked underneath. The rest of the page is not included.
  • On X, right-click the post text and choose Save this post to EdgeEver. The post text, author, time, and photos already shown in that post are saved into one note. Text folded behind Show more is expanded first, so a long post is saved in full. Right-clicking a photo saves that image instead, so the command stays on the top-level menu. A single-post page can be saved immediately. On a timeline, the extension asks once for access to X so it can remember the post under the pointer.
  • When the page cannot hand over the image bytes, the extension asks once for access to that image's site. After that, later images from the same site save directly.
  • Create a searchable EdgeEver memo with the source URL and a web-clip tag.

The extension does not use a central relay service. The page content is sent directly to the EdgeEver instance configured by the user.

Localization

The extension uses the cross-browser chrome.i18n compatibility namespace. English is the fallback locale, and Simplified Chinese is available for browsers whose UI language is Chinese.

User-visible strings live in public/_locales/<locale>/messages.json. Add or update every supported locale when changing interface copy. Chrome Web Store listing translations are maintained separately in the developer dashboard; ready-to-paste English and Simplified Chinese copy is available in STORE_LISTING.md.

Development

Chromium

From the repository root:

bun run build:extension

Then open apps/extension/dist from chrome://extensions or edge://extensions with Developer mode enabled and choose Load unpacked.

Firefox

Firefox uses the same application code with a Firefox-specific generated manifest:

bun run build:extension:firefox
bun run lint:extension:firefox

Open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select apps/extension/dist-firefox/manifest.json.

To create the unsigned AMO submission archive after building and linting:

bun run package:extension:firefox

The archive is written to apps/extension/web-ext-artifacts. Firefox requires AMO signing for normal installation. The manifest supports Firefox Desktop 140 or later and Firefox for Android 142 or later so Mozilla's built-in data-transmission consent UI is available.

Firefox data disclosure

The Firefox package declares the data types required by its user-triggered clipping function:

  • authenticationInfo: the API token sent directly to the user's EdgeEver instance.
  • browsingActivity: the URL of the page the user chooses to clip.
  • websiteContent: the selected text, extracted article content, or image the user chooses to clip.

No data is sent to an EdgeEver-operated relay, analytics service, or advertising service.

The next planned step is preserving a single-file HTML archive in R2 while keeping extracted text in the memo for search.