アナウンス(ブースト/リツイート/リポスト/リノート)する

Activity:Announce

私家版ActivityPub日本語訳

投稿(Note)を拡散します。
ActivityPubではAnnounce(紹介)というActivityです。

Mastodonでブースト、Xでリポスト、旧twitterでリツイート、Misskeyでリノートといろいろな呼びかたをされていますが、(自分のも含めて)「誰かの投稿(Note)」をフォロワーのタイムラインに配送、拡散します。

個人的には勝手に「Announce=紹介する」という呼びかたがいいんじゃないかと思ってるので、以下「アナウンス」とします。

POSTリクエストを投げる時はminetype
Content-type:application/activity+json
が必須です。

    投稿:Noteをアナウンスする
  1. アナウンスしたいNoteのIDを取得
  2. AnnounceのActivityにNoteのIDを設定
  3. 自分を発信者としてフォロワーやPublicなどに配送する

データ的には「発信者は自分」というところが特徴でしょうか。「おれ/わたしが」この投稿を紹介します!という形です。
(現実でも、紹介者の責任が問われるのと同じですね)

アナウンスしたいと思う投稿を見つけたら、その投稿のIDが必要。

この、ほーさんの投稿をアナウンスするには、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

Menu