アナウンス(ブースト/リツイート/リポスト/リノート)する
Activity:Announce
投稿(Note)を拡散します。
ActivityPubではAnnounce(紹介)というActivityです。
Mastodonでブースト、Xでリポスト、旧twitterでリツイート、Misskeyでリノートといろいろな呼びかたをされていますが、(自分のも含めて)「誰かの投稿(Note)」をフォロワーのタイムラインに配送、拡散します。
個人的には勝手に「Announce=紹介する」という呼びかたがいいんじゃないかと思ってるので、以下「アナウンス」とします。
POSTリクエストを投げる時はminetype
Content-type:application/activity+json
が必須です。
- 投稿:Noteをアナウンスする
- アナウンスしたいNoteのIDを取得
- AnnounceのActivityにNoteのIDを設定
- 自分を発信者としてフォロワーやPublicなどに配送する
データ的には「発信者は自分」というところが特徴でしょうか。「おれ/わたしが」この投稿を紹介します!という形です。
(現実でも、紹介者の責任が問われるのと同じですね)
アナウンスしたいと思う投稿を見つけたら、その投稿のIDが必要。
「投稿へのリンクをコピー」などで、この投稿ひとつだけを表示させるリンクを確認します
ブラウザでリンクを開くとほとんどのサーバーでは上記の表示になりますが
GETリクエストヘッダの「Accept」に「application/activity+json」を指定すると以下のJSONを取得できます。
{
"@context":["https://www.w3.org/ns/activitystreams",{"ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","sensitive":"as:sensitive","toot":"http://joinmastodon.org/ns#","votersCount":"toot:votersCount"}],
"id":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084",
"type":"Note",
"summary":null,
"inReplyTo":null,
"published":"2025-02-21T01:25:35Z",
"url":"https://mstdn.jp/@donbe2023/114039268020146084",
"attributedTo":"https://mstdn.jp/users/donbe2023",
"to":["https://www.w3.org/ns/activitystreams#Public"],
"cc":["https://mstdn.jp/users/donbe2023/followers"],
"sensitive":false,
"atomUri":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084",
"inReplyToAtomUri":null,
"conversation":"tag:mstdn.jp,2025-02-21:objectId=591018581:objectType=Conversation",
"content":"\u003cp\u003eこの投稿をAnnounce(ブースト)対象にしてみよう\u003c/p\u003e",
"contentMap":{"ja":"\u003cp\u003eこの投稿をAnnounce(ブースト)対象にしてみよう\u003c/p\u003e"},
"attachment":[],
"tag":[],
"replies":{
"id":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084/replies",
"type":"Collection",
"first":{
"type":"CollectionPage",
"next":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084/replies?only_other_accounts=true\u0026page=true",
"partOf":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084/replies",
"items":[]
}
}
}
「id」の「https://mstdn.jp/users/donbe2023/statuses/114039268020146084」が確認できます。
アナウンスする投稿:Noteのidを指定したActivityが以下
{
"@context": ["https://www.w3.org/ns/activitystreams", {"Hashtag": "as:Hashtag"}],
"type": "Announce",
"id": "https://tokoroten.doncha.net/t2aki/announce/1740270634",
"actor": "https://tokoroten.doncha.net/t2aki",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers","https://mstdn.jp/users/donbe2023"],
"object":"https://mstdn.jp/users/donbe2023/statuses/114039268020146084"
}
- 「type」は「Announce」
- 「id」は一意であればなんでもokのはず
- 「actor」は自分のアカウント
- 「to」や「cc」の宛先に該当Noteの発信者「attributedTo」を入れる(必須じゃない)
- 「object」に該当Noteのid
以上で、このActivityを配送するとアナウンスとなります。
ちなみに、サーバーの処理として、フォロワーに配信するけどフォロワーじゃないアカウントには配信しない。該当Noteの発信者が自分のフォロワーじゃない場合は、配送先に別途追加するする必要がある。
アナウンスは「デマの拡散」に加担してしまうことにも繋るので、これを実装するのは「アナウンスの取消」の実装とセットで考えたほうが安全です。
「アナウンスの取消」にはフォロー解除と同じ「Undo」のActivityを使います。
[2025-03-22 14:22:43] v1.0.1
[2025-02-23 09:57:59] v1.0.0

