使用 Discourse 打造类似博客、Reddit、X 或 Facebook 的滚动式平台

那只是我列出的一些对网站整体感觉的期望,Reddit 风格的主题/Discourse 本身就已经内置了其中大部分功能。

“主题列表预览”(Topic List Previews)正是这一功能的最初实现。

这对谁都没帮助。这个帖子是关于我想看看在其他成员的帮助下能实现什么,如果可能的话,希望也能帮助其他人 :wink:

2 个赞

我本想帮忙,但你却一味抗拒。

祝你好运。

抱歉,我并不是在反驳你。我已经回答了你的问题,而你发给我的是 Starzen 的链接,这并不符合我想实现的目标。然后我解释说,我看过你链接的那些帖子,他们讨论的是如何构建某个东西,而我正打算构建一个东西。抱歉让你觉得我在反驳,但事实并非如此。说实话,我不确定你到底想往哪个方向引导。

3 个赞

我只是想感谢楼主(OP)提供的灵感(几周前,在我询问导航栏中使用的插件时,他们很乐意地分享给了我)。

我的初衷并不是要复刻社交媒体界面,而是希望为我们的用户提供一个更舒适的体验,目前我正在为此努力。到时候我很乐意分享我的发现、最终成果以及代码仓库 :slight_smile:

顺便提一下,我分享一个总是值得记住、但有些用户在回复或互动时可能会忘记的链接:Core Rules of Netiquette

2 个赞

确实是,所以我也很支持楼主和大家的新的尝试!

2 个赞

我对此进行了一些思考,情况其实比这更微妙一些。没错,一切确实都围绕着讨论展开,但阅读也是一个非常重要的因素。我们承认存在庞大的读者/内容消费群体,我也很喜欢让这一体验变得无缝流畅的想法。长期以来,我一直主张提供一个易于个性化定制的动态信息流。

5 个赞

“自定义信息流”的初始设计已完成

接下来是将新表插入数据库,大致如下:

字段 用途
user_id 成员
category_id 被测量的类别
impressions 有效展示次数
opens 打开的主题数
likes 点赞的主题数
replies 发布的回复数
dwell_seconds 累计阅读时长
affinity_score 计算得出的偏好度
updated_at 上次重新计算时间

对于第一个版本,只需要兴趣表。行为表将在我确定采用哪种方案后稍后添加。

2 个赞

今天我在 Nodeloc 论坛上看到了相关内容:NodeLoc

我不太熟悉这种方法,但我很期待看看它的发展走向!

1 个赞

这真的太令人印象深刻了。我之前仔细考虑过 /r 路由,但因为分类限制而放弃了。真好奇这具体是怎么实现的。

1 个赞

初始的 Feed 选择功能已添加并正常运行,如上所述,在最终阶段之前尚未进行任何样式设计。

该选择界面会在用户首次访问 Feed 时弹出,在用户选择 3 个感兴趣的类别之前无法关闭,同时还添加了“全选”选项。

此外,还添加了一个“编辑兴趣”选项卡。

1 个赞

初始个性化信息流已完成并正常运行,目前尚未出现 CPU 峰值,运行速度快,符合预期。

它现在可以:

  • 使用 55% 的兴趣、25% 的新鲜度、10% 的热度和 10% 的随机性 对主题进行评分。
  • 在有可用主题时,每第六个位置优先推荐一个发现类主题。
  • 在存在替代项时,避免连续三个主题来自同一类别。
  • 保持分页功能独立于已删除或已消费的项目。
  • 在兴趣变更后重新加载并重新排序信息流。
  • 包含可用的弹出窗口和 全选 功能。

然后当你更改你的信息流时

4 个赞

我想先把样式搞定,然后再继续。

2 个赞

接下来要做的是

在添加行为追踪之前,先优化我们已经构建的内容:

  • 限制每个用户的缓存信息流会话数量,以防止重复刷新导致累积六小时的缓存列表。

  • 改进类别混合机制,以减少大型队列的 CPU 负载。

  • 测量信息流加载时间和缓存使用情况。

之后是行为追踪:记录真实的曝光、话题打开和阅读时长。预取操作不应被计入阅读。

最初,我们将收集这些信号而不改变排序。一旦追踪变得可靠,我们就可以在用户看到 30–50 条帖子时,逐步引入15% 的行为权重

1 个赞

很喜欢这个倡议!

你甚至可以说“阅读是根本”,这其实是我刚开始担任社区经理时的一篇基础性博客文章:


@Damian_Boon 如果一个主题没有附带任何图片,这个系统该如何运作?
演示中使用了 AI 生成的头图,我希望这不会成为默认设置?偶尔出现一张没问题,但一张接一张的假图片很快就会让人厌烦 :slight_smile:


在 Safari 桌面版上还有一个小 bug,相关主题链接无法打开:

3 个赞

完全一样,它只使用主题的视口。所以你会看到和现在一样的内容,只是缺少图片而已。

这是一个演示站点,所有内容都是为这个测试用例由 AI 生成的。

谢谢指出,我稍后会去查看一下,因为它使用的是主页的缓存。

2 个赞

基于我目前创建的内容,我需要测试服务器负载。我有一个 OpenRouter 账户,想要测试 10 个机器人同时发帖的情况。测试的最佳路径是什么?

机器人配置:

  • 用户名: wtf_gaming
    分类: 游戏
    人格: 游戏新闻
    每小时发帖数: 30
    每小时回复数: 15

  • 用户名: wtf_tech
    分类: 科技
    人格: 科技新闻
    每小时发帖数: 30
    每小时回复数: 15

然后让 10 个已登录的机器人每隔 30 秒刷新一次 /feed 页面。

或者,创建一个小型独立的 Python 服务来与 Discourse 和 OpenRouter 交互,而不是将 AI 请求直接放在 Discourse Rails 进程中。

测试的最佳方式是什么?

1 个赞

看起来非常棒,最终能落地为一个新主题么?

2 个赞

带分类选择器信息流的组件主题会非常棒!

1 个赞