2026年9月23日
2026年9月23日
WordPressをActivityPubに対応させてMastodon/Fediverseから記事をフォロー可能にする
WordPress のブログを Mastodon などの Fediverse(ActivityPub でつながる分散型 SNS の総称)からフォローできるようにするには、公式ディレクトリにある「ActivityPub」プラグインを使うのが現実的な方法です。この記事では、プラグインの導入から、Mastodon で @ユーザー名@ドメイン を検索してフォローできるまでの確認、キャッシュやセキュリティ設定で動かないときの直し方、運用上の注意点までを説明します。
ActivityPub 対応で何ができるようになるか
ActivityPub は W3C が勧告した、SNS 同士がやり取りするための規格です。Mastodon、Misskey、Pixelfed などが採用しています。WordPress を対応させると、次のことができるようになります。
- Mastodon などの利用者が、ブログや著者を
@blog@example.comのような形式でフォローできる - 記事を公開すると、フォロワーのタイムラインに届く
- Fediverse 上での返信が、WordPress のコメントとして届く(設定による)
RSS と違い、読者は普段使っている SNS の中で記事を受け取れます。一方で、ブログが SNS のアカウントのように扱われるため、運用の考え方も少し変わります。
使うプラグイン:ActivityPub
「ActivityPub」プラグインは、もともと Matthias Pfefferle 氏が開発し、現在は Automattic が開発を引き継いでいます。WordPress.org のプラグインディレクトリから導入できます。
以前のバージョンでは、アカウントの発見に使う WebFinger や、サーバー情報を伝える NodeInfo を別のプラグインで入れる必要がありました。現行版ではこれらの機能が本体に含まれています(2026年10月現在)。古い解説記事の手順どおりに別プラグインを入れると重複することがあるため、プラグインの説明ページで最新の構成を確認してください。
画面の項目名や設定の場所はバージョンで変わるため、以下では設定を目的で説明します。
手順1:導入前の確認
導入前に次の点を確認します。いずれも、あとから変えるとフォロワーとのつながりが切れる原因になります。
- パーマリンク設定が「基本」以外になっている: ActivityPub のやり取りには、きれいな URL の仕組みが使われます
- サイトのドメインを当面変えない: Fediverse 上のアカウントは URL で識別されます。ドメインを移すと、フォロワーが新しいアカウントに自動で移るとは限りません
- HTTPS で配信されている: 多くのサーバーは HTTPS でないと通信しません
本番に入れる前にバックアップを取り、可能ならステージング環境で動作を見ておきます。ただし、ステージングが外部から見えない環境だと Fediverse 側からアクセスできないため、フォローの確認は公開環境で行うことになります。
手順2:プラグインを有効化して公開単位を決める
有効化すると、プラグインの設定画面(「設定」メニューの中)が追加されます。最初に決めるのは「誰をアカウントとして公開するか」です。
- 著者ごとのアカウント: 各ユーザーが
@ユーザー名@example.comとして公開され、その人の記事だけが届きます。複数の著者がいるサイトに向いています - ブログ全体のアカウント: サイト全体で1つのアカウントになり、すべての記事が届きます。個人ブログや企業ブログで「サイトをフォローしてほしい」場合はこちらが分かりやすい形です
両方を有効にすることもできます。著者アカウントを公開すると、そのユーザー名が外部に見える形になります。管理者アカウントのログイン名をそのまま公開したくない場合は、投稿用の別ユーザーで記事を書くか、ブログ全体のアカウントだけを使う構成にします。
あわせて、配信する投稿タイプ(投稿のみか、固定ページも含めるか)や、配信する内容(全文か、抜粋とリンクか)を設定します。Mastodon などは長文の表示が得意ではないため、抜粋とリンクにしてブログ本体で読んでもらう形が使いやすいことが多いです。
手順3:外部から見つかるかを確認する
Fediverse のサーバーは、@blog@example.com という宛先を受け取ると、まず https://example.com/.well-known/webfinger に問い合わせてアカウントの場所を調べます。ターミナルから次のコマンドで確認できます(blog と example.com は自分の値に置き換えます)。
# アカウントの発見(WebFinger)
curl -s "https://example.com/.well-known/webfinger?resource=acct:blog@example.com"
# ActivityPub 形式でプロフィールを取得できるか
curl -s -H "Accept: application/activity+json" "https://example.com/"
1つ目で JSON が返り、links の中に application/activity+json の項目があれば、発見の段階は成功です。2つ目では、ブログ全体のアカウントの URL(著者アカウントなら著者ページの URL)に対して、HTML ではなく JSON が返るかを見ます。返す URL はプラグインの設定で表示されるプロフィール URL に合わせてください。
最後に、Mastodon のアカウントで検索欄に @blog@example.com を入力し、プロフィールが表示されてフォローできるかを試します。フォロー後に記事を1本公開し、タイムラインに届くかを確かめます。
手順4:見つからない・届かないときの原因と対処
よくある原因を、起きやすい順に並べます。
- ページキャッシュが HTML を返している: キャッシュ系プラグインや CDN は、
Acceptヘッダーの違いを区別せずに HTML を返すことがあります。手順3の2つ目のコマンドで HTML が返る場合はこれを疑い、ActivityPub 関連の URL をキャッシュから外すか、Acceptヘッダーで分けて保存する設定にします - **
/.well-known/へのアクセスが遮断されている**: Nginx の設定でドット始まりのパスをまとめて拒否していたり、WordPress をサブディレクトリに置いていてドメイン直下の/.well-known/webfingerが WordPress に届いていなかったりします。1つ目のコマンドが 404 や 403 になる場合は、Web サーバーの設定を確認します - セキュリティプラグインや WAF がサーバー間通信を止めている: Fediverse のサーバーからの機械的なアクセスを、ボットとして遮断している場合があります。ログでブロックされた要求を確認し、必要な範囲だけ許可します
- REST API を無効化している: プラグインは WordPress の REST API を使います。セキュリティ目的で REST API を丸ごと止めていると動きません
プラグインはサイトヘルスの画面に診断項目を追加するため、「ツール」→「サイトヘルス」も確認してください。
運用の注意点
返信のモデレーション: Fediverse からの返信がコメントとして届く場合、通常のコメントと同じくスパムや不適切な投稿が混ざります。コメントの承認制や、スパム対策プラグインの設定を見直しておきます。
個人情報とプライバシーポリシー: フォロワーのアカウント情報や、返信の内容と投稿者名がサイトのデータベースに保存されます。プライバシーポリシーに、Fediverse 連携で受け取る情報とその扱いを追記しておきます。
削除は相手のサーバー任せ: 記事を削除すると削除の通知は送られますが、相手のサーバーが表示を消すかは相手次第です。一度配信した内容は、ほかのサーバーに複製が残る可能性があると考えて公開します。
リンクのプレビュー: Mastodon は記事のリンクを貼られたとき、OGP 情報をもとにカードを表示します。SEO プラグインなどで OGP を整えておくと、ActivityPub 経由でも、手動で共有されたときでも見た目が整います。
まとめ
- Fediverse からのフォローには、Automattic が開発する「ActivityPub」プラグインを使う
- 現行版は WebFinger と NodeInfo を内蔵しており、別プラグインは原則不要
- 著者ごとかブログ全体か、公開するアカウントの単位を最初に決める
curlで WebFinger と ActivityPub 形式の応答を確認し、Mastodon で検索してフォローを試す- 動かないときは、キャッシュ・
/.well-known/の遮断・WAF・REST API 無効化の順に確認する