Skip to content

Note

このドキュメントは2026-02-27 02:32PLaMo Translation Modelを使用して自動翻訳されました。

FEP-8967: 添付リンクのプレビュー生成機能

概要

ソーシャルアプリケーションでよく見られる機能として、ユーザーがメッセージや投稿コンテンツ内に含まれるリンクをクリックする前に、そのリンク先の内容をリッチにプレビュー表示する機能があります。現在Mastodonなどのアプリケーションでは、コンテンツ内で最初に検出されたリンクに対して自動的にプレビューを生成していますが、この際、投稿者が意図した特別な処理については考慮されていません。本FEPでは、既存の添付モデルを活用することで、投稿者がどのリンクを特別に処理すべきか明示的に指定できるようにします。オプションとして、信頼できる受信者が独自のプレビュー情報を含めることも可能とし、これにより受信者は独自にプレビューを生成する手間を省くことができます。

添付としてのリンク

添付モデルを利用することで、メインコンテンツに対する拡張機能として特定の役割を持つ要素を示すことが可能です。AS2-VOCABでは「attachment」を「電子メールにおける添付と意味的に類似したもの」と定義しており、これは「特別な処理が必要となる可能性のある要素」を指すものです。

投稿者はattachmentフィールドにLinkを含めることで、当該リンクを付属的なプレビューカードとしてセマンティックに処理すべきであることを明示できます。この機能は、添付画像や動画、音声ファイルと同様に表示され、少なくともhref属性を持つことで「Link」として認識される必要があります。

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "attachment": {
        "href": "https://foo.example/"
    }
}

消費者がattachmentとしてのLinkを検出した場合、当該リンクをオブジェクトに「付属」しているものとして表示する必要があります。最低限、href属性はそのままレンダリング可能であり、場合によってはリンクを表すアイコンと併せて表示することが推奨されます。

添付されたリンクを表示する際の一例

リンクプレビュー情報

投稿者はpreviewプロパティを使用して以下の形式でリンクプレビュー情報を付加できます:

{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        {
            "sensitive": "as:sensitive"
        }
    ],
    "attachment": {
        "href": "https://foo.example/",
        "preview": {
            "type": "Article",
            "name": "Example Essay",
            "summary": "In which some information is provided...",
            "image": {
                "sensitive": true,
                "url": {
                    "href": "https://cover-image.example/file.jpg",
                    "mediaType": "image/jpg",
                    "width": 1200,
                    "height": 630
                }
            },
            "attributedTo": {
                "name": "The Author",
                "icon": {
                    "url": {
                        "href": "https://avatar.example/file.png",
                        "mediaType": "image/png",
                        "width": 48,
                        "height": 48
                    }
                },
                "url": {
                    "href": "https://author.example/",
                }
            }
        }
    }
}

previewの具体的な形式やその処理モデルについては本FEPの対象外とします(各消費者は独自のデザイン言語や理解に基づいて情報をレンダリングできるため)。ただし、リンクプレビューで広く利用されているOpenGraphプロパティと同等の機能を持つ以下のプロパティが有用です:

  • name -- og:titleに相当し、プレビューカードの主要テキストを指定します。
  • summary -- og:descriptionに類似し、プレビューカードの補助的な説明文を提供します。
  • image -- og:imageと同様に、プレビューカードで使用する画像を指定します。
  • type -- og:typeと同様、ターゲットリソースの種類を示します。これにより適切なアイコンを選択して表示することが可能です。
  • attributedTo -- article:author, music:musician, music:creator, book:authorなどのプロパティに類するもので、プレビューカードの帰属情報を明示します:
    • name -- 帰属すべき名称を指定します
    • icon -- 帰属名と併せて表示するアイコンを指定します
    • url -- 帰属情報を含むリンクを指定します

投稿者が提供するpreview情報を信頼しない消費者は、例えばリンク先コンテンツを取得してOpenGraph情報やHTMLタグ(<title><meta>など)から必要な情報を抽出するなど、独自の方法でプレビューを生成することが可能です。

上記のリンクプレビューを表示する際の一例

代替アプローチ

(本セクションは非規範的な内容です)

オブジェクトを直接添付する方法

オプションのプレビュー情報を伴うLinkを添付する代わりに、リソースをidで直接添付することも可能です。任意の追加主張情報を併せて指定できます。

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "attachment": {
        "id": "https://foo.example/",
        "type": "Article",
        "name": "Example Essay",
        // ...その他のプロパティ
    }
}

オブジェクトを直接添付する場合とLinkを添付する場合の主な違いは、オブジェクトを直接添付すると現在のオブジェクトと添付オブジェクト間に明確な関係が確立されるのに対し、Linkの場合はこのような関係性が生じない点です。例えば、画像を直接添付する場合と、画像をターゲットとするLinkを付加する場合を比較すると、ほとんどの場合は直接的な画像添付がより適切と言えます。ただし、投稿者がLinkを選択する理由としては、当該リンクがcontentフィールドに含まれているため特別な処理を必要とすることを明示したい場合や、何らかの事情で直接的に画像を添付したくない場合があります。これは具体的な処理モデルに依存する事項であり、本FEPの対象外となります。

実装状況

  • Mastodon 4.5: Mastodon-PRに準拠し、Linkをattachmentとして公開する機能を実装しています。現時点ではリンクプレビュー情報の提供は予定しておらず、代わりに既存のOpenGraphロジックを用いてhref属性から添付リンクを取得してプレビューを生成します。将来的にはcontent内の最初のリンクを自動的に抽出する処理を停止する予定ですが、当面の間はattachmentが存在しない場合のフォールバック手段として最初のリンクを使用する方針です。

参考文献

著作権

CC0 1.0 Universal(CC0 1.0)パブリックドメイン献呈

法律で許容される範囲内において、本Fediverse Enhancement Proposalの著者らは当該作品に関するすべての著作権および関連する権利を放棄しています。