rad-migrate
Officialrad-migrate
YouTube チャンネルを Rad TV にワンコマンドで移行。
export RAD_API_KEY=rad_...
rad-migrate @yourchannelこれだけです。rad-migrate はチャンネルを HD でダウンロードし、すべての動画をタイトル、説明、サムネイル、元の公開日とともに Rad TV に公開し、元のアップロード順でプレイリストを作成します。
rad-migrate 0.1.0
✓ node 22.22 · ffmpeg 8.1 · yt-dlp 2026.08 · Rad auth ok
✓ quality probe 1080p available (no cookies)
→ channel: Your Channel · 47 videos
→ 12 already on Rad · 3 vertical, skipped · 32 to migrate
[ 7/32] Inside Barolo Grill uploading 412.8 MBいつでも停止できます。再度実行すると、中断した場所から正確に再開します。
自分が所有するコンテンツを移行するクリエイター向けに作られています。 所有権 を参照してください。
目次
インストール · 初回実行 · クッキーは必要ですか?
コマンド · 移行するものの選択 · 最終的に得られるもの
AI エージェントから使用 · Docker · 設定
Related MCP server: @kirbah/mcp-youtube
インストール
ビルドするものはありません。rad-migrate は Python パッケージです。インストールして実行するだけです。
# Not yet on PyPI. For now, install from source:
uv tool install git+https://github.com/little-core-labs/rad-migrate
# or with pipx
pipx install git+https://github.com/little-core-labs/rad-migrateuvx rad-migrate @yourchannel # run without installing
uv tool install rad-migrate # or install it
pipx install rad-migratepip がインストールできない2つのもの
rad-migrate には Node 20+ (22 推奨) と ffmpeg が PATH に必要です。
# macOS
brew install node ffmpeg
# Windows
winget install OpenJS.NodeJS.LTS Gyan.FFmpeg
# Debian/Ubuntu
sudo apt install nodejs ffmpegNode はオプションでもビルドツールでもありません。YouTube は HD ストリーム URL を引き渡すために JavaScript ランタイムを必要とし、これがないとダウンロードは失敗せずに静かに低画質に落ちます。ffmpeg は YouTube の別々のビデオストリームとオーディオストリームを結合します。
これらをインストールしたくない場合は、Docker イメージ を使用してください。ツールチェーン全体が同梱されています。
初回実行
4つのステップ。最初の3つは数秒で済み、何時間も節約できます。
1. マシンを確認します。
rad-migrate doctorNode、ffmpeg、yt-dlp、ディスク容量、Rad の認証情報を検証します。
2. 実際に得られる画質を確認します。
rad-migrate doctor @yourchannel
# ✓ quality probe 1080p available (no cookies)実際の動画を1つプローブします。長時間の実行前にできる最も有用なことです。劣化した YouTube セッションはすべてを 360p に制限しますが、これは5秒で検出できます。1ファイルずつ無駄にする代わりに。
3. 何が移行されるかを確認します。
rad-migrate plan @yourchannelダウンロードも公開も行いません。動画、Rad にすでにあるもの、フィルタで除外されたものを表示します。
4. 最初に1本の動画を移行し、その後残りを移行します。
rad-migrate @yourchannel --limit 1 # one full round trip
rad-migrate @yourchannel # everything--limit 1 の実行で、認証情報、チャンネル、アップロードパス、トランスコードが、長時間の実行に着手する前に検証されます。
クッキーは必要ですか? おそらく不要
この分野のほとんどのツールは、cookies.txt をエクスポートするように指示することから始まります。rad-migrate はそうしません。通常は必要ないからです。そして、必要な場合でも、クッキーは最初の手段ではなく最後の手段です。
rad-migrate doctor @yourchannel で確認できます。1080p と報告されたら完了です。アカウントもセットアップも設定も不要です。
上限が報告された場合、rad-migrate はそれを修正する1つのコマンドをこの順序で示します。
1. 発信元証明トークン — Google アカウントは関与しません。
rad-migrate setup-potokenYouTube はますます「発信元証明」トークンを要求するようになっており、現在は各動画 ID にバインドされているため、トークンを手動で抽出することはできません。これは、トークンを生成するプロバイダーをインストールします。自己完結型のバイナリ1つで、GitHub が固定リリースに対して公開する SHA-256 チェックサムで検証されます。Node、npm、Docker、サインインは不要です。ダウンロードする内容を正確に表示し、実行前に確認を求めます。rad-migrate setup-potoken --remove で削除できます。
2. ブラウザセッション — それだけでは不十分な場合のみ。
rad-migrate @yourchannel --cookies-from-browser firefoxブラウザから直接クッキーを読み取ります。手動エクスポートは不要です。Firefox を推奨します。 Chrome 127 以降、Windows はクッキー暗号化キーを Chrome プロセスにバインドするため、外部ツールは Chrome、Edge、Brave のクッキーを Windows で読み取ることができません。rad-migrate はこれを検出し、復号エラーで失敗する代わりにその旨を伝えます。
知っておくべきこと: これは簡単な段階ではなく、リスクのある段階です。サインインした自分のセッションに対して一括ダウンロードすることは、YouTube の不正使用検出システムが探すパターンです。そして、自分のチャンネルを移行するクリエイターにとって、そのセッションはチャンネルが置かれているアカウントに属しています。上記のトークンルートはアカウントに一切触れません。
3. クッキーファイル — Docker やヘッドレスマシン向け。ブラウザ抽出が機能しない場合:
rad-migrate @yourchannel --cookies-file cookies.txtコマンド
rad-migrate @yourchannel # migrate (shorthand for `rad-migrate run`)
rad-migrate plan @yourchannel # show what would happen, change nothing
rad-migrate doctor @yourchannel # check the machine and the quality
rad-migrate status # progress from previous runs
rad-migrate retry @yourchannel # retry only what failed
rad-migrate setup-potoken # install the HD token provider
rad-migrate mcp # run as an MCP server for AI agents@ハンドル、ハンドル、完全な URL、または UC… チャンネル ID のいずれでも機能します。
すべてのコマンドは --help を受け付けます。
移行するものの選択
rad-migrate @yourchannel \
--newest 50 \ # the 50 most recent
--since 2024-01-01 \ # nothing older
--landscape-only \ # skip vertical videos (Shorts)
--min-duration 60 \ # skip anything under a minute
--playlist "My Channel" # build a playlist in upload orderフラグ | 機能 |
| 宛先 Rad チャンネル (ID または名前) |
| 存在しない場合に Rad チャンネルを作成 |
| この実行を N 本の動画に制限 — 最初のテストに最適 |
| 最新の N 本のみ |
| この日付より前にアップロードされたものは対象外 |
| 縦長動画をスキップ |
| 秒単位の範囲 |
|
|
| 画質の下限、デフォルト 720 |
| 失敗する代わりに標準画質を受け入れる |
| 移行されたものからプレイリストを作成 |
| Rad が処理を確認したらローカルファイルを削除 |
| ダウンロードと再開状態が保存される場所 |
| 実行前チェックをスキップ |
| 機械可読な出力 |
画質は想定ではなく検証されます
デフォルトの hd-strict では、HD で取得できない動画は標準画質で保存されるのではなく失敗します。また、完了したすべてのダウンロードは、要求されたものではなく、実際にディスクに保存されたものを確認するためにプローブされます。失敗が完了として記録されることはないため、次の実行ではより健全なセッションで再試行されます。通常はそれで十分です。
任意の解像度で動画を取得したい場合は、--allow-sd を渡してください。
最終的に得られるもの
Rad 上: 動画ごとに1つのコンテンツアイテム。元のタイトル、説明、サムネイル、公開日、および要求した場合はアップロード順のプレイリストが含まれます。縦長動画は縦長のまま公開されます。動画は、アップロードが成功しただけでなく、Rad がトランスコードの完了を確認した場合にのみ完了としてマークされます。
ディスク上 (--workdir の下、デフォルトは ./rad-migrate-work):
rad-migrate-work/
├── state.db resume journal
└── media/
└── <channel-id>/
└── 2024-03-15 - Video Title [dQw4w9WgXcQ]/
├── video.mp4 the download
├── video.info.json full yt-dlp metadata
├── video.webp original thumbnail
└── thumbnail.jpg converted for upload--cleanup を追加すると、Rad が処理を確認した後、各フォルダを削除します。チャンネルは簡単に数十ギガバイトに達する可能性があります。
再開と2回目の実行
中断しても安全、再実行しても安全です。状態は一度に1動画ずつ進み、即座に書き込まれるため、クラッシュや Ctrl-C で失われるのは進行中の動画だけです。
再実行は冪等です。rad-migrate はローカルファイルを信頼するのではなく、Rad にチャンネル上に何があるかを尋ねるためです。したがって、別のマシンでローカル状態がまったくなくても、2回目の実行で同じ動画が2回公開されることはありません。
state.db はキャッシュであり、真実のソースではありません。削除すると、次の実行で再スキャンされます。それでも二重公開はされません。
既知の制限
これらはすべて現在の Rad API に起因するもので、docs/rad-api-notes.md に提案された修正とともに詳細に文書化されています。
制限 | 理由 |
重複排除はタイトル + 公開日で一致 | API にソース ID を記録するフィールドがないため、正確な一致は不可能 |
重複排除は最新100件のみ | コンテンツ一覧エンドポイントは100件に制限。rad-migrate は黙って過小報告するのではなく警告する |
削除は不可 | API は |
字幕はアップロードされない | ダウンロードしてローカルに保持される。Rad にはキャプションエンドポイントがない |
AI エージェントから使用
MCP サーバー
Claude Desktop、OpenClaw、Hermes、および MCP を話すその他のツールで動作します:
{
"mcpServers": {
"rad-migrate": {
"command": "rad-migrate",
"args": ["mcp"],
"env": { "RAD_API_KEY": "rad_..." }
}
}
}ツール: check_environment、plan_migration、start_migration、migration_status、
cancel_migration、retry_failed、install_potoken_provider。
start_migration はジョブ ID を即座に返し、バックグラウンドで実行されます。チャンネルは数時間かかる可能性があるため、ツール呼び出しがブロックされることはありません。エージェントは migration_status をポーリングします。これは CLI と同じジャーナルを読み取るため、あなたとエージェントは同じ実行を監視できます。
Claude Code
/plugin marketplace add little-core-labs/rad-migrate
/plugin install rad-migrateその後 /rad-migrate @yourchannel。
スクリプト
--json は単一の解析可能な結果を標準出力に置き、NDJSON の進行状況イベントを標準エラーにストリーミングするため、2つが混在することはありません:
rad-migrate plan @yourchannel --json | jq '.to_migrate'Docker
Node、ffmpeg、yt-dlp が同梱されているため、インストールするものはありません。
docker run --rm \
-e RAD_API_KEY \
-v "$PWD/work:/work" \
ghcr.io/little-core-labs/rad-migrate @yourchannel --workdir /workブラウザのクッキー抽出はコンテナ内では機能しないため、必要に応じて cookies.txt をマウントし、--cookies-file を使用してください。
設定
フラグは環境変数に勝り、環境変数は .env に勝り、.env はデフォルトに勝ります。.env.example を .env にコピーして開始してください。
変数 | 目的 |
| 必須。Rad TV API キー。 |
| 宛先チャンネル |
| ダウンロードと状態、デフォルト |
|
|
|
|
API キーが状態、ログ、または --json 出力に書き込まれることはありません。rad-migrate が出力するすべては、最初に編集フィルタを通過し、それを検証するテストがあります。SECURITY.md を参照してください。
トラブルシューティング
すべてが 360p でダウンロードされる。 rad-migrate doctor @yourchannel を実行してください。ほとんどの場合、JS ランタイムの欠落 (Node 22+ をインストール) または劣化したセッション (rad-migrate setup-potoken) が原因です。
「ロボットではないことを確認するためにサインインしてください」 YouTube がスロットリングしています。rad-migrate は自動的にバックオフし、動画ごとの API 呼び出しを減らします。続く場合は待ってください。スロットルはセッションごとで、解除されます。
Windows で Chrome のクッキーが読み取れない。 Chrome 127 以降、設計上不可能です。Firefox または --cookies-file を使用してください。
Rad でトランスコードが失敗した。 アップロードは成功しましたが、変換は失敗しました。rad-migrate retry @yourchannel で再試行してください。動画は Rad が処理を確認した場合にのみ完了として報告されるため、ここでの失敗は黙ってではなく可視化されます。
遅い。 意図的です。YouTube はセッションごとに抽出 API をスロットリングするため、rad-migrate はブロックに突入するのではなく、チャンネル全体を乗り切るためにペースを調整します。
詳細: skills/rad-migrate/references/troubleshooting.md。
所有権
このツールは、クリエイターが自分の作品を選択したプラットフォームに移行するために存在します。他の人の動画をダウンロードして再公開することは、著作権問題であり YouTube 利用規約の問題でもあり、それが目的ではありません。
ボット検出を一切介さずに自分のオリジナルを取得したい場合は、Google Takeout が YouTube がチャンネル用に保持しているソースファイルをエクスポートします。より遅く、より手動ですが、完全に承認されたパスです。
貢献
CONTRIBUTING.md を参照してください。
git clone https://github.com/little-core-labs/rad-migrate && cd rad-migrate
uv sync --dev
uv run pytestソースとデスティネーションは、プロトコルの背後にあります:
source/base.py と
dest/base.py — 新しいものは歓迎します。
ライセンス
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGives AI coding agents full control over a YouTube channel with 22 tools for channel management, videos, playlists, comments, search, analytics, thumbnails, and captions.272MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with token-optimized access to YouTube data, including video details, transcripts, channel statistics, trending videos, and search.572MIT
- FlicenseNot gradedqualityBmaintenanceEnables managing a YouTube channel through natural language: upload videos, edit metadata, set thumbnails, run pseudo A/B thumbnail tests, and pull analytics.
- AlicenseBqualityCmaintenanceProvides comprehensive access to YouTube Data, Analytics, and Reporting APIs, enabling AI assistants to manage videos, analyze performance, handle comments, and extract transcripts.40MIT
Related MCP Connectors
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/little-core-labs/rad-migrate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server