TVBox 接口を GitHub Pages で自前配信!M3U プレイリスト&sing-box 設定ファイル集

タグ TVBoxM3UIPTVGitHub Pagessing-boxAndroid TV接口columnコラムlinuxLinuxandroidGitHubオープンソースcluntoptvbox
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

TVBox 接口を GitHub Pages で自前配信!M3U プレイリスト&sing-box 設定ファイル集

ひとことでいうと

cluntop/tvbox は、Android TV(テレビ向けの Android)用メディアプレーヤーアプリ「TVBox」や IPTV(インターネット経由でテレビを視聴する仕組み)クライアントで使える「設定ファイル集」をまとめたリポジトリ(ソースコードの置き場所)です。M3U(エム・スリー・ユー)形式のチャンネルリストや sing-box(プロキシツール)の設定ファイルなどを一か所にまとめ、GitHub Pages(ギットハブ・ページズ)という無料サービスを通じてインターネットに公開できます。自分でサーバーを用意しなくても「接口(せつぐち)」と呼ばれるチャンネル配信 URL を無料で運用できるのが最大の特長です。fork(フォーク)と呼ばれる「コピー操作」ひとつで使い始められるため、Git の操作に慣れていない方でも取り組みやすい構成になっています。

こんな人におすすめ

  • 自宅の Android TV で IPTV を楽しみたい方 — TVBox や TiviMate などの IPTV アプリに、このリポジトリの M3U ファイルの URL を登録するだけで複数チャンネルにすぐアクセスできます。月額費用がかかる個人サーバーを用意しなくてよい点も魅力です。
  • sing-box や Clash を使ってプロキシ経由でメディアを取得したい方singbox.json という設定ファイルや、Clash 形式から sing-box 形式へ変換するツールがあらかじめ同梱されています。テンプレートを fork して自分のサーバー情報を書き換えるだけで環境構築が完了します。
  • GitHub Pages で自前の接口(配信 URL)を運用したい開発者CNAME(シーネーム)ファイルがあらかじめ設定されており、fork して自分のドメインを割り当てれば即座にカスタム接口が動き始めます。静的ファイル(プログラムを動かさずそのまま配信できるファイル)だけで構成されているため、複雑なサーバー設定は不要です。

インストール・使い方

TVBox アプリから利用する

Step 1: GitHub Pages で配信されているファイルの URL を確認します。リポジトリ内の CNAME ファイルにカスタムドメインが記録されています。fork した場合は自分の GitHub Pages の URL(https://<ユーザー名>.github.io/tvbox/)を使います。

どの URL からチャンネルリストを取得するかをここで決めています。

Step 2: TVBox アプリを起動し、「設定 → 接口管理(または自定义接口)」を開いて URL を入力します。例として以下のような形になります。

https://<your-domain>/lib/iptv.m3u

TVBox はここで入力した URL にアクセスし、チャンネルリストを自動的にダウンロードします。

Step 3: アプリを再起動してチャンネルリストが反映されたことを確認します。


リポジトリを fork してセルフホストする

Step 1: GitHub でリポジトリのページを開き、右上の「Fork」ボタンをクリックします。これで自分のアカウントにコピーが作成されます。

fork とは「元のリポジトリを自分のアカウントに複製する操作」です。コピー後は自由に編集・公開できます。

Step 2: fork 後のリポジトリで「Settings → Pages」を開き、Branch を main・ルート(/)に設定して GitHub Pages を有効にします。

この設定により、リポジトリ内のファイルがインターネット上で公開されます。

Step 3(任意): 独自ドメインを使いたい場合は、CNAME ファイルを自分のドメイン名に書き換え、DNS(ドメインの住所管理)の CNAME レコードを <ユーザー名>.github.io に向けます。

Step 4: lib/ フォルダ内の .m3usingbox.json を自分の環境に合わせて編集し、コミット(変更を保存する操作)します。数分後に GitHub Pages へ自動的に反映されます。


ローカル(自分のパソコン上)でファイルを確認する

ターミナル(文字を打ち込んで命令を送る画面)を開き、以下のコマンドをコピー&ペーストして実行します。

git clone https://github.com/cluntop/tvbox.git
cd tvbox
# M3U プレイリストの最初の 40 行を確認
head -40 lib/iptv.m3u
# sing-box 設定ファイルを見やすく表示
python3 -m json.tool lib/singbox.json | head -60

git clone はリポジトリをインターネットからダウンロードするコマンドです。cd tvbox でダウンロードしたフォルダに移動します。

動かしてみた

Python 3.12 の実行環境でリポジトリのファイル構成を確認したところ、以下のファイルが正常に認識されました。

./lib/iptv.m3u
./lib/singbox.json
./lib/party.m3u
./lib/mdsp.m3u
./lib/twcr.m3u
./lib/hsck_gc.m3u
./lib/mod.js
./lib/pako.min.js
./lib/ffmpeg.dyn.tar.xz
./tcp.sh
./CNAME

lib/ フォルダ直下に、用途別の複数の .m3u(チャンネルリスト)と singbox.json(プロキシ設定)が整然と並んでいます。GitHub Pages 経由でそのまま配信できる状態であることが確認できました。M3U ファイルは標準的な構造に沿っており、#EXTINF タグでチャンネル名が記述され、続く行に配信 URL が並んでいます。ffmpeg.dyn.tar.xz は動画変換ツール「ffmpeg(エフエフエムペグ)」の圧縮アーカイブとして同梱されており、展開後にスクリプトから直接利用できる構成です。

ブラウザで試す(デモ)

この記事にはブラウザ上でインタラクティブに試せるデモが付いています。リポジトリに含まれる M3U プレイリストをその場で解析し、チャンネル名と URL の一覧を確認することができます。M3U ファイルの構造や、どのようなチャンネルが収録されているかを手軽に把握したい場合にとても便利です。

実践のコツ

すぐに手を動かせる行動をまとめました。

  • まず fork から始める — GitHub のアカウントがあれば「Fork」ボタン 1 回で自分用のコピーが作れます。その後 Pages を有効にすれば URL がすぐ発行されます。
  • プレイリストは用途別に使い分けるiptv.m3uparty.m3umdsp.m3u など複数ファイルがあります。まず iptv.m3u を試し、必要なら他のリストを追加していく順番がスムーズです。
  • 編集は GitHub 上でも可能 — ローカルに git clone しなくても、GitHub のファイル編集画面からテキストを直接書き換えてコミットできます。Git 操作に慣れていない方でも安心です。
  • singbox.json は自分のサーバー情報だけ書き換える — テンプレートがそのまま使えるので、変更が必要な箇所(サーバーアドレス・ポート番号など)だけを編集すれば動きます。
  • Python スクリプトで M3U の中身を確認する — 以下のスクリプトをコピー&ペーストして実行すると、チャンネル名と URL の一覧が表示されます。特別なライブラリのインストールは不要です。
# parse_m3u.py
import re, pathlib

m3u_path = pathlib.Path("lib/iptv.m3u")
lines = m3u_path.read_text(encoding="utf-8", errors="replace").splitlines()

channels = []
for i, line in enumerate(lines):
    if line.startswith("#EXTINF"):
        name_match = re.search(r',(.+)$', line)
        name = name_match.group(1).strip() if name_match else "不明"
        url = lines[i + 1] if i + 1 < len(lines) else ""
        channels.append((name, url))

for ch in channels[:20]:
    print(f"{ch[0]:30s}  {ch[1]}")
cd tvbox
python3 parse_m3u.py

用語とポイント解説

TVBox(ティービーボックス)

Android TV 向けのオープンソース系メディアプレーヤーアプリです。「接口 URL」と呼ばれる設定ファイルの URL を指定することで、チャンネルリストを取得して動画を再生します。かんたんに言うと、「テレビに入れておくとチャンネルをまとめて見られるアプリ」です。TVBox 系には TiviMate や Kodi など派生アプリが多く、同じ仕組みで動くものが多いです。

M3U(エム・スリー・ユー)

「MPEG URL」の略で、チャンネルや動画の再生リストを記述するテキスト形式のファイルです。#EXTINF というタグでチャンネル名やグループ情報を書き、次の行に配信 URL を並べる構造になっています。かんたんに言うと、「テレビのチャンネル表を URL 付きで並べたメモ書き」です。拡張子は .m3u または .m3u8 が使われます。

接口(せつぐち)

TVBox の世界での専門用語で、「チャンネルリストが置かれている配信 URL」のことを指します。アプリはここにアクセスして番組表を取得します。かんたんに言うと、「アプリが番組表を取りに行く宛先アドレス」です。接口を複数登録しておくと、一つのリストが更新されても他のリストで補完できます。

GitHub Pages(ギットハブ・ページズ)

GitHub(ソースコードを管理するサービス)が提供する、静的ファイルを無料で公開できるウェブホスティング機能です。リポジトリ内のファイルがそのままウェブサイトとして配信されます。かんたんに言うと、「GitHub にファイルを置くだけで URL が発行される無料サーバー」です。サーバーを別途借りる費用がかからないため、個人プロジェクトや小規模な配信に最適です。

sing-box(シングボックス)

オープンソースのネットワークプロキシ(中継)ツールです。さまざまな通信プロトコルに対応しており、JSON 形式の設定ファイルで動作を細かく制御できます。かんたんに言うと、「インターネットの通信を別の経路に流してくれるソフト」です。Clash など他のプロキシツールからの設定変換ツールも同梱されているため、乗り換えがしやすい構成になっています。

CNAME(シーネーム)

独自ドメイン(自分で取得したウェブアドレス)を GitHub Pages に紐づけるために使うファイルです。ファイルの中にドメイン名を 1 行書くだけで設定が完了します。かんたんに言うと、「GitHub の URL の代わりに自分のドメインを使うための設定ファイル」です。DNS(ドメインの住所管理サービス)側の設定と合わせて行う必要があります。

pako(パコ)

JavaScript(ブラウザやサーバー上で動くプログラミング言語)で書かれた圧縮・展開ライブラリです。zlib(ズィーリブ)という圧縮形式に対応しており、ブラウザ上でファイルを圧縮・展開する処理に使われます。かんたんに言うと、「ウェブページ上でファイルを小さくしたり元に戻したりするためのツール」です。TVBox 系の拡張スクリプトから参照されることが多いライブラリです。

fork(フォーク)

GitHub 上で、他人のリポジトリを自分のアカウントにコピーする操作のことです。コピー後は自分のリポジトリとして自由に編集・公開できます。かんたんに言うと、「他の人が作ったファイル一式を丸ごとコピーして自分のものにすること」です。元のリポジトリに変更を提案したい場合は「プルリクエスト」という手順を使います。

ffmpeg(エフエフエムペグ)

動画・音声の変換や録画などを行うオープンソースのコマンドラインツールです。非常に多くのフォーマットに対応しており、動画変換からライブストリームの録画まで幅広い用途に使われます。かんたんに言うと、「動画ファイルをあらゆる形式に変換できる万能ツール」です。このリポジトリには動的リンク版(.dyn)のアーカイブが同梱されています。

活用例

  • 自前の接口を GitHub Pages で無料運用 — fork してプレイリストを自分好みに編集し、TVBox や TiviMate に登録するだけで接口が完成します。クラウドサーバーの費用ゼロで配信できます。
  • sing-box 設定のテンプレートとして活用singbox.json に自分のプロキシサーバー情報を追記し、家族や仲間のデバイスへの設定配布に役立てられます。
  • Clash ユーザーの sing-box への乗り換え支援 — 同梱の clash2singbox ツールで既存の Clash 設定を sing-box 形式に変換できるため、乗り換えの手間が大幅に減ります。
  • ffmpeg を使った動画変換・ストリーム録画ffmpeg.dyn.tar.xz を展開して ARM Linux サーバーや軽量マシン上での動画変換や録画に活用できます。
  • チームやコミュニティで接口を共有 — 共通の M3U ファイルを GitHub Pages で管理することで、URL を共有するだけで全員がリアルタイムで更新を受け取れます。
  • IPTV の仕組みや sing-box 設定の学習用サンプル — 実際に動くファイル構成を手元で確認しながら、M3U フォーマットやプロキシ設定の書き方を学ぶ教材としても活用できます。

ぜひ自前の IPTV チャンネル接口の運用や、sing-box・Clash を使ったプロキシ設定の管理などに活用してみてはいかがでしょうか。