RBox 资源收藏乌托邦
个人互联网资料库:为人保存内容,为 AI 提供数据。
它想解决什么
我们收藏过很多东西:文章、图片、视频、音频。但收藏夹里大多只留下一条链接。
- 网页被修改或删除后,链接还在,内容没了。
- 要登录才能看的内容,换个环境就打不开。
- 收藏越来越多,想找时找不到,也没法交给 AI 去用。
RBox 的思路是:收藏的时候,就把能拿到的正文、图片、媒体和来源信息一起保存下来。
核心功能
1. 保存内容本身,而不只是链接
保存标题、正文、作者、发布时间等信息,以及页面中的图片和媒体文件。原网页变化或失效之后,你手里仍有一份可用的副本。
2. 在你自己的设备上采集
手机分享一个链接,App 用内嵌 WebView 打开它;桌面端用浏览器扩展。采集发生在你已登录的环境里,不需要把账号交给服务器,也不由服务器替你去抓取网页。
3. 外部加工结果,带着来历一起保存
OCR、音频提取、视频转文稿等,一期由你用的外部 AI 或工具完成。保存时需要说明是怎么得到的,并附上过程记录。RBox 原样记住这些记录,不会重新加工一遍,也不会覆盖原始内容。
4. 保存之后找得到
提供网页界面浏览,支持全文搜索,也提供 REST API 和命令行(CLI),方便导入、导出和批量处理。
5. 对 AI 开放
通过 MCP,AI Agent 可以搜索、读取和保存你的资料。所有入口共用同一套数据模型和权限,不会出现网页能做、AI 不能做的两套逻辑。
一次收藏是怎么发生的
- 分享把链接分享给 RBox。
- 提取在 WebView 里打开,按站点规则脚本提取正文。
- 下载媒体图片、音视频由你的设备下载并上传。
- 入库云端校验、保存并建立索引。
一次只处理当前这一条:提取完成就提交,成功或失败都先告诉你结果,不在手机里堆积待上传任务。
架构设计
这一部分写给想看细节的人,也是 RBox 和普通收藏工具思路上的主要区别。
整体分层
与常见做法的几点不同
| 环节 | 常见做法 | RBox 的设计 |
|---|---|---|
| 采集位置 | 服务器收到链接后自己去抓取 | 在用户的设备上采集,用用户自己的登录态和环境;服务器默认不抓取 |
| 站点适配 | 每个网站各写一套程序,或完全依赖通用提取 | 通用脚本打底,站点规则只补充通用脚本覆盖不了的页面,并记录每次用的规则版本 |
| 提取不出正文 | 服务器重新请求原网址 | 客户端把已拿到的 DOM 或文章根节点交给服务端转 Markdown;服务端不请求网址、不下载媒体,这份 DOM 也不长期保存 |
| 媒体文件 | 服务器下载,常遇到登录与防盗链 | 一律由客户端下载再上传;服务端从 HTML 里发现的媒体地址,也只是交回客户端处理 |
| 保存状态 | 一个“成功”标记 | 采集、资源获取、云端入库三个阶段分别记录;正文成功而视频失败,会显示为部分成功 |
| 外部加工结果 | 只保存最终文本 | 文本连同产生方式、工具和过程记录一起保存,可追溯、可过滤 |
采集规则与结果协议
规则按域名匹配,包含:匹配模式、注入脚本及其 SHA-256 校验值、运行时机、判定“提取完成”所需的字段、提取不足时是否允许交给服务端。客户端会拒绝执行校验不一致的脚本。
脚本通过固定约定返回三种结果:
complete:客户端已得到所需正文和元数据。need_server_extract:需要服务端根据 DOM 提取 Markdown。failed:页面无法读取或脚本出错。
客户端完成采集后,整理为统一的 Capture Package 上传,包含来源 URL、采集时间、标题与正文、媒体资源及原始地址、各项获取状态、规则版本、正文来自客户端还是服务端、客户端类型版本,以及数据产生方式与上下文痕迹。
正文中已保存的附件会替换为稳定的云端路径,不使用会过期的签名 URL;没能保存的附件保留原始地址,并标明尚未保存。
数据模型
内容采用扁平模型,不做复杂的树形结构。
| 对象 | 用途 |
|---|---|
| Item | 一条收藏,或一份外部提交的加工结果:类型、标题、来源 URL、正文、元数据、状态。 |
| ProductionContext | 数据产生上下文:方式(客户端采集、外部 OCR、音频提取、视频转文稿等)、生产者与版本、输入引用、过程痕迹。RBox 校验并保存,不重放。 |
| Asset | 媒体资源:对象存储标识、原始地址、类型、大小、校验值。一条内容可关联多个资源。 |
| CaptureRule | 按域名下发的采集规则与版本。 |
| CaptureTask | 服务端已接收记录的过程与失败排查,不镜像手机上的队列。 |
| ItemRelation | 来源关系(衍生自、参考了、替代了)。二次加工阶段才引入,一期不实现。 |
API、CLI 与 MCP
API 从 /api/v1 开始,是唯一的业务入口,CLI 和 MCP 都建立在它之上。
GET /capture-rules:按域名取规则。POST /capture/extract:把 DOM 转成 Markdown,不抓取、不下载、不写入收藏。POST /items/capture、POST /items:保存内容,必须带数据产生方式;支持幂等重试。GET /items、GET /search:浏览与搜索。GET /assets/{id}:获取媒体元数据与授权访问方式。
MCP 一期只提供少量可靠的工具:capture_url、search_items、get_item、list_assets、create_item。删除等破坏性操作需要明确授权。
它不做什么
先把边界说清楚,也方便你判断它是不是你要的东西。
一期明确不做
- 由 RBox 执行 OCR、摘要、翻译、转写
- 服务器默认抓取网页,或替你下载媒体
- 手机端的采集队列与离线待传队列
- 开放的用户脚本安装与脚本市场
- 知识图谱、版本管理、工作流编辑器
- 社交分享与多人协作
不会承诺的事
- 所有网站的所有视频都能保存。遇到登录限制、加密媒体、动态签名地址时,会如实报告结果。
- 页面能播放,不等于文件能完整保存。
- 采集完成,不代表原网页今后一定可访问。来源链接、内容副本和媒体文件会分别记录。
一期想验证什么
- 重点中文内容平台,能否稳定采集。
- 同一份规则脚本,在手机 WebView 和浏览器扩展里结果是否一致。
- 服务端仅凭 DOM 提取正文,质量够不够。
- 正文、图片、音视频各自的保存成功率。
- 保存之后,用户会不会回来再找、再用。
- 用户是否愿意为可靠的长期保存付费。
如果它真的存在,你会想用吗?
点一下就好,不需要登录,也不会收集个人信息。