学 AI 上 L 站,好帖不错过。
为 linux.do 打造的浏览器扩展,让你轻松收藏帖子和评论。
- 帖子收藏 — 标题旁 + 操作栏都有星标按钮,一键收藏
- 评论收藏 — 每条评论操作栏(❤️ 旁边)都有星标,收藏评论自动关联帖子
- 收藏夹分类 — 创建多个收藏夹(技术、职场、生活…),归类管理
- 悬浮选择器 — 鼠标悬停星标 500ms 弹出收藏夹选择器,支持搜索和快速新建
- Popup 预览 — 点击扩展图标快速浏览收藏,按收藏夹分组,可折叠展开
- 独立管理页 — 完整的收藏管理:搜索、排序、标签、备注、详情面板
- 导入/导出 — JSON 格式,方便备份和迁移
- GitHub Gist 同步 — 通过私有 Gist 跨设备同步收藏数据
- 自动同步 — 收藏变更 30s 后自动上传 + 每 30 分钟定时拉取
- 智能合并 — 多设备冲突时取并集,单条目以最新修改为准,不丢数据
- Clone 本仓库
- 打开 Chrome,访问
chrome://extensions/ - 开启右上角「开发者模式」
- 点击「加载已解压的扩展程序」→ 选择本项目目录
- 访问 linux.do 任意帖子页面即可使用
| 操作 | 效果 |
|---|---|
| 点击星标按钮 | 收藏到默认收藏夹 |
| 悬停 500ms | 弹出收藏夹选择器 |
| 选择器中选择收藏夹 | 收藏到指定收藏夹 |
| 再次点击已收藏的星标 | 取消收藏 |
- 打开管理页面(popup 右上角网格图标 → "管理全部")
- 点击侧边栏「☁️ 同步设置」
- 输入 GitHub Personal Access Token(需要
gistscope) - 点击「连接 GitHub」
- 完成!之后会自动同步
Token 创建:GitHub Settings → Tokens → New,勾选
gist权限即可
LinuxDoStar/
├── manifest.json # Chrome MV3 扩展配置
├── storage.js # 数据结构 & 持久化
├── sync.js # GitHub Gist 同步模块
├── background.js # Service Worker (badge + 同步调度)
├── content.js # 内容脚本 (注入星标到页面)
├── content.css # 注入样式
├── popup.html/css/js # 弹窗预览
├── manage.html/css/js # 独立管理页面
└── icons/ # 扩展图标
Discourse 使用虚拟滚动回收 DOM 节点,传统 MutationObserver 不够可靠。本扩展使用三重检测策略:
- MutationObserver — 监听
#main-outlet子树变化 - Scroll 监听 — 滚动时 300ms 防抖扫描缺失的星标
- 定时轮询 — 每 5 秒兜底检查
同步时使用 union-merge 策略:
- Collections 和 Bookmarks 取并集
- 同一条目冲突时比较
updatedAt时间戳,保留较新版本 - 不会丢失任何一端的数据
| 权限 | 用途 |
|---|---|
storage |
本地存储收藏数据 |
activeTab |
读取当前页面信息 |
alarms |
定时同步调度 |
linux.do |
注入收藏按钮 |
api.github.com |
Gist 同步 API |
MIT
{ "collections": { "default": { "id": "default", "name": "默认收藏夹", "icon": "⭐", ... }, "col_xxx": { "id": "col_xxx", "name": "技术文章", "icon": "💻", ... } }, "bookmarks": { "topic_2066807": { "topicId": 2066807, "topicTitle": "帖子标题", "topicUrl": "https://linux.do/t/topic/2066807", "collectionId": "default", "starred": true, "tags": ["标签"], "note": "我的备注", "posts": { "post_12": { "postNumber": 12, "author": "username", "excerpt": "评论内容摘要..." } } } } }