GitHub
現行実装

Storyの連合形式

Storyは、24時間の期限を持つ1枚の画像または動画です。 ActivityPubではStoryNoteの両方の型を持つ オブジェクトとして送信します。

相互運用について: Storyと表示用プロパティはyurucommu独自語彙です。 相手が未対応の場合に同じStory画面で表示される保証はありません。 NotecontentattachmentendTimeはActivityStreamsの語彙です。

送信するオブジェクト

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    {
      "story": "https://yurucommu.com/ns/story#",
      "xsd": "http://www.w3.org/2001/XMLSchema#",
      "Story": "story:Story",
      "displayDuration": {
        "@id": "story:displayDuration",
        "@type": "xsd:duration"
      },
      "overlays": {
        "@id": "story:overlays",
        "@container": "@list"
      },
      "position": "story:position"
    }
  ],
  "id": "https://example.com/ap/objects/story-1",
  "type": ["Story", "Note"],
  "attributedTo": "https://example.com/ap/users/alice",
  "published": "2026-07-29T10:00:00.000Z",
  "endTime": "2026-07-30T10:00:00.000Z",
  "to": ["https://example.com/ap/users/alice/followers"],
  "content": "今日の景色",
  "attachment": {
    "type": "Document",
    "mediaType": "image/jpeg",
    "url": "https://example.com/media/story.jpg"
  },
  "displayDuration": "PT5S",
  "overlays": [
    {
      "type": "Note",
      "name": "駅の近く",
      "position": {
        "x": 0.5,
        "y": 0.8,
        "width": 0.6,
        "height": 0.1
      }
    }
  ]
}

プロパティ

名前 現在の扱い
type ["Story", "Note"]
endTime ローカル作成時は公開時刻から24時間後
attachment 画像または動画を1つだけ使用
content 任意のキャプション。ローカル作成は最大500文字
displayDuration ISO 8601 duration。未指定時の表示値はPT5S
overlays 最大20件。現在の作成画面はテキスト、リンク、投票に対応

オーバーレイの座標

positionxywidthheightは、すべて 0.0から1.0までの正規化した数値です。 ピクセル数ではありません。xyは オーバーレイの中心を表します。

{
  "type": "Link",
  "name": "詳細を見る",
  "href": "https://example.com/article",
  "position": {
    "x": 0.5,
    "y": 0.72,
    "width": 0.5,
    "height": 0.09
  }
}

公開範囲

個人のStoryは本人と承認済みフォロワーだけが読み取れます。 コミュニティ内で作成したStoryは、そのコミュニティの承認済みメンバー向けです。 外部への配送先も、個人Storyは本人のfollowers、コミュニティStoryは コミュニティの範囲に合わせます。

24時間経過と手動削除の違い

きっかけ ローカルでの結果 連合への通知
endTimeを過ぎる 読み取り結果から直ちに除外。期限切れデータとメディアは 後続の保持期間処理で削除 期限切れだけを理由にDeleteは送らない。 受信側はendTimeを見て非表示にする必要がある
投稿者が手動で削除 Story本体、関連データ、保存メディアを削除 元の公開範囲へDeleteを配送して削除を知らせる

したがって「24時間後に全サーバーから物理的に消える」とは保証できません。 相手がendTimeを解釈しない場合や、すでに複製したデータの扱いは 相手側に依存します。

受信時の扱い

受信したStoryにも期限が必要です。欠落または不正な endTimeは、受信側で公開時刻からおよそ25時間以内に収まる値へ 補正します。添付がないStoryは保存しません。オーバーレイは最大20件まで 取り込み、過大な付加情報は落として基本のメディアとキャプションを優先します。

機械可読な例

1行1オブジェクトの例は Story examples.jsonl から確認できます。