AI 产品解读Permanent, private text highlighting tool for any web page
Users need to mark up and annotate web pages with persistent highlights that survive page revisits, without relying on cloud services or accounts
1. User visits a web page and selects text via mouse or keyboard
2. User right-clicks to access context menu or uses keyboard shortcut to apply a highlight style
3. Highlight is visually applied to the page and stored locally in IndexedDB via PouchDB
4. On subsequent visits to the same page, the extension automatically restores highlights
5. User can view/manage all highlights via the popup, options page, or overview summary
6. Highlights can be exported as backup files and imported to restore or transfer between browsers
Create text highlights with multiple styles (colors: Red, Orange, Yellow, Green, Cyan, Purple, Grey; plus Redact, Blur, Bold, Italic, Underline, Strikethrough, Monospace, Magnify, Quotation)Highlights persist across browser sessions using local IndexedDB storage (PouchDB)Keyboard shortcut support for applying highlights (up to 10 preset shortcuts)Right-click context menu for highlight creationPopup dialog showing all highlights on current page with search/filter/sortOverview/summary page for viewing, printing, or saving all highlights
- 目标用户
- Researchers and students studying web content / Readers who want to annotate articles and reference material / Users who want private, local-only web annotation without cloud dependencies / Knowledge workers who need to mark up and return to important web content
- Source code is minified/bundled making line-by-line analysis harder, but core functionality is clearly local-only with no external service dependencies
- No suspicious network requests found; all external hosts are for static assets, library CDNs, and documentation links
付费分析未识别到付费功能
No premium, subscription, payment, or billing mechanisms found. Grep searches for 'premium', 'subscription', 'payment', 'billing' all returned zero matches. The 'upgrade' keyword hit is the CSP directive 'upgrade-insecure-requests' in manifest.json line 3 - a standard security feature, not a paid upgrade. The 'license' hits are from third-party MIT license text in libraries. The 'pro' hits are false positives from minified code variable names and CSS classes. No feature gating, no Stripe/payment integration, no upgrade prompts found.
- 置信度
- 95
- 支付平台
- --
- 来源
- AI / 高
- 需要登录
- 否
- 登录理由
- No login, sign-in, account, or authentication mechanisms found in source code. Grep searches for 'login', 'sign in', 'account', and 'password' returned no relevant matches. All data is stored locally using PouchDB with IndexedDB adapter (line: 'new PouchDB("sos", {auto_compaction:true, adapter:"idb", revs_limit:10})'). Store description explicitly states: 'This process is completely private. The location and contents of your highlights never leave your browser.' The 'auth' and 'token' keyword hits are false positives from library code (Angular, jQuery, PouchDB), CSS class names (.token for highlight styling), and third-party license text.
Love this, i found it really useful during exams that uses Google forms, sometimes i choose an answer and change it by accident without noticing while scrolling, so it helps in re checking the answers, i also use it to mark answers, like the highlight color red for "convinced that this is the answer" and yellow for "not sure about this"
I wish we could have a set of folders that are unlimited and the folders could be found specifically for finding which notes were part of the subject and which weren't. Along with that, I wish you could add note taking for the highlighting because it would be helpful and much better.
very useful
yes, it very simple, and i like simple, easy to use
Does not work!
love it! thank you!
Not working
有的网页用不了,比如百度百科、知乎等。作者能不能优化一下?
Not Working
Thanks for this, great bit of software. I had to hack it to make it work on medium though, due to their id's starting with numbers (which for some reason require unicode escaping (\3). Couldn't figure out how to report it, so here's the one line fix. - if (node.ownerDocument.querySelectorAll(`#${node.id}`).length === 1) { + // Need to escape leading digits in id's.. See https://mathiasbynens.be/notes/css-escapes + // If the first character of an identifier is numeric, you’ll need to escape it based on its Unicode code point. For example, the code point for the character 1 is U+0031, so you would escape it as \000031 or \31 . + // Basically, to escape any numeric character, just prefix it with \3 and append a space character ( ). Yay Unicode! + if (node.ownerDocument.querySelectorAll(`#${node.id.replace(/^(\d)/,'\\3$1')}`).length === 1) {