Storyの連合形式
Storyは、24時間の期限を持つ1枚の画像または動画です。
ActivityPubではStoryとNoteの両方の型を持つ
オブジェクトとして送信します。
Storyと表示用プロパティはyurucommu独自語彙です。
相手が未対応の場合に同じStory画面で表示される保証はありません。
Note、content、attachment、
endTimeは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件。現在の作成画面はテキスト、リンク、投票に対応 |
オーバーレイの座標
positionのx、y、
width、heightは、すべて
0.0から1.0までの正規化した数値です。
ピクセル数ではありません。xとyは
オーバーレイの中心を表します。
{
"type": "Link",
"name": "詳細を見る",
"href": "https://example.com/article",
"position": {
"x": 0.5,
"y": 0.72,
"width": 0.5,
"height": 0.09
}
}
Questionは1つのStoryにつき最大1件- 投票の選択肢は2件から4件
Linkには有効な絶対URLが必要
公開範囲
個人のStoryは本人と承認済みフォロワーだけが読み取れます。 コミュニティ内で作成したStoryは、そのコミュニティの承認済みメンバー向けです。 外部への配送先も、個人Storyは本人のfollowers、コミュニティStoryは コミュニティの範囲に合わせます。
24時間経過と手動削除の違い
| きっかけ | ローカルでの結果 | 連合への通知 |
|---|---|---|
endTimeを過ぎる |
読み取り結果から直ちに除外。期限切れデータとメディアは 後続の保持期間処理で削除 |
期限切れだけを理由にDeleteは送らない。
受信側はendTimeを見て非表示にする必要がある
|
| 投稿者が手動で削除 | Story本体、関連データ、保存メディアを削除 | 元の公開範囲へDeleteを配送して削除を知らせる |
したがって「24時間後に全サーバーから物理的に消える」とは保証できません。
相手がendTimeを解釈しない場合や、すでに複製したデータの扱いは
相手側に依存します。
受信時の扱い
受信したStoryにも期限が必要です。欠落または不正な
endTimeは、受信側で公開時刻からおよそ25時間以内に収まる値へ
補正します。添付がないStoryは保存しません。オーバーレイは最大20件まで
取り込み、過大な付加情報は落として基本のメディアとキャプションを優先します。
機械可読な例
1行1オブジェクトの例は Story examples.jsonl から確認できます。