目录
概览
- 目标:用 Osmos 浏览器插件收集书签,并通过 GitHub Actions + LLM 自动生成摘要与一句话索引,集中存放于独立摘要仓库。
- 结果:新增书签自动触发工作流,生成中文摘要与一句话精炼,按时间归档,支持后续全文搜索与知识库复用。
- 组成:Osmos 插件、书签仓库(bookmark-osmos)、摘要仓库(bookmark-summary)、GitHub Actions 工作流、LLM API(OpenAI/DeepSeek 等)。
架构与数据流
- 流程:浏览器插件保存书签到书签仓库 README.md → Push 触发工作流 → Python 脚本读取增量变更并调用 LLM 生成摘要 → 提交到摘要仓库 → 可被站点或工具索引。
- 优点:完全基于 GitHub,权限清晰;摘要提示可定制;仓库分离,易于维护与迁移。
先决条件
- GitHub 账户与两个代码仓库的创建权限。
- 浏览器安装 osmos::memo 插件:
- LLM 服务:OPENAI_API_KEY、OPENAI_API_ENDPOINT(可留空用官方)、OPENAI_API_MODEL(如 gpt-4o-mini 或 deepseek-chat)。
- GitHub Fine-grained PAT:摘要仓库 Contents 权限需 Read & Write。
步骤 1:初始化书签存储库(bookmark-osmos)
- 新建仓库(可取名 bookmark-osmos),推荐使用 README.md 作为书签存储文件(便于在仓库首页直接浏览)。
- 在 Osmos 插件中配置 GitHub 用户名与仓库名,点击 connect 连接,并测试一次保存书签。

- 使用 README.md 作为存储文件名。其他文件名也可以,但 GitHub 不会自动将其呈现为您的代码库的主页。
- 点击“connect”,确保连接成功

可见性设为公开或私有均可,插件都支持。
步骤 2:初始化摘要库(bookmark-summary)
- 新建摘要仓库(如 bookmark-summary),添加一个空的 README.md。
- 将模板仓库中的 process_changes.py 复制到摘要仓库,并按实际仓库名修改:
# 摘要脚本中的核心配置示例(放在 process_changes.py 顶部)
BOOKMARK_COLLECTION_REPO_NAME = "bookmark-osmos"
BOOKMARK_SUMMARY_REPO_NAME = "bookmark-summary"
MODEL_NAME = os.getenv("OPENAI_API_MODEL", "gpt-4o-mini")
API_KEY = os.getenv("OPENAI_API_KEY")
API_ENDPOINT = os.getenv("OPENAI_API_ENDPOINT") # 留空默认 OpenAI 官方
- 如需个性化摘要效果,可调整 summarize_text 与 one_sentence_summary 的提示词。
步骤 4:在书签仓库添加工作流
- 在书签仓库创建 .github/workflows/bookmark_summary.yml,并填入:
name: Bookmark Summary
on:
push:
paths:
- README.md
jobs:
summarize:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install requests pyyaml
- name: Run summarizer
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_API_ENDPOINT: ${{ secrets.OPENAI_API_ENDPOINT }}
OPENAI_API_MODEL: ${{ secrets.OPENAI_API_MODEL }}
PAT: ${{ secrets.PAT }}
BOOKMARK_COLLECTION_REPO_NAME: bookmark-osmos
BOOKMARK_SUMMARY_REPO_NAME: bookmark-summary
run: python process_changes.py
注意 paths 过滤的是 README.md,当书签文件改动时才触发;如使用其他文件名,请同步修改。
步骤 5:添加 Secrets(书签仓库)
- 入口:Settings → Secrets and variables → Actions → New repository secret
- 需要的密钥:
- PAT:第 3 步创建的 Fine-grained Token(摘要仓库 Contents: Read and write)
- OPENAI_API_MODEL:如 gpt-4o-mini 或 deepseek-chat
- OPENAI_API_KEY:通常以 sk- 开头
- OPENAI_API_ENDPOINT:留空默认 OpenAI 官方;DeepSeek 填 https://api.deepseek.com/chat/completions
步骤 6:验证与排查
- 在 Osmos 中添加一个书签,提交到书签仓库后应自动触发工作流。
- 在 Actions 日志查看是否成功调用 LLM 并向摘要仓库推送新条目。
- 常见问题:
- 工作流不触发:确认默认分支与 paths 过滤匹配;README.md 是否改动。
- 推送失败 403:PAT 权限不足或未选中摘要仓库;确认 Contents 权限为 Read & Write。
- LLM 401/429:检查 KEY 是否有效、模型名与 Endpoint 是否对应。
- 私有仓库可见性:插件可用,但需确保 PAT 与密钥正确配置。
进阶优化
- 调整 summarize_text/one_sentence_summary 的提示词,增加“主题标签”“来源域名”等结构化字段,便于检索。
- 为长文链接生成多段摘要或关键要点,改善搜索质量。
- 根据个人偏好选择模型:成本优先用 DeepSeek,质量优先用 OpenAI 高端模型。
- 后续可将摘要仓库接入站点全文索引或知识库工具,实现跨平台检索。
参考与致谢
- 模板与脚本来源:Nekonull 的 osmosmemo-template(含 process_changes.py 与 bookmark_summary.yml)。
- 文章原链接见文首引用,感谢原作者的思路与实现。