ポッドキャスト配信プラットフォームと結婚しない: 自分でポッドキャストフィードをホストする
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 つ問題があります。
- ポッドキャストプレーヤーの中には、リダイレクトを見ても URL を更新しないものがあります。そのため、いつまでも古いフィードを確認し続けます。
- 古いポッドキャストホストが、今後もリダイレクトを提供し続ける保証はありません。
特に重要なのは (2) です。ポッドキャストホスティングプラットフォームの立場なら、顧客が自社プラットフォームを離れるのを助ける機能を、なぜ提供したいでしょうか。そのプラットフォームが事業継続に必死になり始めた場合、リダイレクトは真っ先に廃止される機能の一つになりそうです。
では、どうすればよいのでしょうか。リスナーにはポッドキャストの URL を渡す必要があります。この問題はどう避ければよいのでしょうか。
RSS フィードを自分でホストする
ポッドキャスティングプラットフォームは、同じものに見えますが、実際には別々の 2 つのサービスをホストしています。
Libsyn や Podbean でポッドキャストをホストすると、実際には次の 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 エッジスクリプトを使う必要があります。
- Edge Platfrom > Scripting に進み、「Add Script」をクリックします。
- 「Deploy and edit on Bunny.net」を選びます。
- スクリプトに「Replace RSS self tag」という名前を付けます。
- Type を「Middleware」に変更します。
- 「Add Script」をクリックします。
- コードエディタに次のコードを入力します。
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」フィールドを更新するだけです。リダイレクトを扱う必要も、古いプラットフォームに囲い込まれる心配もありません。
記事をランダムに読む


