Don't Marry Your Podcasting Platform: Host Your Own Podcast Feed

Michael Lynch

ポッドキャスト配信プラットフォームと結婚しない: 自分でポッドキャストフィードをホストする

Libsyn や Podbean のようなプラットフォームでポッドキャストをホストしているとします。ポッドキャストのプラットフォームを乗り換えようと思ったら、どうなるでしょうか。すでに、古いプラットフォームを指す RSS URL を皆に渡しています。

たとえば Libsyn は、ポッドキャストに次のような RSS URL を割り当てます。

  • https://feeds.libsyn.com/12345/rss

ポッドキャストを Apple Podcasts に登録し、リスナーに RSS URL を共有したとき、直接ポッドキャストプラットフォームを参照させていたことになります。

移行しても、リスナーのポッドキャストアプリはすべて、古い URL であなたのポッドキャストを探し続けます。

リダイレクトに頼らない

多くのポッドキャストはプラットフォームを乗り換える際、古いプラットフォームにリダイレクトの設定を依頼します。たとえば Libsyn から Podbean へ移るなら、Libsyn の設定画面で新しいポッドキャスト URL を指定します。

そうすれば、リスナーが古い Libsyn の RSS URL にアクセスしようとするたびに、Libsyn が移転したことを伝えてくれます。

この方法には、2 つ問題があります。

  1. ポッドキャストプレーヤーの中には、リダイレクトを見ても URL を更新しないものがあります。そのため、いつまでも古いフィードを確認し続けます。
  2. 古いポッドキャストホストが、今後もリダイレクトを提供し続ける保証はありません。

特に重要なのは (2) です。ポッドキャストホスティングプラットフォームの立場なら、顧客が自社プラットフォームを離れるのを助ける機能を、なぜ提供したいでしょうか。そのプラットフォームが事業継続に必死になり始めた場合、リダイレクトは真っ先に廃止される機能の一つになりそうです。

では、どうすればよいのでしょうか。リスナーにはポッドキャストの URL を渡す必要があります。この問題はどう避ければよいのでしょうか。

RSS フィードを自分でホストする

ポッドキャスティングプラットフォームは、同じものに見えますが、実際には別々の 2 つのサービスをホストしています。

Libsyn や Podbean でポッドキャストをホストすると、実際には次の 2 種類のファイルをホストしてもらっています。

  1. 音声・動画の録音ファイル
  2. すべての録音ファイルの索引である、ポッドキャストの RSS フィード

しかし、この 2 つのサービスは完全に独立しています。必要なら別々のベンダーでホストしても、問題なく動作します。実際、私はそうしており、ほかのポッドキャスト運営者にも勧めています。

どちらのサービスも技術的にはそれほど難しくありませんが、サービス (2) は非常に安価に実現できます。

ポッドキャストの録音ファイルは、長さ、品質、動画の有無に応じて、通常は 50 MB から 5 GB にもなる大きなファイルです。一方、ポッドキャストの RSS フィードは小さく、通常 1 MB 未満です。ホスティング費用は、リスナーがポッドキャストフィードを 10,000 回確認するごとに約 1 セントです。

ポッドキャストプロバイダーの前段に CDN を設定すれば、RSS フィードをシンプルかつ安価にホストできます。CDN が担当するのは RSS フィードの配信だけです。ポッドキャストプレーヤーは、容量の大きい音声・動画ファイルを引き続きポッドキャストプロバイダーから直接取得します。

フィード

自分のカスタムドメイン名だけを配布する

リスナーやポッドキャストディレクトリに https://feeds.libsyn.com/12345/rss のような URL を配布すると、Libsyn(または利用しているホスティングプロバイダー)と結婚したような状態になります。

代わりに、自分が所有するドメイン名の RSS URL だけを配布すべきです。

たとえば、ポッドキャストの名前が「My Awesome Dinosaur Podcast」なら、番組用に次のドメイン名を登録できます。

  • myawesomedinosaurpodcast.com

: ドメイン名の購入方法は対象外なので説明しませんが、どのドメイン名プロバイダーでも問題ありません。私は個人的には DNSimple が好きです。

リスナーやポッドキャストディレクトリにポッドキャストフィードを知らせるときは、次の URL を使います。

ポッドキャストホストを切り替えても、リスナー側で何かする必要はありません。同じ feeds.myawesomedinosaurpodcast.com URL から聴き続けられるからです。リスナーが Libsyn や Podbean の URL を目にすることはありません。

RSS フィードを自分でホストする

この例では、次の値を使用します。

  • https://feeds.libsyn.com/12345/rss: ポッドキャストホストから使用するよう案内された RSS フィード。
  • https://feeds.myawesomedinosaurpodcast.com: 代わりに実際に使用する URL。

BunnyCDN アカウントを作成する

まず、BunnyCDN のアカウントを作成します。

どの CDN でも利用できますが、Bunny はシンプルで安価なので私は気に入っています。

Pull Zone を追加する

Bunny のアカウントで、CDN > Add Pull Zone に進みます。

Pull Zone に名前を付けます。名前は何でも構いません。この例では example12345 という名前を使います。

Origin Type で「Origin URL」を選び、ベンダーのポッドキャスト RSS URL を入力します。

「Standard Tier」を選びます。

「Pricing Zones」では、最も安い選択肢だけを選び、残りは選択解除します。RSS フィードがすべての地域で非常に高速である必要はありません。リスナー体験には影響しないからです。

最後に「Add Pull Zone」をクリックします。

URL をテストする

Bunny が Pull Zone を作成したら、上部に作成された b-cdn.net URL にアクセスしてみてください。

成功していれば、そのリンクにアクセスするとポッドキャストの RSS フィードが表示されます(ブラウザによってはファイルが自動的にダウンロードされることがあります)。

すべて動作していれば、難しい部分は終わりです。あとはカスタムドメイン名を設定するだけです。

カスタムドメインを紐付ける

作成した pull zone で、General > Hostnames に進みます。

次のように、ポッドキャストのドメインを入力します。

  • feeds.myawesomedinosaurpodcast.com

: サブドメインは必ずしも feeds である必要はありません。好きな名前にできますが、feeds は有用な慣例だと私は思います。

Bunny から、ドメインレジストラ側で有効化する必要がある DNS レコードが提示されます。

ドメインを登録した場所に戻り、Bunny に表示された DNS エントリーを追加します。

ドメインレジストラに CNAME レコードを追加し終えたら、Bunny の画面に戻って「Verify & Activate SSL」をクリックします。

キャッシュ設定を上書きする

Bunny(およびすべての CDN)は、データを積極的にキャッシュします。他のサーバーの負荷を軽減するために設計されているため、Bunny はデフォルトでは更新確認のために「Origin URL」(ポッドキャストプロバイダー)をときどきしか確認しません。

これは、リスナーに更新をタイムリーに届ける妨げになる可能性があります。ポッドキャストを更新したのに、Bunny が古いコピーを配信しているせいで、誰も 1 日か 2 日は更新を見られない、という状況は避けたいものです。

Bunny が古いポッドキャストフィードのコピーを配信しないようにするには、pull zone で Caching > General に進みます。

「Cache Expiration Time」を「Override: 20 minutes」に変更します。

これにより、Bunny はポッドキャストフィードのコピーを最大 20 分間だけ保存するようになります。好みに応じて、この値は増減できます。

「Do not cache」は勧めません。人気のあるポッドキャストで数百人のリスナーが同時にフィードを確認すると、Bunny からポッドキャストプロバイダーへ数百件のリクエストが一度に送られます。すると、ポッドキャストプロバイダーが Bunny からのリクエストをブロックする可能性があり、リスナーにはエラーメッセージが表示されることになります。

正規 URL を置き換える

RSS フィードには、次のような self タグが含まれているという細かい点があります。

<atom:link href="https://feeds.libsyn.com/12345/rss" rel="self" type="application/rss+xml"/>

https://feeds.myawesomedinosaurpodcast.com URL を配布していても、ポッドキャストプレーヤーによっては元の URL より self タグを優先し、CDN でホストしたバージョンを迂回することがあります。

これを防ぐには、カスタム Bunny エッジスクリプトを使う必要があります。

  1. Edge Platfrom > Scripting に進み、「Add Script」をクリックします。
  2. 「Deploy and edit on Bunny.net」を選びます。
  3. スクリプトに「Replace RSS self tag」という名前を付けます。
  4. Type を「Middleware」に変更します。
  5. 「Add Script」をクリックします。
  6. コードエディタに次のコードを入力します。
import * as BunnySDK from "https://esm.sh/@bunny.net/[email protected]";

// Replace with the vendor-specific URL to your RSS feed.
const SOURCE_URL = "https://feeds.libsyn.com/12345/rss";

// Replace with the domain name that you own.
const TARGET_URL = "https://feeds.myawesomedinosaurpodcast.com";

/**
 * Modifies the response from the origin to replace a specific URL.
 *
 * @param {Context} context - The context of the middleware.
 * @param {Request} request - The current request done to the origin.
 * @param {Response} response - The HTTP response or string.
 */
async function onOriginResponse(context: { request: Request, response: Response }): Promise<Response> | Response | void {
  const responseText = await context.response.text();

  // Replace the URL with simple string replacement
  const modifiedText = responseText.replace(SOURCE_URL, TARGET_URL);

  // Create a new response with the modified text
  return new Response(modifiedText, {
    status: context.response.status,
    statusText: context.response.statusText,
    headers: context.response.headers
  });
}

BunnySDK.net.http.servePullZone()
  .onOriginResponse(onOriginResponse);

最後に「Connect Pull Zone」ボタンをクリックし、このスクリプトを RSS フィードに接続します。

これで完了です!

正しく設定できていれば、ポッドキャストフィードを配信するカスタム URL が手に入っているはずです。

これで自分で管理できる URL を持てます。ポッドキャストプラットフォームを切り替える場合も、BunnyCDN pull zone の「Origin」フィールドを更新するだけです。リダイレクトを扱う必要も、古いプラットフォームに囲い込まれる心配もありません。

原文は Michael Lynch により に公開されました。

この記事は「gpt-5.6-terra」を使用して翻訳されました。