# 从 Mastodon 返回原始帖子的链接改进

**URL:** https://meta.discourse.org/t/improve-linking-back-to-original-post-from-mastodon/361921
**Category:** UX
**Tags:** activitypub
**Created:** [2025年四月15日 15:54 UTC](https://meta.discourse.org/t/improve-linking-back-to-original-post-from-mastodon/361921 "2025-04-15T15:54:23Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [2025年四月17日 07:34 UTC](https://meta.discourse.org/t/improve-linking-back-to-original-post-from-mastodon/361921/2 "2025-04-17T07:34:57Z")

</div>

这里还有一些额外的考虑因素。

## 属性映射

### Discourse

主题和帖子映射到 [`Note`](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-note) 或 [`Article`](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-article)：

- title = `name`
- cooked = `content`

### Mastodon

帖子映射到 `Note`

- text = `content`

帖子映射到 `Article`：

- text = `name` + `summary` + `link`

另外：

- Mastodon 还使用 `summary` 来表示内容警告（例如 NSFW）。Mastodon 团队目前正在审查此事，并且是 W3C ActivityPub 信任与安全工作组的讨论主题。

- Fediverse 技术人员（包括 Mastodon）正在讨论采用 `Preview` 的概念，该概念将是一个附加到 `Article` 的对象（例如另一个 `Note`），用于提供更结构化的 `summary` 版本，但对此存在一些争论。

### 其他平台

许多平台遵循 [ActivityStreams](https://www.w3.org/TR/activitystreams-vocabulary) 规范。

帖子映射到 `Note` 或 `Article`：

- text = `content`

大多数平台没有“主题”的概念，但如果有的话：

- title = `name`

还有一个额外的考虑因素是，在“Threadiverse”（即 Discourse、NodeBB、Lemmy、Flarum 等）中，我们基本上确定了一个主题 = [`Collection`](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-collection) 的概念，这也意味着主题标题可以是 `Collection` 的 `name`。

## 这对我们意味着什么

@pmusaraj 我个人认为，上述背景信息对于您提出的考虑因素的要点如下：

### 1. 有针对性地使用 `summary`。

我认为我们应该将 Discourse 主题的 `excerpts` 映射到 `Article` 的 `summary`，仅用于主题的第一篇帖子。仅 `Article`，而不是 `Note`，并且仅用于主题的第一篇帖子。

### 2. 从 `Collection` 名称派生主题标题。

在导航上述对象映射时的一个难点是，您需要一种一致的方式来保留主题标题，尤其是在跨 Discourse 实例进行联合时。我认为更好的导航方式是按如下方式派生主题标题：

```rb
topic_title = collection.name || first_post.object.name

```

### 3. 鼓励仅将第一篇帖子设为 `Article`。

“仅第一篇帖子”发布类型的目的是为了支持主要面向 Mastodon 等流式平台的“公告”风格的发布用例。如果我们实现了 `1`，这意味着第一篇帖子将在 Mastodon 中显示如下：

```plaintext
#{topic title}\n\n#{topic excerpt}\n\n#{topic url}

```

我还没有触及 `summary` 的原因是 Mastodon _也_（除了在 `Article` 中的使用之外）一直将 `summary` 用于内容警告和剧透，然而这是：

- 对于 `Article` 来说不太相关，因为 `summary` 有效地仅用作 `summary`。它被更像内容警告（剧透）用于 `Note`；并且
- 是 Mastodon 特有的处理方式；并且
- 不是 `summary` 属性的规范用途（即在 W3C 规范中）；并且
- 这在 Mastodon 中可能会改变。

请注意，我说“鼓励”，因为我认为将“仅第一篇帖子”始终设为 `Article` 会排除使用 `[note][/note]` 标记来识别要发布的帖子中哪些内容。您目前可以使用此标记来创建自己的自定义摘要。我不确定这是否会成为一种使用模式，但我目前不想完全排除它。

### 4. 删除“在我们的论坛上讨论”链接和设置。

虽然这在早期可能是有意义的，但我认为它：

- 特定于“仅第一篇帖子”公告风格的用例。
- 如果我们采用 `3`，则对该用例是多余的。
- 与我们始终发送并被平台用于链接到原始内容的“对象 URL”重复。

---

_[View the full topic](https://meta.discourse.org/t/improve-linking-back-to-original-post-from-mastodon/361921)._
