My Personal Library

发布于 2026年10月1日 👤 redreamality

已运行的 Python 个人资料流水线,按小时分批处理书签,提供私有 Markdown 归档、Qwen 摘要、关键词搜索与每周汇总。

My Personal Library 是我的个人资料整理流水线,起点是保存 osmos 书签与备忘内容的 README。现在它使用 uv 管理 Python 环境,已经完成本地处理验证和 GitHub Actions 实际运行,并将归档输出写入私有仓库。工作流能够运行,不代表所有收藏都已处理,也不代表每个来源都能成功提取。

灵感来自 Nekonull 关于 LLM 与书签整理的文章。我希望收藏之后还能找到正文、回顾要点,而不只是留下一个链接。公开仓库维护处理代码与说明,完整产物保存在独立的私有仓库中。成功条目的标题、来源与摘要经过字段筛选后,同步到本站阅读笔记,与手写笔记一起展示;原始全文、内部处理状态和凭据不会随之公开。

从链接到可检索的资料

流水线先尝试通过 Jina Reader 提取网页正文,服务不可用时尝试直接提取。直接提取的后备路径已在实际文章上验证。成功取得的完整正文保存为 Markdown,摘要调用 qwen-task 配置的服务,模型固定为 unsloth/Qwen3.8-27B-NVFP4,生成要点列表和一句话摘要。摘要用于帮助回顾,不能代替正文,更不能补写没有提取到的内容。

JSON 状态记录每个链接的结果,并通过 URL 去重避免重复生成同一份资料。重复运行会跳过已经成功处理的条目,失败项则保留原因,供后续重试。SQLite 全文索引提供关键词查询,中文查询也已实际验证。搜索面向已保存的材料,不是 RAG,也不会回答资料中没有的问题。

GitHub Actions 支持推送、定时和手动触发,定时任务配置为每小时处理一批,每批最多 12 条,逐步消化待处理书签。每周汇总采用确定性的生成规则:相同输入记录和时间范围得到相同汇总,不在每次汇总时让模型重新编排。自动化运行成功与单条资料处理成功分别记录,不能把工作流的绿色状态当作全部条目成功。

失败记录与保存边界

被网站拦截、要求登录或出现验证码的页面,在无法取得正文时保留为失败记录。模型调用也可能失败,实际运行中已有摘要失败被记录,不能把它们算作处理完成。程序不根据标题猜测正文,也不通过生成摘要掩盖提取失败。重试提供再次处理的机会,不负责绕过访问限制,也不保证成功。

Markdown 归档是提取当时的正文快照,无法保证原网站永久可用,也不等于完整复制图片、交互和后续更新。Wayback 保存需要主动开启,只作尽力尝试;本次实际提交返回不可用,尚不能声称已有独立备份。私有输出与公开代码分开,也不意味着处理完全离线;交给提取与摘要服务的资料,仍需符合自己的隐私要求。

其他项目