QOwnNotes Web Companion 浏览器扩展实战指南:网页剪藏与跨设备书签管理
桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载本文围绕 QOwnNotes 官方的 Web Companion 浏览器扩展讲解它的安装与安全令牌配置、网页剪藏Web clipper功能、基于 Markdown 笔记的书签管理语法以及如何通过 Bookmark suggestion API 将 QOwnNotes 的书签接入 Homepage 搜索建议。读完后你能够完整配置「桌面应用 浏览器扩展」的本地通信链路并用 QML 脚本接管剪藏流程、用本地 HTTP 接口复用同一套书签数据。一、运行前提QOwnNotes 必须在运行但全程离线可用Web Companion 扩展用于从浏览器页面剪藏内容并管理跨浏览器、跨操作系统的书签。两个关键前提需要记住QOwnNotes 桌面应用必须处于运行状态扩展才能工作——扩展并不是独立的云端服务而是通过本机 WebSocket 通道把数据交给桌面应用处理不需要互联网连接扩展完全可以在离线状态下工作所有数据流只发生在本机浏览器与本机 QOwnNotes 之间。从源码结构看这条本地通信链路由桌面应用侧的 WebSocketServerService 提供该类同时维护一个 WebSocket 服务器m_pWebSocketServer供浏览器扩展连接和一个 HTTP 服务器m_pHttpServer供书签建议 API 使用默认监听端口可在设置中修改。二、安装与安全令牌配置1. 获取扩展Web Companion 扩展可以在以下渠道获取扩展源码仓库名为 qownnotes/web-companionChrome Web StoreChrome 应用商店Firefox Add-ons 页面Firefox 附加组件GitHub 上的 web-companion 扩展仓库。2. 添加安全令牌Security Token安全令牌是扩展与 QOwnNotes 桌面应用握手时的身份凭证配置流程为首次点击浏览器工具栏中的 QOwnNotes 扩展图标时会弹出一个带有安全令牌的对话框把该令牌复制下来进入浏览器的扩展管理页面点开 QOwnNotes 扩展的详情将令牌粘贴到Security Token安全令牌输入框中。在 QOwnNotes 侧安全令牌可以在设置 - Browser extension / command snippets页面查看——对应源码 webcompanionsettingswidget.ui 中 Web socket server 分组下带有 Show security token 提示的工具按钮。同时该页面可以配置Socket server port取值范围 1–65535默认值 22222同文件中的webSocketServerServicePortSpinBox控件。3. 开启私有模式支持如果你希望在隐私/无痕窗口中也使用扩展需要在该扩展的设置中允许它在隐私窗口中运行否则扩展在无痕模式下不会生效。三、Web clipper网页剪藏在网页上右键单击页面或选中的文本即可调用web-clipper网页剪藏功能它还能基于当前网页创建一条带截图screenshot的新笔记。剪藏不生效时的排查清单原文档给出的故障排查要点按顺序核对确认QOwnNotes 桌面应用正在运行并且 Web Companion 扩展已配置好安全令牌确认你在首次点击浏览器工具栏扩展图标时接受了同意对话框consent dialog如果使用Firefox还需要在扩展设置的Permission中打开可选权限Access your data for all websites否则会报错TypeError: chrome.tabs.captureVisibleTab is not a function剪藏是可脚本化的websocketRawDataHookWeb clipper 支持通过 QML 脚本接管剪藏数据。浏览器扩展通过右键菜单发送数据时会触发websocketRawDataHook钩子其方法签名为见 hooks 文档 的websocketRawDataHook一节/** * param requestType can be page or selection * param pageUrl the url of the webpage where the request was made * param pageTitle the page title of the webpage where the request was made * param rawData the data that was transmitted, html for requestType page * or plain text for requestType selection * param screenshotDataUrl the data url of the screenshot of the webpage * return true if data was handled by a hook */ function callHandleWebsocketRawDataHook(requestType, pageUrl, pageTitle, rawData, screenshotDataUrl);也就是说你可以在脚本里拿到剪藏来源的页面 URL、标题、原始数据整页为 HTML选区为纯文本以及截图的 data URL完全自定义剪藏后的处理逻辑。仓库内提供了可参考的示例脚本 websocket-raw-data-selection-in-note.qml 与 websocket-raw-data-new-note.qml。四、基于笔记的书签管理如果你希望完全掌控浏览器书签并且在不同浏览器和操作系统之间使用同一套书签Web Companion 就是为这个场景设计的书签的存储与同步完全由 QOwnNotes 的纯文本笔记承担。书签数据来源的两种模式当前笔记模式默认点击浏览器中的 QOwnNotes 图标时扩展的弹出窗口会显示当前笔记中的所有链接这些链接会被打上current标签书签笔记模式在设置中指定一个书签标签默认为bookmarks所有带该标签的笔记中的链接都可作为书签管理且这些链接可以附带标签和描述会一并显示在浏览器扩展中。新书签默认写入一条名为Bookmarks的笔记笔记名同样可在设置中修改。此外你还可以用 Web Companion 扩展把浏览器现有的书签导入 QOwnNotes。设置项与默认值的对应关系可以在 webcompanionsettingswidget.ui 中核对bookmarksTagLineEditBookmarks tag提示文案为 Notes with this tag will be used for fetching bookmarks与bookmarksNoteNameLineEditBookmarks note name提示文案为 This note will be used for adding new bookmarks from the browser extension。书签链接的 Markdown 语法书签链接采用标准 Markdown 列表 链接语法行尾可追加标签与描述- [Webpage name](https://www.example.com) - [Webpage name](https://www.example.com) #tag1 #tag2 - [Webpage name](https://www.example.com) some description only - [Webpage name](https://www.example.com) #tag1 #tag2 some description and tags * [Webpage name](https://www.example.com) the alternative list character also works语法要点列表符号-和*均可使用链接后追加#tag1 #tag2表示标签链接后追加普通文本表示描述标签与描述可以混用在扩展的弹出窗口中你可以按名称、URL 标签或描述进行搜索在当前笔记中正文里的其他链接也会被解析为书签候选但不附带标签和描述。五、Bookmark suggestion API把书签接入 Homepage 搜索建议QOwnNotes 可以在本地暴露一个 HTTP 端点为 Homepage 的suggestionUrl搜索建议提供支持后端复用的正是 Web Companion 同一套书签解析与索引逻辑。详细说明见 Homepage suggestion API 文档。启用步骤打开Settings - Browser extension / command snippets勾选Enable socket server启用 socket 服务器在Bookmark suggestion API分组中勾选Enable Homepage-compatible bookmark suggestions API并设置端口。该服务只绑定127.0.0.1——这一点在源码中可以直接确认websocketserverservice.cpp 的startSuggestionHttpServer()使用m_pHttpServer-listen(QHostAddress::LocalHost, port)启动监听若端口被占用会输出 Could not start bookmark suggestion API on port … 的警告。设置页中该 API 的端口默认值为22224bookmarkSuggestionApiPortSpinBox安全令牌输入框最长 32 字符留空保存时会自动生成新令牌见bookmarkSuggestionApiTokenLineEdit的提示文案。端点与参数请求方式GET /suggest?qhome可选参数limit默认10最大50可选参数token如果你在 QOwnNotes 中配置了安全令牌请求需携带服务端对参数的处理逻辑可在 processHttpRequest() 中核对非 GET 请求返回 405非/suggest路径返回 404令牌不匹配返回 401limit会被收敛到 1–50 区间非法或省略时取 10。示例响应[home, [Homepage, https://example.com/home, Some Home Link]]即第一个元素为查询词第二个元素为[名称, URL, 描述]的建议数组。Homepage 侧的配置示例search: provider: custom url: https://example.com/search?q suggestionUrl: http://127.0.0.1:22224/suggest?q showSearchSuggestions: truesearch代码块应添加到 Homepage 的标准配置文件settings.yaml或settings.yml即挂载到容器/app/config/settings.yaml的文件中如果你的部署把配置拆分为多文件就编辑已包含searchprovider 设置的那个文件。安全令牌与跨主机部署如果你在 QOwnNotes 中启用了安全令牌并且 Homepage 使用了自定义资产custom.js本仓库的 docs/homepage 目录提供了配套的custom.js/custom.css定制示例则保持suggestionUrl不变把同一安全令牌写入custom.js中的QON_TOKEN变量即可脚本会自动在请求上追加token...如果 Homepage 运行在与 QOwnNotes不同的主机/容器上需要在该 Homepage 实例上放置这些自定义文件以便它查询你本机的 QOwnNotes 建议 API 并合并展示搜索结果由于书签数据可能包含敏感 URL若确实需要让端点跨网络访问应在其前面加一层反向代理并用防火墙规则或白名单严格限制访问而不是直接把服务暴露出去。六、关键默认值速查配置项设置位置默认值源码依据Socket server portWebSocket 端口设置 Browser extension / command snippets Web socket server22222webcompanionsettingswidget.ui 中webSocketServerServicePortSpinBox书签笔记标签Bookmarks tag同上 Bookmarksbookmarks同上bookmarksTagLineEdit及 websocketserverservice.h 的getBookmarksTag()新书签写入的笔记名Bookmarks note name同上 BookmarksBookmarks同上bookmarksNoteNameLineEdit及getBookmarksNoteName()Suggestion API 端口同上 Bookmark suggestion API22224同上bookmarkSuggestionApiPortSpinBoxSuggestion API 监听地址固定不可配置仅127.0.0.1websocketserverservice.cppQHostAddress::LocalHost/suggest的limit请求参数10上限 50同上processHttpRequest()七、小结Web Companion 扩展把 QOwnNotes 的两个能力延伸到了浏览器端一是网页剪藏含截图笔记与可脚本化的websocketRawDataHook二是以纯文本笔记为后端的跨浏览器、跨系统书签管理而 Bookmark suggestion API 则让同一份书签数据以本地 HTTP 接口的形式被 Homepage 等本地服务复用。整条链路完全在本机闭环桌面应用必须运行、全程可离线、建议 API 仅监听回环地址安全性由安全令牌与本地绑定共同保障。赞分享桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载相关推荐QOwnNotes Web Companion浏览器一键剪藏到Markdown笔记的终极指南QOwnNotes Web Companion浏览器一键剪藏到Markdown笔记的终极指南 QOwnNotes Web Companion浏览器扩展是一个强桌面应用Focalboard Web Clipper 浏览器扩展开发实战从网页一键剪藏到看板卡片Focalboard Web Clipper 浏览器扩展开发实战从网页一键剪藏到看板卡片 导读 本文以仓库 experiments/webext 下的 Foc后端前端企业应用桌面应用协同办公Floccus浏览器扩展API终极指南轻松实现跨设备书签同步Floccus浏览器扩展API终极指南轻松实现跨设备书签同步 Floccus是一款强大的浏览器扩展能够帮助用户在不同浏览器和设备之间私密地同步书签。无论是C前端移动开发数据同步上一篇终极指南3分钟免费掌握Obsidian表格转换神器下一篇naive-ui Countdown 倒计时组件完整指南Props、精度控制与自定义渲染创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

commitlint-config-angular 深度指南:Angular 提交约定规则解析、安装接入与版本演进

commitlint-config-angular 深度指南:Angular 提交约定规则解析、安装接入与版本演进

开发工具Lint代码质量 【免费下载链接】commitlint 📓 Lint commit messages 项目地址: https://gitcode.com/gh_mirrors/co/commitlint 点击查看 免费下载 本文以 commitlint 仓库中 commitlint-config-angular 包的 CHANGELOG 为主线,结合…

2026/10/10 5:20:31 阅读更多 →
pierre highlights 渲染指南:用 codeToHtml / codeToTokens 生成高亮 HTML 与 Shiki 兼容 Token

pierre highlights 渲染指南:用 codeToHtml / codeToTokens 生成高亮 HTML 与 Shiki 兼容 Token

【免费下载链接】pierre pierre’s open source code 项目地址: https://gitcode.com/gh_mirrors/pi/pierre 点击查看 免费下载 本篇技术指南以 pierre/highlights(pierre 仓库中的 WebAssembly 代码高亮包)的渲染能力为核心,系统…

2026/10/10 5:20:31 阅读更多 →
AnyPS5项目解析:跨平台PS5兼容层技术原理与应用

AnyPS5项目解析:跨平台PS5兼容层技术原理与应用

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"AnyPS5",但未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所谓“相关热搜词”和“最新网络热词”字段为空,无实际内容可供分析&a…

2026/10/10 5:19:31 阅读更多 →

最新新闻

Cursor配置本质是工作流重构:让AI成为可复用的编码协作者

Cursor配置本质是工作流重构:让AI成为可复用的编码协作者

1. 为什么“Cursor配置”不是设置问题,而是工作流重构命题“Cursor怎么配置才好用?”——这句提问背后藏着一个被普遍低估的事实:绝大多数人把Cursor当成“带AI的VS Code”,却没意识到它本质是一个可编程的智能协作终端。我最初也…

2026/10/10 6:02:47 阅读更多 →
workbuddy-to-dsh 实用教程:从 JSON 到 dsh 的数据迁移指南

workbuddy-to-dsh 实用教程:从 JSON 到 dsh 的数据迁移指南

先说一个很多人都遇得到的问题:你手里的任务和日程记录全躺在 workbuddy 里,某天想把它导出来接进自己的报表系统、自动化脚本或者新换的效率工具,结果发现导出的 JSON 字段跟目标格式完全对不上。自己写脚本去适配,看起来不难&am…

2026/10/10 6:02:47 阅读更多 →
SpringBoot咖啡厅座位预约系统:从并发控制到状态流转的设计实践

SpringBoot咖啡厅座位预约系统:从并发控制到状态流转的设计实践

1. 咖啡厅为什么要一个座位预约系统:从等位痛点聊到课题价值先说个很现实的场景。你去一家热门咖啡厅,下午两三点正是人多的时候,进门一看,靠窗的位子满了、插座旁边的位子满了、沙发区也满了。你端着咖啡站在过道里,等…

2026/10/10 6:02:46 阅读更多 →
PCA9422搭配PIC18F86J16的便携设备电源管理实战解析

PCA9422搭配PIC18F86J16的便携设备电源管理实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 6:02:46 阅读更多 →
Django认证与权限体系深度解析:从内置机制到实战踩坑

Django认证与权限体系深度解析:从内置机制到实战踩坑

接手一个新项目或者复盘别人代码的时候,我最先翻的往往不是业务逻辑,而是settings.py里的认证与权限配置。一个系统的认证权限设计,直接决定了它的安全边界,也决定了后续功能扩展时是顺滑还是处处踩坑。今天这篇就围绕Django的认证…

2026/10/10 6:02:46 阅读更多 →
Python BoundedSemaphore 有界信号量详解

Python BoundedSemaphore 有界信号量详解

Python BoundedSemaphore 有界信号量详解一、Python BoundedSemaphore 有界信号量详解1、 引言2、信号量基础回顾2.1、 什么是信号量2.2、 普通 Semaphore 的问题3、 BoundedSemaphore 的原理3.1、 有界约束3.2、 源码实现4、基本用法4.1、 标准「获取-释放」模式4.2、 使用上下…

2026/10/10 6:01:46 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →