“Clip To Discourse” Chrome 扩展程序

尊敬的 Discourse 社区成员们,这是我为大家准备的一份小小的 :wrapped_gift: 圣诞礼物 :christmas_tree:。它很简单但很有用,完全是我自己想要才构建的。

受到 Simon Willison 关于使用 LLM 进行开发的精彩博客 的启发,我在圣诞节期间,在社交活动、看电影和包装礼物之余,用“心流编码”(vibe-coded)完成了这个项目!我没有编写任何代码,但我确实审查了代码并监督了 LLM 的工作。所有内容都源自 spec.mdroadmap.md

它有什么用?

我将一个自托管的个人 Discourse 用作 笔记本日记、博客、简历、维基、AI 工具和开发者知识库。我经常发现自己想从网上“剪辑”内容(页面标题 + URL)并直接粘贴到我的 Discourse 中,然后我可以在其中将其整合到笔记或日记条目中。

我的需求很简单,所以这个工具相当基础,它只发布页面标题和 URL,尽管将来我希望添加“包含页面摘录”和“剪辑整个页面”作为选项。

隐私

功能

  • 剪辑页面标题和 URL。可选的“页面摘录”或“完整页面文本”已实现,但有点不成熟(不过您的 Discourse AI 以后可以在您的 Discourse 实例上对其进行总结?…)
  • 使用每个剪辑创建新主题,或将剪辑作为回复附加到现有主题
  • 支持多配置文件,允许您为不同的用例存储多个 API 密钥、目标 Discourse 实例和默认设置。
  • “剪辑到 Discourse”图标会自动更改,以反映当前所选配置文件的网站图标,这样您就可以轻松分辨您正在剪辑到哪里

局限性

  • 主要限制是管理员需要在您要剪辑到的 Discourse 实例上为您创建一个用户范围的 API 密钥。对我来说这不是问题,因为我是我打算使用此工具的所有 Discourse 实例的主要管理员。

  • 显然,如果“剪辑到 Discourse”功能被太多用户启用,它可能会在共享或公共 Discourse 实例上产生大量低质量的帖子。因此,我主要将此扩展面向那些像我一样将 Discourse 用作个人笔记本的用户。

如何安装

  • 通过 Chrome 网上应用店的链接安装到任何基于 Chromium 的浏览器(Chrome、Edge、Brave 等):https://chromewebstore.google.com/detail/clip-to-discourse/copdhiejkkdblhdcdjapcoalldkondhi

  • (可选但推荐)将扩展“固定”到浏览器的工具栏。

  • 创建一个单用户 API 密钥,具有以下粒度范围:主题:read(仅用于连接测试)、writeupdate

  • 确定您希望剪辑进入哪个类别。如果您希望每个剪辑都是一个新主题,那么您只需要 CategoryID。当您查看该类别时,此 ID 位于 URL 中,如下所示:https://discourse.yourdomain.com/c/CategoryName/CategoryID

  • 您还可以设置一个要回复的主题,所有剪辑都将作为新回复附加到该主题。要获取主题 ID,您也可以从 URL 中获取:当您查看主题时,此 ID 位于 URL 中,如下所示:https://discourse.yourdomain.com/t/TopicTitle/TopicID

  • 单击扩展图标以打开弹出窗口,然后转到“设置”以配置 API 密钥并设置您的默认值。请注意,您可以为可能想要使用的各种不同的 Discourse 实例设置多个“配置文件”。

  • 保存设置并(可选地)测试连接,这将读取一个主题以确保 API 连接正常工作。

  • 关闭“设置”并剪辑内容进行测试!

图片

Clipping Settings
Demo Clip to New Topic
Demo Clipped Topic
Demo Clipped as a Reply

路线图

  • “包含页面摘录”和“剪辑整个页面”可能需要一些测试和完善。或者,此功能可以允许用户选择要剪辑的文本区域作为摘录。

  • 我不打算开发 Firefox 或 Safari 扩展(因为我不使用那些浏览器),但很乐意有人接手移植此扩展的任务。我们可以协作,将所有内容保留在一个仓库中并保持功能奇偶性。

  • 可能会考虑实现 Discourse 用户 API 流程,这样 API 密钥就不必由管理员创建,但用户 API 通过 OAuth 流程工作,因此不能直接替代。

相关讨论

关于基本上是这个工具的请求:https://meta.discourse.org/t/chrome-firefox-extension-share-to-discourse/21104/28

一篇相关的帖子,建议在剪辑 Discourse 时添加附加功能:https://meta.discourse.org/t/need-web-clipper-for-discourse-post/45105

社交分享是一个相关的概念,但使用的是简单的 URL https://meta.discourse.org/t/social-share/89980

反馈、想法和贡献

这个主题是发布您任何反馈的好地方。我乐于接受改进的想法,只要它们不会使扩展过于复杂和/或降低我对它的有用性!

如果您想提交问题或进行拉取请求,GitHub 仓库在这里:

此扩展是由我的公司 Koloki.co 为 Discourse 社区创建的免费、开源和注重隐私的工具。

12 个赞

为这个扩展干得漂亮 :clap:

1 个赞

这可能也是我的用例。理想情况下,当剪辑到新主题时,它会使用精选链接,我大量使用此功能(忽略自定义布局):

如果剪辑能导入页面上当前选定的文本,我也会很高兴,我不确定这是否可行。

我可以想象这样的场景:我在一个有有趣文本的页面上。我选择文本,剪辑到一个新主题,然后它会:

  • 将页面链接作为精选链接
  • 将标题设置为剪辑页面的标题
  • 将选定的 HTML 内容设置为帖子正文

编辑:对于前两个步骤,david 的出色解决方案效果非常好。它要求我手动发布主题,但对于我的用途来说,我认为可以接受 :thinking:

1 个赞

我很久以前就有过同样的想法,但直到上周才终于成功设置好。

与 Discourse 无关,我个人长期使用的方法是 SingleFile 浏览器扩展程序。它可以将您当前正在查看的网站保存为单个 HTML 文件,尽可能保留您所看到的内容,以便您可以离线阅读。我的 ~/Downloads 文件夹里有无数个沉睡的 HTML 文件。

由于互联网上的信息不会永远存在,最可靠的方法是将您当前看到的内容原封不动地保存在您自己的计算机上。

我已经保存了很多 HTML 文件,将来还会添加更多,所以我一直在考虑一个功能,可以让我将这些文件导入到 Discourse 中进行查看和管理。

如果您计划添加一个“抓取”或剪辑网站内容的功能,它将与 SingleFile 扩展程序已经做得很好的功能有很大的重叠。

如果有一种方法可以直接与 SingleFile 集成或导入 HTML 文件,那就太棒了。

2 个赞

感谢您分享 SingleFile 扩展程序——这是一个很棒的工具,我可能不会过多地尝试复制或与之重叠。我也有同样的使用场景——希望将一个可用的页面以单个 HTML 文件的形式保存下来,所以我刚刚也安装了 SingleFile。我之前不知道有这么棒的扩展程序!

一旦您使用“Clipped To Discourse”保存后,您也可以将该 HTML 文件作为附件上传到帖子中。这可能是我会使用它的方式,作为 archive.org 的替代方案。

对于 Clip To Discourse 的未来版本,我想我会专注于:

  • 用户选择的文本范围作为摘录(Excerpt)被剪辑
  • 改进该摘录内容的 Markdown 格式化