国内毕竟是人多,创造力大,视频也是我们周遭琐事,所引起的共鸣很大,非外网所能比。只要把评论这种数据量少但信息密度高的拉取回去就好,就算不能发主要内容,也无所谓,长篇大论不好说,那就对着它碎碎念。
在 B 站视频与文章、抖音视频页面注入独立评论面板的浏览器插件。
技术栈:WXT(MV3)+ Svelte 5 + sql.js。评论按内容 ID 挂载,经 Nostr relay 同步。
- 内容页右下角悬浮评论面板
- 锚点规则:用 URL 路径或查询参数解析内容 ID,支持 JSON 导入、导出和 ID 映射
- Nostr 身份(
nsec)与显示名 - 异步发到 Nostr(失败重试 + 永久失败进垃圾桶)
- 打开面板时从 Nostr relay 拉取同一内容的评论(别人 / 另一端)
- 面板设置:身份 / 面板偏好 / 同步 / 锚点规则 / 评论缓存 / 重置
需要 Bun 与 Chrome/Chromium。
bun install
bun run dev若浏览器未自动打开,到 chrome://extensions 开启「开发者模式」,加载 .output/chrome-mv3-dev。
bun run build # 产物 .output/chrome-mv3
bun run zip # 打包 zip
bun run test:unit
bun run test # 单元测试 + Chrome 冒烟- 评论与草稿保存在本机
chrome.storage.local - 私钥
nsec仅用于签名 Nostr 事件,不会上传到本项目服务器 - 「重置所有配置」会清除身份 / 同步 / 自定义锚点规则 / 草稿,不会删除本机评论
| 层 | 职责 |
|---|---|
| Content UI | Shadow DOM 悬浮面板 |
| Background | SQLite CRUD、出站队列、消息 |
| 锚点规则 | src/lib/anchors/* → platform + videoId |
| 事件源 | 本地必写;Nostr 走队列发布 |
规则格式、ID 映射与限制见 docs/anchor-rules.md。
comments(
id, platform, video_id,
parent_id, reply_to_author, reply_to_pubkey,
author, author_pubkey, body,
likes, dislikes, my_vote,
created_at, updated_at
)extension-key.b64/extension-id.txt用于固定扩展 ID,方便冒烟测试- 站点 URL 或 ID 改版时更新锚点规则即可,不必修改面板逻辑
MIT