「Movable Type Advent Calendar 2023」の4日目です。
今年はトラブル続き。会社もプライベートも色々ありすぎて。
アドベントカレンダーもAdventarのサイトにログインできなくなってしまって、新しくアカウントを作り直しました。
Movable Typeのアドベントカレンダーに初めて参加したのは2013年。今年で10年なのですね。
今年はプライベートで参加
いつもは仕事用のブログに書いてましたが、今年はプライベートなサイトで参加。このサイトもMovable Typeで作ってまして、ポッドキャストの配信も行ってます。
2019年のアドベントカレンダーで、どのように作っているかを書いています。
最近、音声配信が話題になることも増えてきて、ホスティングサービスも増えていますが、メインのポッドキャストは、サーバーを借りて、自分で構築しています。無料で利用できるホスティングサービスもあるので、引っ越した方が楽かもしれないと検討しましたが、メインの番組だけは自分で管理することにしています。
サブ番組では、ホスティングサービスを使っていますが、メインの番組も一度検討したものの、自身で管理できる便利さは手放せませんでした。
プラグインを使わずに構築
自分で構築する場合、WordPressでポッドキャスト用のプラグインを使って構築する場合が多いようです。Movable Typeで構築した際も、最初はポッドキャスト用のプラグインを利用しましたが、2019年のアドベントカレンダーに書いたように、リニューアルの際にプラグインを使わずに作りました。
プラグインが何をしていたかというと、ブログ記事に音声ファイルへのリンクがあったら、音声再生用のFlashプレイヤーを設置し、RSSにポッドキャスト用の記述を追加するといったもの。
リニューアル前は、ブログとポッドキャストは一体化していて、通常はブログ記事として配信し、ブログ記事内に音声または動画ファイルがあったらプレイヤーを表示してポッドキャストとして配信。RSSも共通としていましたが、利便性も考えてブログとポッドキャストを分けました。
ブログは記事としてそのまま残し、ポッドキャストは「コンテンツデータ」として入力するようにしたため、入力項目も自由に設定できます。記事内に音声ファイルが存在するかなどの判別も必要ありません。
シーズン番号やエピソード番号も記述できるようにし、ポッドキャスト用の音声や動画ファイルはもちろん必須にしておけば良い。
音声や動画は拡張子によってaudioまたはvideoタグで出力すれば良いし、RSSではMIMEタイプも拡張子で振り分けられます。
ちなみに、RSSはブログのものとポッドキャストのもの、Spotify用に調整したものと3つ作成。好きなように記述を変えていくらでも作れるのはMTの便利なところです。
RSSではシーズン番号やエピソード番号をタイトルに追記したり、目次の表記を追加するようにしたりなど、細かくカスタマイズしています。
ポッドキャストに広告を付与する仕組み
ポッドキャストの実体は、RSS2.0の仕様で音声や動画などのリッチコンテンツを配信する仕組みです。広告サービスを経由してRSSに広告を付与するサービスも出てきました。
海外では以前からあった、ポッドキャストのアド・ネットワークです。
仕組みとしては、ポッドキャスト用のRSSをアド・ネットワークに登録すると、アド・ネットワーク側でRSSを読み取って音声ファイルを取得し、動的に広告を付与して、音声ファイルを再生成します。そして作り直した音声ファイルを記述したRSSを再生成します。
ポッドキャストのプラットフォームには、アド・ネットワークが生成するRSSを登録することで、配信者は今まで通りポッドキャストを配信するたびに、アド・ネットワーク側で広告を付与するので、配信者側は手間が増えることはありません。
RSS自体を書き換えるだけではなく、音声ファイルも作り替えてアド・ネットワーク側のサーバーに置くため、音声ファイルのダウンロード数などもサービス側で計測ができます。(計測は広告のために必須ですので)
RSSは定期的に更新をチェックし、内容に変更があったら反映されますし、内容に変更がなくても広告を取ったり付けたり、または広告を差し替えたりと頻繁に音声ファイルは作り直されているはずです。
配信元ではサーバーの負荷も減り、解析機能もアド・ネットワークで確認できるようになります。そして、広告が付与されることで再生数に応じて還元もあるのでメリットも多いのですが、メインの番組は参加を見送りました。
アド・ネットワークに参加すると、RSSと音声ファイルが差し替えられます。Movable TypeでカスタマイズしたRSSの設定が書き換えられて反映しないこともあれば、音声ファイルに埋め込んだ目次の記述もごっそりと無くなっていました。仕組み的には仕方ないところなので、参加はサブ番組だけにしています。
目次部分の出力
さて、アドベントカレンダーらしく、最後に少しコードも書きます。2019年の部分から変えている部分もいくつかあります。
目次の部分は、コンテンツタイプの「テーブル」で入力させています。行の追加なども可能です。時間の部分を「th」にすることで表示もコントロールしています。
これを元に、RSSにも記述しています。
通常の概要文の下に、表の部分を入れますが、RSSではtableのタグは使えないので、正規表現で置き換えです。一回mt:SetVarBlockに入れて、出力してます。
改行や共通のリンクなども追記し、ポッドキャストアプリなどで表示する内容をたまに見直して記述を変えています。
<description>
<mt:SetVarBlock name="contents">
<mt:ContentField content_field="概要"><mt:ContentFieldValue regex_replace="/<iframe(.*)<\/iframe>/g","" regex_replace="/<\/p>/g","</p>"></mt:ContentField><br /><mt:ContentField content_field="タグ" glue=", ">#<$mt:TagName$></mt:ContentField><br />
<mt:ContentField content_field="タイムライン"><mt:ContentFieldValue regex_replace="/<tr>[\s]*<th>(.*)<\/th>[\s]*<td>(.*)<\/td>[\s]*<\/tr>/g","<p>($1) - <em>$2</em></p>" regex_replace="/(<table>|<\/table>)/g",""></mt:ContentField><br> <br><p> </p><p>ウェブサイト<br><a href="<mt:ContentPermalink>"><mt:ContentPermalink></a></p><p> </p><p>リンク<br><a href="https://linktr.ee/potaufeu">https://linktr.ee/potaufeu</a></p><p> </p><p>文字起こし<br><a href="https://listen.style/p/mycupoftea">https://listen.style/p/mycupoftea</a></p>
</mt:SetVarBlock>
<mt:Var name="contents" encode_xml="1" regex_replace="/\s{2,}/g","\n">
</description>
音声ファイルの部分は下記のようにしています。
mt:AssetPropertyでファイル情報を出力しながら、計測用にChartableというサービスのプリフィクスを音声ファイルのURLに追記しています。
<enclosure length="<$mt:AssetProperty property="file_size" format="0"$>" type="<$mt:AssetMimeType$>" url="<$mt:AssetURL replace="https://","https://chrt.fm/track/D25DE/dts.podtrac.com/redirect.mp3/"$>" /></mt:ContentField>
このような感じで、Movable Typeでポッドキャスト配信をしています。WordPressで配信している人はたまに見かけ、トラブル対応で見させてもらったこともありますが、Movable Typeで配信する人をあまり見かけず寂しいところ。
プラグインを使わずに配信している人がいたら、情報交換したいところです。
個人的には、ポッドキャストのカテゴリなんて頻繁に変えないので、RSSに直接記述すれば良いのに、わざわざカテゴリセットを作って管理画面から変更できるように作った謎のこだわりがあり、110ものカテゴリをちまちま入力したところです。