世界を動かす技術を、日本語で。

YouTube動画を自動的にアーカイブするブラウザ拡張機能とローカルバックエンド

概要

Starchive はYouTube動画を自動でアーカイブするシステム。 Firefox拡張機能Go製バックエンド で構成。 動画は yt-dlpffmpeg でダウンロード・変換。 字幕対応 (英語のみ、一部制限あり)。 セットアップや利用方法も簡単。

Starchive: YouTube自動アーカイブシステム概要

  • Starchive は、YouTube動画を訪問時に自動保存するブラウザ拡張機能およびローカルバックエンドシステム
  • Firefox拡張機能 がYouTube動画ページを検出し、動画IDを抽出
  • Go製バックエンド が動画IDを受け取り、 yt-dlpffmpeg で動画をダウンロードおよびMOV形式(h264_videotoolboxエンコーディング)へ変換
  • 英語字幕(VTT形式) のダウンロードにも対応(ただしリトライ制御で一回のみ試行)
  • 動画ファイルはローカルの ./data/ ディレクトリに保存

コンポーネント詳細

  • バックエンド(Go)

    • HTTPサーバー(main.go)
      • ポート3009で稼働
      • エンドポイント「/」はヘルスチェック、「/youtube」はPOSTで動画ID受信・ダウンロード処理
    • 動画ダウンローダー(youtube.go)
      • yt-dlpffmpeg で動画取得・MOV変換
      • 字幕(英語・VTT形式) 対応(現在リトライ1回のみ)
  • ブラウザ拡張機能(Firefox)

    • manifest.json で権限と構成定義
    • content.js がYouTube動画ページ検出・動画ID抽出
    • background.js がcontent scriptとバックエンドAPIの通信担当
    • popup.html/js で手動取得用UI提供

動作フロー

  • YouTube動画ページ訪問時、content scriptが 動画ID をURLから抽出
  • 動画ID をbackground scriptに送信
  • background scriptが http://localhost:3009/youtube へPOSTリクエスト
  • Goバックエンドが動画IDを受信し、 yt-dlp で動画ダウンロード
  • ffmpeg でMOV形式に変換、./data/ディレクトリへ保存
  • 英語字幕も同時にダウンロード(制限あり)

セットアップ方法

  • Goバックエンド起動:
    • go run .コマンド実行
  • Firefox拡張機能を firefox/ ディレクトリから読み込み
  • 任意のYouTube動画ページ訪問で自動アーカイブ開始

依存関係

  • yt-dlp :YouTube動画ダウンロード
  • ffmpeg :動画変換・処理
  • Go :バックエンドサーバー実行環境

注意事項

  • Starchivehttps://www.starchive.io/ とは無関係
  • ローカル環境でのみ動作、外部サービスとの連携なし

Starchive はYouTube動画の個人アーカイブ用途に最適な自動化ツール。 シンプルな構成とセットアップで、動画保存を効率化。

Hackerたちの意見

動画は ./data/ ディレクトリに保存されて、ハードウェアアクセラレーションを使って ffmpeg で MOV 形式に変換されるんだって。トランスコード(痛い)されたのか、それともただ mov コンテナにリマックスされたのか?ちょっと調べてみないと。

関連するライン: https://github.com/andrewarrow/starchive/blob/136030c6ef11a5...

動画は再エンコードしないといけないんだよね。Apple QuickTime は YouTube の動画形式が好きじゃないから。でも音声はそのままコピーできる。うちの Mac のファンはハードウェアアクセラレーションのおかげで全然回らないから、バックグラウンドで動いてるのを忘れちゃう。

うん、再エンコードの部分までは賛成だったけど、yt-dlpはビットをそのまま維持するのに、なんでわざわざエンコードに時間をかけて質を落とす必要があるの?それに…ほんと、選べるフォーマットの中でMOVを選ぶなんて?!DivXやRealVideoを選ぶのと変わらないじゃん。

これには Tubearchivist とその拡張機能を使ってるよ。https://github.com/tubearchivist/browser-extension Tubearchivist の WebUI がすごく好きなんだ。

僕が求めてる主な機能は、いつも通り Firefox で YouTube を普通にブラウズできること。で、starchive が動いてるのを完全に忘れちゃうこと。そしたら、後で見たい動画がすでにダウンロードされてて、準備万端になってるのを見て驚くんだ。どの動画をダウンロードしたいかなんて分からないし、ボタンをクリックする必要もないのがいいんだよね。

いいけど…これって物をため込む行動にも聞こえるよね。何年もかけて保存したものを、数年後に捨てることになって、最初に保存したのが無駄だったって気づくことが多い。90年代には友達のお母さんが AMC の映画をビデオに撮ってたんだけど、300本以上のテープを持ってた。珍しいものもあったかもしれないけど、今はその映画が合法的にも違法的にも、しかもずっと良い画質で見れるからね。別の友達は1980年代のコンピューターマガジン(Byteとか)を全部取っておいて、30年以上引っ越しのたびにその重い箱を運んでたけど、彼がそれを開いたことなんて一度もないと思う。で、結局それらは The Archive に出てきて、やっと処分したんだ。ちなみに、僕もローカルストレージにいくつかの YouTube 動画を保存してるけど、見るたびに全部保存するのは、僕が個人的にやりすぎたことを思い出させるんだ。そういえば、最近その雑誌をため込んでた友達に会ったんだけど、ついに彼がストックを処分したことを確認したんだ。それで、今も保存してるものについて考えさせられた。実際、Amiga 時代の 3.5 インチフロッピーディスクが8枚くらい入った箱があるんだけど、Amiga を手に入れるか、Amiga エミュをダウンロードしてそのディスクを読み取るドライブを用意する可能性はほぼゼロだから、捨てるべきだよね。同様に、90年代のバックアップデータの CD-ROM の本も持ってるけど、その内容を見る気になることはほぼ0%だね。

公共の共有アーカイブに載せるのは、たぶん良い結果だと思うけどね。昼間のテレビを何百時間も録画した女性がいて、そのアーカイブには面白い歴史的な用途があるかもしれない?でも個人的なコピーにはあまり意味がない気がする。

別の友達は1980年代のコンピューターマガジン(Byteとか)を全部取っておいて、30年以上その重い箱を運んでた。IA が Microsoft Systems Journal(後の MSDN Magazine)の初期号を全部持ってるとは思えないから、これは役に立つかもね。(それに、そもそも誰が最初に IA に雑誌をアップしたと思う?)

デジタルホーディングは、実際のスペースをほとんど取らないよね。まだアクセスできたらいいのにと思うYouTubeの動画がいくつかある。

CD-ROMにバックアップデータを保存した本を持ってるんだけど、 > その内容を見ることはほぼ0%の確率でやらないだろうな。もっとありそうなシナリオは、君が亡くなった後に子供や孫、他の家族が君のものを整理して、君が共有したくなかったことを発見するってこと。これについてはよく考えるんだ。デジタルレガシープランがないからね。

時々見た古い動画を検索できたらいいな。あのレシピを見つけたり、聞いたかもしれない事実を引っ張り出したり。あるいは、後でプライベートにされたり完全に削除された曲を聴きたい時もある。YouTubeが動画を削除すると、プレイリストにタイトルすら残らないから、同じものを探すのがイライラするんだよね。

僕はその真逆で、使わないものはほとんど全部売ったり捨てたりするよ。そうすることで、家が散らからないだけじゃなく、心配事も減るんだ。僕の一般的なルールは、1年間使わなかったものは必要ないってこと。もちろん、消火器(使わないことを願ってる)やデジタル化した写真みたいな例外もあるけど、慎重に選別するよ。僕が一番長く持っていたのはLibranet Linux 3.0のCDセットで、Libra Computer Systemsで働いていた時に手伝ったリリースなんだ。数年前に、archive.orgに誰かがアップロードしているのを見て捨てたけど、60歳になってまたインストールしたい時にはできるからね。要するに、1年間使わないものは多分必要ないよ。

物理メディアは、メディアのコストとスペースの両方でずっと高いから、もっとたくさんホーディングできるよね。でも、これよりもう少し選択的なものがいいかも!

お知らせ: IAに取り込むためのコレクションや他のアーティファクトがあれば、そこに送るための合理的な送料は負担するよ。一定のサイズを超えると、彼らが梱包や発送の物流を扱ってくれる。https://help.archive.org/help/how-do-i-make-a-physical-donat... もしデジタル版を持っているなら、これを簡単にするためのツールもあるよ。https://github.com/jjjake/internetarchive それと、できる時に少し寄付するのを忘れないでね。https://archive.org/donate(提携はないけど、公共の利益が好きなんだ)

個人的には君に同意するよ。いろんなものを集めてたけど、結局全部捨てちゃったし、今は何を残すかすごく選んでる。デジタルのものもため込まないようにしてる。でも、君の例で言うと、そういうものが他の形で手に入るようになったからって、知り合いがそれを持ち続けたことに反論する理由にはならないよ。具体的な反論としてはマリオン・ストークスのことがあるね。

それはため込み行動だね。たまに自分もそういうことをするけど、後悔はないよ。オンラインで修正されたり、時には検閲された形式で存在するDVDやCDもあるし、今は存在する理由でキャンセルされたものもある。社会的な構造やキャンセルカルチャーとかね…。オリジナル版はどこかに存在するかもしれないけど、データの均衡のために自分のコレクションにあることに満足してる。オンラインの動画やポッドキャスト、音楽、映画でも同じことが起こる。制作した人たちのオリジナルの芸術作品を保存したいんだ。もしかしたらこの取り組みは自分だけかもしれないし、その点ではただのため込み屋かもしれないけど。アーティストが本来意図した形で映画を見たり、曲を聴いたりしたいんだ。もちろん、映画がリマスターされて、照明や音、解像度が改善される場合は別だけどね。AIがこれらの素晴らしい作品を未来にどう扱うのか、ポッドキャストをどう再構築するのか想像するのもためらうよ。オリジナルのアートは時の流れに消えてしまって、多くの人がそれを作るために注がれた血と汗と涙の結果を体験することはないだろうね。

僕は似たようなコンセプトだけど、目的が違うものを作ったよ。Plexを使ってiPadでスポンサーをブロックしながら動画を見たかったんだ。こういう自己ホスティングのソリューションを見つけたけど、他の方法では満足できなかった。一方で、loco.rsフレームワークを試してみたかったから、自分のソリューションを実装することにした。基本的に、yt-dlpがサポートしている多くのプラットフォームでチャンネルやプレイリストを追加できるし、スポンサーをブロックするために何をカットするか選べる。何日間その動画を保持するかも選べるよ(それ以上古い動画は自動的に削除される)。興味があれば、チェックしてみてね: https://github.com/Szpadel/LocalTube

ああ、これは大事だね。戻ってみたら消えてる動画がどれだけあることか!YouTubeは、食料品店が食べ物のアーカイブであるように、アーカイブなんだ。[1] 最初に見る価値があったなら、保存する価値もある。そうするための手間を減らすことは、多くの人にとって助けになるよね。(1: この引用、間違ってるかも。実際の引用と出典は何だっけ?)

へー、YouTubeが食料品店みたいに動画アーカイブだって言った人、誰だろう?それ、めっちゃいい表現だね。

取り戻したい特定の削除された動画があるんだけど(そのチャンネル全体が、プレ編集のサブスクライバーが欲しい誰かに買われたみたいで、全部削除されて、私には興味のないコンテンツに置き換えられちゃった)。そのチャンネルの新しいメールアドレスに問い合わせたけど、返事がなかった。取り戻すための実用的な方法、知ってる?

なんかこの話の目的がよくわからないんだけど、YouTubeってクリエイターが動画を削除しない限り、動画はずっと残ってるんじゃないの? 95%の確率でそうだと思うんだけど。まあ、ニッチなジャンルとか、動画が削除される可能性が高い場合には、100%確実にしたいっていうのはわかるけど、これって合ってるかな?何か見落としてる?

永遠に保存しようとしてるわけじゃないよ。単にローカルに保存して、他の動画のためにクリップを取りたいだけ。最終的にはFinal Cut Proに入力として使ってる。

私のやり方だと、ファイルをPlexのファイルシステムにダウンロードして、YouTubeアプリを使わずにテレビで見れるようにしてるよ。あと、ダウンロード後にスポンサーの部分はローカル版からカットしてる。さらに進んで、ErsatzTVを使ってローカル動画を回すテレビ「チャンネル」をスケジュールしてる。

誰かに自分のライブラリから本を取り除く権限を与える?あ、待って、たぶん君はそうしてるんだろうね。言いたいのは、君は一度やられてから行動するタイプか、ずっとやられ続けて文句を言うだけのタイプかってこと。

YouTubeで100本以上の長いプレイリストを作ったことがあるなら、動画が頻繁に消えることに気づくはずだし、どれが消えたのかもわからないよ。

ClaudeにsupadataのYTトランスクリプションとObsidian MCPへのアクセスを与えて、「永久ノート」フォーマットに変換してもらったら、YouTube中毒がかなり軽減されたよ。

え、無料プランあるの? https://supadata.ai/pricing いいね!

アーカイブする価値があるYouTube動画は、私のチャンネルのプレイリストに追加して、定期的にyt-dlpコマンドを使ってチャンネル全体をダウンロードしてる(すでにダウンロードしたものを把握できるから便利)。

それが僕の中で考えを引き起こしたんだ。もしバックエンドが動画を長期間保持していて、* 定期的にYouTubeをチェックして、アーカイブされた動画が削除されると、その動画IDを特定のNostrリレーで広告する * 削除された動画にユーザーがアクセスしたときに起動するyt用の別のブラウザ拡張機能を持つ * バックエンドがストリーミングを続けて、ビットコインのライトニング決済を行うことができるとしたら、無料のディスクスペースでお金を稼げるかもしれない。

データのアーカイブの話が出たけど、古い(もう存在しないけどアーカイブされた)ウェブページからも検索結果を返してくれる検索エンジンってある?Wayback Machineみたいなもので困ったのは、URLを思い出さなきゃいけないか、(今は壊れた)URLにリンクしている他のウェブページを見つけなきゃいけないことなんだよね。

あるよ: https://timetravel.mementoweb.org https://perma.cc https://arquivo.pt https://www.bl.uk

https://protoweb.org https://theoldnet.com