search-bookmarks-history-and-tabs

search-bookmarks-history-and-tabs

一键搜索浏览器书签、历史和标签页的高效扩展

这款浏览器扩展支持模糊搜索书签、历史记录和打开的标签页。它提供精确和模糊两种搜索模式,具备书签标签功能,并可高度自定义。该扩展设计轻量,重视用户隐私,不收集任何数据。此外,它还提供暗色/亮色主题切换,支持键盘快捷操作,能有效提升浏览效率。

浏览器扩展搜索功能书签管理隐私保护自定义选项Github开源项目

Search Bookmarks, History and Browser Tabs

🔎 Browser extension to (fuzzy) search and navigate bookmarks, history and open tabs.

Installation via Store

Features

This extension does not collect any data nor does it make any external requests (see Privacy).

It supports two different search approaches:

  • Exact search (case-insensitive, but exact matching): Faster, but only exact matching results.
  • Fuzzy search (approximate matching): Slower, but includes also inexact (fuzzy) matches.

With this extension you can also tag your bookmarks including auto completions. The tags are considered when searching and can be used for navigation.

The extension is very customizable (see user options) and has a dark / light theme that is selected based on your system settings (see prefers-color-scheme). It's also very lightweight (< 150kb JavaScript, including dependencies).

For a list of recent changes, see CHANGELOG.md.

Screenshots & Demo

Demo Animation

User Documentation

  • Search Strategies: Switch between precise and fuzzy approach by clicking on the FUZZY or PRECISE button in the search bar (top right).
  • Keyboard Shortcut: Trigger the extension via keyboard.
    • The default is CTRL + Shift + ., but you can customize this (I personally use Ctrl+J).
  • Open selected results: By default, the extension will open the selected result in a new active tab, or switch to an existing tab with the target url.
    • Hold Shift or Alt to open the result in the current tab
    • Hold Ctrl to open the result without closing the popup.
  • Search Modes: In case you want to be more selective -> use a search mode:
    • Start your query with #: only bookmarks with the tag will be returned (exact "starts with" search)
      • Supports AND search, e.g. search for #github #pr to only get results which have both tags
    • Start your query with ~: only bookmarks within the folder will be returned (exact "starts with" search)
      • Supports AND search, e.g. search for ~Sites ~Blogs to only get results which have both tags
    • Start your query with t (including space): only tabs will be searched.
    • Start your query with b (including space): only bookmarks will be searched.
    • Start your query with h (including space): only history will be searched.
    • Start your query with s (including space): only search engines will be proposed.
    • Custom Aliases:
      • The option customSearchEngines allows you to define your own search mode aliases
      • Default: Start your query with g (including space): Do a Google search.
      • Default: Start your query with d (including space): Do a dict.cc search.
  • Emacs / Vim Navigation:
    • Ctrl+N and Ctrl+J to navigate search results up
    • Ctrl+P and Ctrl+K to navigate search results down
  • Special Browser Pages: You can add special browser pages to your bookmarks, like chrome://downloads.
  • Custom Scores: Add custom bonus scores by putting +<whole number> to your bookmark title (before tags)
    • Examples: Bookmark Title +20 or Another Bookmark +10 #tag1 #tag2
  • This extension works best if you avoid:
    • using # in bookmark titles that do not indicate a tag.
    • using ~ in bookmark folder names.

User Configuration

The extension is highly customizable. Finding and setting options is a bit technical, though.

The user options are written in YAML or JSON notation.

For now, there is no nice options overview, so you have to find them in the popup/js/model/options.js file in the defaultOptions object. From there you can see the available options, their names, default values and descriptions.

When defining your custom config, you only need to define the options that you want to overwrite from the defaults.

⚠ The options are not validated properly. Please make sure to use them correctly.<br/> If something breaks, consider resetting your options.

An exemplary user config can look like the following example:

searchStrategy: fuzzy displayVisitCounter: true displayDateAdded: true

If you have troubles with performance, here are a few options that might help. Feel free to pick & choose and tune the values to your situation:

searchStrategy: precise searchMinMatchCharLength: 2 displaySearchMatchHighlight: false, searchMaxResults: 20 historyMaxItems: 200

Precise search is faster than fuzzy search. Start searching only when at least 2 characters are entered Highlighting search matches takes some effort, this can be disabled. Number of search results can be further limited Number of browser history items can be further reduced

Or a more advanced example:

searchStrategy: precise historyDaysAgo: 14 historyMaxItems: 1200 historyIgnoreList: - http://localhost - http://127.0.0.1 colorStripeWidth: 4 # Customize width of search result color stripe bookmarkColor: '#46e6e6' # customize color for bookmark results scoreTabBaseScore: 70 # customize base score for open tabs searchEngineChoices: - name: Google urlPrefix: https://google.com/search?q= customSearchEngines: - alias: ['g', 'google'] name: Google urlPrefix: https://www.google.com/search?q=$s blank: https://www.google.com - alias: d name: dict.cc urlPrefix: https://www.dict.cc/?s=$s - alias: [gh, github] name: GitHub urlPrefix: https://github.com/search?q=$s blank: https://github.com - alias: npm name: NPM urlPrefix: https://www.npmjs.com/search?q=$s blank: https://www.npmjs.com

In case of making multilingual searching (CJK) correctly, you may need to tweak uFuzzy options via option ufuzzyOptions, for example:

# make CJK chars work for fuzzy search uFuzzyOptions: interSplit: (p{Unified_Ideograph=yes})+

Scoring System

The scoring systems works roughly the following:

  • Depending on the type of result (bookmark, tab, history) a different base score is taken (e.g. scoreBookmarkBaseScore).
  • Depending on in which result field (title, url, tag, folder) the match was found, the search match gets weighted by multiplication. (e.g. scoreTitleWeight).
  • This base score is now merged / multiplied with the search library score. A less good match will usually reduce the score and a perfect / highest ranked match will keep it at .
  • Depending on certain conditions some bonus score points are added on top. For example, exactStartsWithBonus will add score if either the title or the url start exactly with the search term, including spaces.

For a description of the scoring options and what they do, please see popup/js/model/options.js.

Privacy / Data Protection

This extension is built to respect your privacy:

  • It does not have permissions for outside communication, so none of your data is shared or exposed externally.
  • The extension does not even store any information except your user settings. Every time the extension popup is closed, it "forgets" everything and starts from a blank slate next time you open it.
  • There is no background job / processing. If the popup is not explicitly opened by the user, the extension is not executed.
  • The extension only requests the following permissions for the given reasons:
    • bookmarks: Necessary to read and edit the bookmarks. Can be disabled via user configuration.
    • history: Necessary to read the browsing history. Can be disabled or limited via user configuration.
    • tabs: Necessary to find open tabs and to use tabs for navigation. Can be disabled via user configuration.
    • storage: Necessary to store and retrieve the user configuration. If the browser has setting synchronization enabled, the extension settings will be synced (in this case you already trust your browser to sync everything else anyway). If browser sync is disabled, the user configuration is only stored locally.
  • The extension is open source, so feel free to convince yourself :)

Local Development

Install and Build

Prerequisite: Node.js

# install dependencies npm install # build extension npm run build

The source code for the extension can be found in popup/ (HTML, JS and libs) and sass/ (SCSS/CSS).

The built extensions can be found

Developer Installation

  • Check out this extension via git
  • Run npm install and npm run build (via bash / git bash)
  • For Chrome / Edge:
    • Navigate to extensions page (chrome://extensions/ on Chrome and edge://extensions/ on Edge).
    • Enable "Developer mode"
    • Choose "Load unpacked" and open the root folder of this repository
  • For Firefox:
    • First install and build this project.
    • Load the built extension in dist/firefox as a temporary addon in about:debugging.

Developer Workflow

  • Typical developer actions
    • npm run build for a complete build
    • npm run start to start the extension locally in a browser (with mock data)
    • npm run test to run end to end tests
    • for more, see npm run

Credits

This extension makes use of the following helpful open-source projects (thanks!):

Feedback and Ideas

Please create a GitHub issue to give your feedback. All ideas, suggestions or bug reports are welcome.

编辑推荐精选

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Nano Banana Pro 中文站

Nano Banana Pro 中文站

AI 图片生成工具

输入简单文字,生成想要的图片。支持Nano Banana/gptimage-2等最新模型。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

下拉加载更多