Brainsteam HomePostsNotesLinksSearch

使用 Hoarder 构建个人档案

发布于 2025年2月15日 作者 James' Avatar James Ravenscroft

在这个时代,由于 各种原因,保存和记录可能从互联网上删除、丢失或遗忘的信息非常重要。 我最近一直在使用 Hoarder 来创建一个自托管的个人网络内容档案,这些内容是我觉得有趣或有用的。 Hoarder 是一个开源项目,它运行在你自己的服务器上,允许你搜索、过滤和标记网络内容。 至关重要的是,它还会获取网络内容的完整副本并将其存储在本地,以便即使原始站点关闭,你也可以访问它。

Hoarder 简评

Hoarder 运行一个无头版本的 Chrome(即,它实际上并没有在你的服务器上打开窗口,它只是模拟它们),并使用它从站点下载内容。 对于需要付费才能访问的内容(也许你想保存一份报纸文章以供日后参考),它可以与 SingleFile 协同工作。SingleFile 是一个 Chrome 和 Firefox(包括移动端)的浏览器插件,它会将你在浏览器中当前查看内容的完整副本发送给 Hoarder。 这意味着,即使你正在查看需要登录才能访问的内容,你也可以将其保存到 Hoarder,而无需与该应用共享任何凭据。

Hoarder 可选地包含一些 AI 功能,你可以根据自己的喜好启用或禁用这些功能。 这些功能允许 Hoarder 自动为你保存的内容生成标签,并可选择生成你保存的任何文章的摘要。 默认情况下,Hoarder 与 OpenAI API 配合使用,他们建议使用 gpt-4o-mini。 但是,我发现 Hoarder 可以很好地与我的 LiteLLM 和 OpenWebUI 设置 协同工作,这意味着我可以使用小型语言模型,以最小的电力和用水量,在我自己的服务器上为书签生成摘要和标签,而且 Sam Altman 不会知道我收藏了什么。

这个 Web 应用相当不错。 它提供了对你已收藏页面的全文搜索,并按标签进行过滤。 它还允许你创建基于你感兴趣的标签集的列表或“feeds”。 一旦你点击进入一篇文章,你可以看到缓存的内容,并可以选择生成该页面的摘要。 你可以手动添加标签,也可以在 Hoarder 内部高亮显示和注释页面。

Hoarder 还有一个 Android 应用,允许你从手机访问你收藏的内容。 该应用仍然有点简陋,似乎还不允许你查看缓存/保存的内容,但我相信它会随着时间的推移而变得更好。

Hoarder 是一个快速发展的项目,在接下来的几周内才满 1 周岁。 它只有一个主要的维护者,考虑到这是他的副业,他做得非常出色。

设置 Hoarder

我主要使用 Docker 和 Docker Compose 来管理我的自托管应用。 我按照 开发者提供的说明 来启动并运行 Hoarder。 然后,在 .env 文件中,我们为 OpenAI API 的基本 URL、密钥和我们要使用的推理模型提供了一些略有不同的值。

默认情况下,Hoarder 将拉取页面,尝试提取和简化内容,然后丢弃原始内容。 如果你希望 Hoarder 保留包含所有功能的原始内容的完整副本,请在 .env 文件中将 CRAWLER_FULL_PAGE_ARCHIVE 设置为 true。 这将占用更多的磁盘空间,但意味着你将拥有更真实的原始数据副本。

你可能需要设置一个 HTTP 反向代理,以将请求转发到 Hoarder 的正确容器。 我使用 Caddy,因为它超级简单并且内置了 lets-encrypt 支持:

hoarder.yourdomain.example {
  reverse_proxy localhost:3011
}

完成所有设置后,你可以第一次登录。 导航到用户设置并转到 API 密钥,你需要为浏览器集成生成一个密钥。

配置 SingleFile 和 Hoarder 浏览器扩展

我在 Firefox 中同时安装了 SingleFileHoarder Official Extension。 这两个扩展在我的工作流程中都有其用武之地,但你可能会发现你的情况有所不同。 默认情况下,我会点击进入 Hoarder 扩展,该扩展与服务器的集成更紧密,并且知道我是否已经收藏了某个页面。 如果我登录到一个需要付费才能访问的页面,或者我必须点击大量的 Cookie 横幅并关闭大量的广告,我将使用 SingleFile。

对于 Hoarder 扩展,点击该扩展,然后只需输入你的新实例的基本 URL,并在提示时粘贴你的 API 密钥。 下次你点击该按钮时,它将尝试收藏你在该选项卡中打开的任何内容。

对于 SingleFile,你可以按照 这里的指南 进行操作。 本质上,你需要右键单击扩展图标并转到“管理扩展”,然后打开首选项,展开“目标”,然后输入 API URL(https://YOUR_SERVER_ADDRESS/api/v1/bookmarks/singlefile),你的 API 密钥(你已在上面生成并用于 Hoarder 扩展),然后将 data field name 设置为 file,并将 URL field name 设置为 url

显示 SingleFile 扩展首选项页面的屏幕截图,其中显示了上述链接指南中描述的字段

完成此操作后,下次你点击 SinglePage 扩展图标时,它应该会通过多个步骤来保存当前页面,包括任何支持图像到 Hoarder。

使用 LiteLLM 添加自托管的 AI 标签和摘要

我已经配置了一个 LiteLLM 实例,你可以参考 我之前的帖子 以获取有关如何使其工作的提示和技巧。 请参阅以下示例,并将 litellm.yourdomain.example 和 your-litellm-admin-password 替换为你设置中的相应值。

OPENAI_BASE_URL=https://litellm.yourdomain.example
OPENAI_API_KEY=<your-litellm-admin-password>
INFERENCE_TEXT_MODEL="qwen2.5:14b"
INFERENCE_IMAGE_MODEL=gpt-4o-mini

我还发现 LiteLLM 有一个怪癖,这意味着你必须在你的配置中使用 ollama_chat 作为模型前缀,而不是 ollama,才能启用无错误的 JSON 和模型“工具使用”。 这是我的 LiteLLM 配置 yaml 的摘录:

 - model_name: gpt-4o-mini
  litellm_params:
   model: openai/gpt-4o-mini
   api_key: "os.environ/OPENAI_API_KEY"
 - model_name: qwen2.5:14b
  litellm_params:
   drop_params: true
   model: ollama_chat/qwen2.5:14b
   api_base: http://ollama:11434

我没有任何本地多模态模型既可以与 LiteLLM 一起使用,又可以很好地回答提示,因此我仍然依赖 gpt-4o-mini 来完成 Hoarder 中的基于视觉的任务。

从 Linkding 迁移

直到最近,我一直使用 Linkding 进行书签和个人存档,但我想尝试 Hoarder,因为我很容易被闪亮的东西分散注意力。 据我所知,没有从 Linkding 迁移到 Hoarder 的官方途径,但我能够为此使用 Linkding 的 RSS feed 功能。

首先,我登录到我的 Linkding 实例并导航到设置 > 集成并获取所有书签的 RSS feed 链接

linkding 集成设置页面的屏幕截图,其中有一个大红箭头指向“所有书签”链接

然后,我打开 Hoarder 的用户设置 > RSS 订阅并将我的 feed 添加为那里的订阅。 我点击“立即获取”以触发初始导入。

显示我的 Linkding 实例链接的 Hoarder RSS 订阅页面的屏幕截图

结论

Hoarder 是一个非常酷的工具,而且很容易启动并运行。 尽管它背后的团队规模不大,但它发展迅速,并且已经提供了令人印象深刻且简单的用户体验。 为了让我个人觉得更有用,我希望在应用程序中获得更好的注释支持,无论是通过桌面 Web 体验还是通过移动应用程序。 我也希望看到一个移动应用程序,其中包含用于在应用程序中阅读文章而不是在浏览器中打开的功能。 此外,如果我们能够将缓存的内容导出为电子书,以便我可以在我的 Kindle 或我的 Kobo 上阅读书签内容,那就太好了。

我对 Hoarder 等应用程序的去中心化社交未来也感兴趣。 想象一下,你可以加入一个 Hoarder 服务器联盟,这些服务器都使其书签内容可用于搜索和参考。 甚至可以(可选地)共享注释和笔记。 这将是朝着更开放的替代集中式搜索服务迈出的重要一步。

回复和网络活动

如果你想评论或回复,请 toot mebluesky me 关于此 url,或发送我一个 webmention

3 喜欢

Author thumbnail Author thumbnail Author thumbnail

4 转帖

Brainsteam James Ravenscroft (he/him pronouns, also known as jamesravey) 在英国汉茨郡的朴茨茅斯创建。 由 Hugoplague 主题驱动。