读资料时,你可能复制了一段文字,却忘了它来自哪篇文章。这个重复的小麻烦适合先做成一个很窄的浏览器插件:选中文字,生成带网页标题和来源链接的 Markdown 引文。本篇附带手工整理的最小参考实现,并在一次性、未登录的 Chrome 配置中用本机虚构网页实测:选区预览正确、无选区时复制按钮禁用、剪贴板输出包含标题和来源链接。Claude Code 生成、商店发布与收费均未实测。
可先下载浏览器插件练习包,其中包括扩展源码、隐私说明草案和自检。
先确认这个问题值得做
不要先问“插件能不能收费”,先问这件事是否反复发生。记录一周里谁需要复制网页内容、每次多做几步、最常丢掉什么信息,再找几位目标用户让他们用纸面流程试一次。没人持续遇到的问题,即使插件能运行,也不等于有人愿意付费。
这个样例只做一件事:读取用户在普通网页上主动选中的文字,连同标题和网址组成 Markdown 引文,再由用户点击按钮写进剪贴板。它不自动扫描页面、不保存摘录、不联网,也不包含账号、云同步或付费墙。
用 Claude Code 写出可验收的最小版本
如果你使用 Claude Code,可打开练习包中的 README 需求卡,让它起草 Manifest V3 文件和自检,再逐项核对:
- 只有用户点击扩展时才读取当前页面选区。
- 没有选中文字时,复制按钮不可用。
- 预览通过
textContent显示,不能把网页文字当 HTML 插入。 - 只处理
http和https页面,不申请<all_urls>或固定站点权限。 - 摘录只写入剪贴板,不发送网络请求,不写入存储。
Claude Code 需要网络和登录。官方说明提供 Anthropic API Console(需启用计费)及 Claude Pro / Max 账号等接入方式;订阅使用量与 Claude 其他入口共享,API 额度另按当时价格计费。先查看自己账号当前的使用方式和额度,不要为了本练习单独充值或开启自动续费。本轮没有实际调用 Claude Code。
练习包附有一份手工整理的参考实现,它不代表 Claude Code 生成。本轮没有在 Claude Code 中重跑起草流程;Chrome 扩展的加载、选区预览和剪贴板操作已在隔离配置中实测。
看懂扩展申请的权限
样例只申请三项权限:
| 权限 | 用途 |
|---|---|
activeTab |
用户点击扩展后,临时访问当前网页 |
scripting |
在当前页读取用户已经选中的文字和标题 |
clipboardWrite |
将格式化后的引用写入剪贴板 |
Chrome 文档说明,activeTab 的授权由用户操作触发,离开当前网站或关闭标签后会撤销;它能替代许多需要长期访问所有网站的场景。clipboardWrite 会修改剪贴板,因此权限说明应讲清楚它只在用户点击“复制引用”后使用。访问普通网页之外的受限页面可能失败,扩展会给出提示。
页面文字和网址属于用户数据。即使扩展只在本机处理、没有上传,商店政策仍要求准确披露数据如何被读取和使用。练习包中的隐私说明草案只能作为起点;正式上架前要确保商店声明、隐私政策和程序行为彼此一致。
运行自检并检查输出
如果电脑已安装 Node.js,在扩展目录运行:
node self-check.cjs
自检覆盖单行引用、多行换行、Markdown 标题转义、空选区和 javascript: 来源地址。当前结果是 7 项断言通过;这只验证格式函数,不代表 Chrome API、页面权限或剪贴板已在真实浏览器中工作。
格式函数会把每一行前置 > ,并把 HTTP(S) 来源链接附在下方。不要把大段受版权保护的文章整页复制后重新发布;引用长度和用途要符合你所在地区及平台的规则,必要时只留简短摘录与来源。
把本地样例变成可上架产品
Chrome 官方流程要求先注册开发者账号并支付一次性注册费。政策页面未在这里核对费额,所以不要依据旧教程或第三方文章预估具体金额。注册之后还要准备商店图标、说明、测试方式、数据披露和隐私政策;审核结果与审核时间不作保证。
Chrome Web Store 可以发布免费或收费项目,但开发者协议说明:收费交易、身份验证、记录和税务由开发者负责,Google 不代你处理这些事项;已经以免费方式取得的同一份副本,不能之后再向用户收费。若采用免费试用再升级,必须事先讲清楚免费与付费功能的边界、价格、退款和取消方式。
本文没有注册商店账号、支付注册费、上传插件、接入收款或验证任何收入。先用小范围访谈和本机样例验证需求,再算客服、更新、退款和税务成本,最后决定是否进入商店审核。能复制一段 Markdown,只证明核心动作值得继续测试,不证明存在稳定付费需求。
本篇验证状态
参考扩展源码与 README 在 files/s146/。Node.js v20.19.6 的 7 项断言自检通过;Chrome 154.0.8037.59 的一次性未登录配置只访问 127.0.0.1 上的虚构页面。选中文本后,扩展显示了选区预览;清除选区后,复制按钮禁用;点击“复制引用”后,剪贴板与预期 Markdown 逐字一致,含页面标题与本地来源链接。没有调用 Claude Code、访问外网、登录商店、上传扩展或验证收费。隐私说明仍是草案,不是正式政策。
封面背景由本机 ComfyUI / Z-Image-Turbo 生成,标题由脚本排版;封面属于 AI 生成素材。