让WordPress网站能够从Mastodon和Misskey上进行关注,尝试使用ActivityPub插件

对于以下内容,只需要提供一个中文选项:

引入

过去,在某个社交网络平台上有一只蓝鸟,人们聚集在那里。然而,最近的混乱情况让人们开始散去,转向了其他社交网络。

有些人选择了加入Mastodon社区,而有些人则选择了加入Misskey社区。他们一起进入了被称为Fediverse的宇宙。尽管它们位于不同的星球(服务器),但它们具备相互通信的能力。这是因为它们都实施了一种称为ActivityPub的共同协议(通信规约)。

被绑住的不仅仅是社交媒体。

我在之前提到Mastodon和Misskey等服务器是通过共同的协议进行通信的。通过实现这个协议,即使是被广义地称为“SNS”之外的东西也可以连接在一起。在其中,最近引起了一些关注的是博客系统的“WordPress”。没错,WordPress和Mastodon是可以互相关注的。

让我们看一下证据,就是我在misskey.design上的账户 (@monaco_koukoku@misskey.design) 的关注列表。

image.png

账户名为 @monaco@monaco.every-little.com 。@符号后面的部分是服务器的域名(为了能够在服务器之间相互关注而给账户加上域名以唯一区分账户)。这个域名无非就是我的WordPress网站的域名。

 

点击此帐户后,将从misskey.design的页面显示以下方式的笔记(发布)。乍一看,看起来没有特别不自然的感觉。

image.png

这本笔记的实体是在WordPress上发布的文章。换句话说,关注这个账户的Mastodon、Misskey等账户可以在时间线上看到在WordPress上发布的最新文章信息。例如,我个人参加同人志即卖会(设立摊位),通过在网站上发布活动信息,可以通知Mastodon和Misskey等用户。

本文将讨论如何使WordPress能够从Mastodon、Misskey等各个服务器上进行关注。鉴于这个领域变化很快,所以随着时间的推移,本文可能不再适用。请您提前理解。

验证环境

    • WordPress v6.3.2

ActivityPubプラグイン v1.0.10
(オプション)NodeInfoプラグイン v2.2.0

另外,假设WordPress网站符合以下条件。

    • 独自ドメイン(サブドメイン可)が設定されていること

 

    • HTTPSが有効化されていること(Let’s Encrypt可)

 

    • WordPressがルートディレクトリにセットアップされていること(https://example.com/ のようなドメイン名だけのアドレスでWordPressサイトのトップページにアクセスできる)

この条件については回避できなくもないようですが、この記事では省略します

准备

在WordPress中安装ActivityPub插件。点击管理界面上的“插件”→“新建”按钮,输入ActivityPub到搜索框中,然后安装这个粉色图标的插件。安装完成后不要忘记启用该插件。

image.png

最简单的设置

这就是以上的全部内容。

帐户名将会成为WordPress的用户名。从外部来看,帐户名将加上域名变为@(WordPress的用户名)@(域名)。如果您在Mastodon的搜索框中输入这个字符串,我相信网站应该会被找到。

然而,默认设置存在一些问题,所以在告诉其他人账户名之前,我们应该先好好进行设置。

再做一些更完善的设置

打开WordPress管理界面,从ActivityPub插件的设置页面进行操作。

帐户类型 hù

我认为在企业和团体中,可能会有多人共同管理WordPress网站的情况。为了满足这种情况,ActivityPub插件可以公开以下两种类型的账户。

    • WordPressユーザー個人のアカウント

WordPressのユーザー名がアカウント名になる(デフォルトで有効化されるのはこちら)
フォロワーのタイムラインでは各個人が投稿した記事のみが見える

サイト全体のアカウント

好きな文字列をアカウント名にできる(WordPressユーザー名と重複しないこと)
フォロワーのタイムラインでは全ユーザーが投稿した記事が見える

可以同时启用它们,也可以只启用其中一个。在「设置」选项卡中的「个人资料」中,勾选「启用投稿者」则启用前者,勾选「启用博客」则启用后者。

1cdf83ebbe0fc9d1.png

如果您是个人运营网站,两个账户实质上是相同的。在这种情况下,我认为只使用后者更容易。取消“启用发布者”选项,勾选“启用博客”选项。然后,在“更改博客配置文件ID”中输入您想要的账户名称。

然而,如果已经开始运营并且有人追随的账户改变了账户名,那么关注者将无法找到它。在向他人宣传之前,请确保确定账户名。

从现在开始,我们将以整个网站账户为前提进行说明。

在时间线上展示的内容设置

当您将浏览器屏幕向下滚动时,您会看到一个名为”活动”的选项。

f26b34acf8379663.png

在「投稿内容」中,您可以自定义投稿的内容。以我的情况为例,我选择了”自定义”,并输入了以下内容。

<strong>[ap_title]</strong>

[ap_excerpt]

[ap_hashtags]

<a href="[ap_permalink]">[ap_permalink]</a>

你可以通过点击“查看ActivityPub模板标签列表”链接来确认标签的含义,但你可能已经大致了解了。通过进行这些设定,以下页面将会像上面的图片所示,以一种类似的方式显示出来。

 

image.png

在图片数量方面,最好将其设置为较大的值。默认情况下,默认值为“3”,但实际上有时只会显示一张图片。我认为保留一些余地,设为“10”左右会更好。

头像图片

在设置主题自定义界面中,可以使用“站点图标”作为帐户的头像图像。请准备好512×512像素的PNG格式等图标图像。相同的图像也会自动设置为WordPress网站的Favicon图标。

3019fc1265b2b29f.png

确认是否按照预期显示

一旦完成设置后,我们来确认是否生成了预期的帖子内容。但是,只有新发布的文章才会在关注者的时间线上发布(类似于邮件杂志的方式)。为了不破坏网站,我们不宜多次进行测试发布,我将解释如何查看现有文章的显示方式。

确认发布内容作为ActivityPub协议的一部分

如果将URL输入到Mastodon的搜索框中,确实可以确认显示,但一旦服务器缓存了帖子,即使修改或更改了内容,也无法反映出来。因此,最好先查看作为协议的发布内容。

您可以从以下URL获取由我在 monaco.every-little.com 域名上发表的文章转换而来的笔记信息。

https://monaco.every-little.com/wp-json/activitypub/1.0/users/0/outbox的内容进行释义。

打开此URL,会返回JSON格式的数据。如果要在浏览器中显示,可以使用Chrome扩展程序中的“JSON Formatter”等工具对其进行美化和格式整理。在Firefox中,默认会以整齐的形式显示,非常方便。

在 JSON 对象的 orderedItems 中,包含了每个帖子的信息。0 号帖子是最新的,1 号帖子是次新的,依此类推。具体细节请参考 ActivityPub 的规范文档,但在这里,只需要检查大致符合下面示意图中所示部分(尤其是图像和正文内容)即可。

image.png

如果存在与预期不符的情况, 可以通过更改图片数量设定或者更改”投稿内容”的设定来重新加载URL。

关于所展示的图像

文章中指定的特色图片将被附加为第一张图片,并在此后附加其他贴在文章中的图片。如果存在多张相同的图片(包括特色图片和正文图片),只有第一张图片会显示在笔记中。

关于哈希标签的问题

將標籤指定為記事,即將其作為哈希標籤添加到筆記中。

image.png

关于从[ap_excerpt]标签中展开的摘要

若在文章的”输入摘要”栏中有输入内容,则将使用输入的内容作为摘要;如果没有输入内容,则会自动生成摘要。但是需要注意的是,WordPress的自动生成摘要功能对多语言支持不太稳定(例如在使用日语时,若将上限设为”50个字”,有时会被限制在”50个字符”)。因此,建议手动填写”摘要”的内容。

image.png

我会实际跟进并确认一下。

如果能够成功调整,您可以从您的Mastodon或Misskey账号(除了主账号之外,也可以为测试而创建)实际上关注WordPress网站,并尝试在WordPress上发布一些文章。当文章状态变为”公开”时,就会产生一条笔记并在时间线上传送。

对于一次发布的文章所做的更改将不会反映在Fediverse的笔记中。另外,要删除笔记,需要将文章发送到垃圾箱中(重新变为草稿似乎不会使它消失)。

进一步改进(面向高级用户)

这大致上勉强满足要求了,但仔细看还有一些关于资料和服务器信息的地方可以稍作改进,所以我会再加把劲。

建议禁用ActivityPub插件的自动更新,以避免对PHP代码进行直接更改时自动回滚更改部分。

表明名字和个人简介栏

如果以整个网站作为帐户运营,那么输入在WordPress网站名称和捕捉语句中的内容(参见下图)将成为在Fediverse上显示的用户昵称和个人资料简介。

image.png

由于宣传口号通常都是用一句话来表达的,所以在个人简介栏中写入的内容太短了。就显示名称而言,有时候我们可能希望在网站名称后面加上”用于通知”之类的说明。由于(截至撰写时)插件没有提供这些自定义功能,因此若想进行更改,我们就必须修改插件的代码。

在ActivityPub的插件文件编辑器中,打开activitypub/includes/model/class-blog-user.php文件,并对图像中指示的部分进行修改。

image.png
	public function get_summary() {
		$home_url_escaped = esc_url( home_url( '/' ) );
		return \wpautop(
			\wp_kses(
				\get_bloginfo( 'description' ) . ' / Webサイト <a href="' . $home_url_escaped . '">' . $home_url_escaped . '</a> の新着記事を配信します / お問い合わせは <a href="https://misskey.design/@monaco_koukoku">@monaco_koukoku@misskey.design</a> まで',
				'default'
			)
		);
	}

\get_bloginfo( ‘name’ ) 是网站名称,\get_bloginfo( ‘description’ ) 是口号。可以保留原始内容,也可以自由地编写字符而不使用这些函数。

更改内容可能不会立即在参考账户信息的服务器上反映出来,可能需要大约一天的时间。请耐心等待。

服务器信息

可能性は一つだけ提供しますが、以下は中国語的表达方式:

Mastodon用户可能没有特别注意到,但在运行Misskey、Firefish等服务器的情况下,时间线和个别笔记的显示中会显示该用户所属服务器的信息,如用户名称下方或旁边。

image.png

然而,在WordPress的ActivityPub插件中,目前尚未提供此信息,这导致在Misskey等平台上,服务器名称会显示为空白。

e85853807b554742.png

在这里,我们将进行修改以避免这个问题。

在WordPress中安装并激活NodeInfo插件(建议禁用自动更新)。
在NodeInfo插件的文件编辑器中打开nodeinfo/includes/class-nodeinfo.php文件,并添加如下所示的2行代码。

image.png
		$metadata['nodeName'] = get_bloginfo('name');
		$metadata['nodeDescription'] = get_bloginfo('description');

据说在进行更改后,反映这些变动可能需要几天时间。如果一切顺利,WordPress网站名称应该能够作为服务器名称显示出来。

image.png

其他

我想确认谁关注了我。

您可以通过ActivityPub插件的设置界面中的“关注者”选项卡来确认。

image.png

我想從WordPress那邊關注其他用戶。

据说安装「Friends」插件会很好。(在插件的设置页面上写着)
个人未经验证(未使用),所以不详细说明了。

最后通知

2023年11月11日(星期六)将参加在冒头图片中也有出现的“东京文学自由市场37”,我会在那里开设档口。
我以街上引起注意的马尔富克门牌和基督门牌等物作为书籍的题材。附近居民,请多关照。

以下是网页目录。

 

关于其他活动参与信息,我们将在您即将临近时通过 @monaco@monaco.every-little.com 进行通知。谢谢。

Mastodon和Misskey等是指伺服器的軟體名稱。實際上,有多個伺服器運行著各自的軟體,每個用戶可以選擇所屬的伺服器(也稱為實例)來創建帳戶。例如,Misskey有misskey.io, misskey.art, misskey.design等。在這裡,不打算追求嚴確性。 ↩聯邦(Federation)與宇宙(Universe)結合而成的新詞。不同的伺服器之間連接稱為聯邦。 ↩

广告
将在 10 秒后关闭
bannerAds