はじめに
最近Readwise Readerで集中して情報収集するようにしています。というのも、いろんなサイトのおすすめ機能が優秀すぎて、時間が溶けてる・・・・。ってことが頻発したからです。
ReadwiseReaderでブログの記事やTwitterのリストやyoutubeを購読することで、できるだけ集中して情報収集できるようになってきました。
その中で、youtubeのチャンネル登録を一括で実施する方法を見つけたのでシェアします
特にYouTube動画に関しては、単に視聴するだけでなく、トランスクリプト(字幕)をハイライトしたり、ノートを取ったりすることができるため、学習コンテンツとして活用するのに最適なのでおすすめです。
今回は特に、YouTubeの登録チャンネルを一括でReadwise Readerにインポートする方法に焦点を当てて解説します。
補足:なぜYouTubeチャンネルをReadwise Readerで管理するのか?
YouTubeチャンネルをReadwise Readerで管理するメリットは数多くあります:
- 全てのコンテンツを一箇所で管理:記事も動画も同じインターフェースで
- 集中モード:YouTubeの気が散るUIから解放され、コンテンツに集中
- トランスクリプトのハイライト機能:重要なポイントを文字として保存
- 高度な検索:内容に基づいた検索が可能
- ノート取り:学習しながらメモを残せる
- オフライン視聴:インターネット接続がなくても保存したコンテンツにアクセス可能
GitHubのjeb5によるブックマークレットを使った登録チャンネルの一括インポート方法
公式にも記述があるのですが、GitHubユーザーjeb5氏が開発したブックマークレットを使って、YouTubeの登録チャンネルを一括でReadwise Readerにインポートする方法を、ステップバイステップで解説します。 docs.readwise.io
ステップ1: ブックマークレットを準備する
まず、jeb5氏のGitHubリポジトリにある「YouTube-Subscriptions-RSS」のブックマークレットを設定します。
※適当なサイトをブックマークして、右クリックで編集からURLの部分にブックマークレットのスクリプトを入れる!
javascript:(function()%7B(async()%3D%3E%7Blet%20t%3Ddocument.createElement(%22dialog%22)%2Cn%3Ddocument.createElement(%22label%22)%2Cl%3Ddocument.createElement(%22progress%22)%3Bt.style.cssText%3D%22display%3A%20flex%3B%20flex-direction%3A%20column%3B%20gap%3A%2015px%3B%20padding%3A%2020px%3B%22%2Ct.appendChild(n)%2Ct.appendChild(l)%2Cdocument.querySelector(%22ytd-app%22).appendChild(t)%2Ct.showModal()%2Cn.innerText%3D%22Loading%20subscriptions...%22%3Blet%20o%3Ddocument.getElementById(%22content%22)%2Cr%3Bdo%20r%3Do.offsetHeight%2Cwindow.scrollBy(0%2C1e5)%2Cawait%20new%20Promise(t%3D%3EsetTimeout(t%2C500))%3Bwhile(null!%3Do.querySelector(%22%23spinnerContainer.active%22)%7C%7Co.offsetHeight%3Er)%3Btry%7Blet%20a%3D%5B...o.querySelectorAll(%22ytd-browse%3Anot(%5Bhidden%5D)%20%23main-link.channel-link%22)%5D%3Bl.max%3Da.length%2Cl.value%3D0%3Blet%20i%3D%5B%5D%2Cc%3Dwindow.chrome%3FtrustedTypes.createPolicy(%22m%22%2C%7BcreateHTML%3At%3D%3Et%7D)%3Anull%3Bfor(e%20of%20a)%7Bn.innerText%3D%60Fetching%20URLS...%20(%24%7Bl.value%7D%2F%24%7Bl.max%7D)%60%3Btry%7Blet%20s%3De.querySelector(%22yt-formatted-string.ytd-channel-name%22).innerText%2Cd%3Dawait%20fetch(e.href)%3Bif(!d.ok)%7Bconsole.error(%60Couldn't%20fetch%20channel%20page%20for%20%24%7Bs%7D%60)%3Bcontinue%7Dlet%20u%3Dawait%20d.text()%3Bwindow.chrome%26%26(u%3Dc.createHTML(u))%3Blet%20h%3DDocument.parseHTMLUnsafe(u)%2Cp%3Dh.querySelectorAll(%22body%20%3E%20link%5Brel%3Dalternate%5D%2C%20body%20%3E%20link%5Brel%3Dcanonical%5D%22)%2Cm%3D%5B...p%5D.map(t%3D%3Et.href.match(%22%2Fchannel%2F(%5Ba-zA-Z0-9_-%5D%2B%3F)%24%22)).find(t%3D%3Enull!%3Dt)%3Bif(null%3D%3Dm)%7Bconsole.error(%60Couldn't%20find%20channel%20id%20for%20%24%7Bs%7D%60)%3Bcontinue%7Di.push(%5B%60https%3A%2F%2Fwww.youtube.com%2Ffeeds%2Fvideos.xml%3Fchannel_id%3D%24%7Bm%5B1%5D%7D%60%2Cs%2Ce.href%5D)%7Dfinally%7Bl.value%2B%2B%2Cl.replaceWith(l)%7D%7D0%3D%3Da.length%26%26alert(%22Couldn't%20find%20any%20subscriptions%22)%3Blet%20f%3Da.length-i.length%3Bf%3E0%26%26alert(%60%24%7Bf%7D%20channel%24%7Bf%3E1%3F%22s%22%3A%22%22%7D%20couldn't%20be%20fetched.%20Check%20the%20console%20for%20more%20info.%60)%3Blet%20y%3Dt%3D%3Et.replace(%2F%5B%3C%3E%26'%22%5D%2Fg%2Ct%3D%3E(%7B%22%3C%22%3A%22%26lt%3B%22%2C%22%3E%22%3A%22%26gt%3B%22%2C%22%26%22%3A%22%26amp%3B%22%2C%22'%22%3A%22%26apos%3B%22%2C'%22'%3A%22%26quot%3B%22%7D)%5Bt%5D)%3Bif(i.length%3E0)%7Bconsole.log(i.map((%5Bt%5D)%3D%3Et).join(%22%5Cn%22))%3Blet%20g%3D%60%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Copml%20version%3D%221.0%22%3E%0A%09%3Chead%3E%0A%09%09%3Ctitle%3EYouTube%20Subscriptions%20as%20RSS%3C%2Ftitle%3E%0A%09%3C%2Fhead%3E%0A%09%3Cbody%3E%0A%09%09%3Coutline%20text%3D%22YouTube%20Subscriptions%22%3E%24%7Bi.map((%5Bt%2Cn%2Cl%5D)%3D%3E%60%0A%09%09%09%3Coutline%20type%3D%22rss%22%20text%3D%22%24%7By(n)%7D%22%20title%3D%22%24%7By(n)%7D%22%20xmlUrl%3D%22%24%7Bt%7D%22%20htmlUrl%3D%22%24%7Bl%7D%22%2F%3E%60).join(%22%22)%7D%0A%09%09%3C%2Foutline%3E%0A%09%3C%2Fbody%3E%0A%3C%2Fopml%3E%60%2Cb%3Dwindow.URL.createObjectURL(new%20Blob(%5Bg%5D%2C%7Btype%3A%22text%2Fplain%22%7D))%2Cx%3Ddocument.createElement(%22a%22)%3Bx.setAttribute(%22download%22%2C%22youtube_subs.opml%22)%2Cx.setAttribute(%22href%22%2Cb)%2Cx.dataset.downloadurl%3D%60text%2Fplain%3Ayoutube_subs.opml%3A%24%7Bb%7D%60%2Cx.click()%7D%7Dcatch(%24)%7Bconsole.error(%24)%2Calert(%22Something%20went%20wrong.%20Check%20the%20console%20for%20more%20info.%22)%7Dfinally%7Bt.close()%2Ct.remove()%7D%7D)()%3B%7D)()%3B
ステップ2: YouTubeの登録チャンネル一覧ページを開く
- YouTubeにログインします
- https://www.youtube.com/feed/channels にアクセスします
- 重要: チャンネルが多い場合は、全てのチャンネルが表示されるようにページを下までスクロールしてください
ステップ3: ブックマークレットを実行する
- 先ほど作成したブックマークをクリックします
- 進行状況を示すダイアログが表示され、各チャンネルの情報を取得します
- 処理が完了すると、「youtube_subs.opml」というファイルが自動的にダウンロードされます
ステップ4: OPMLファイルをReadwise Readerにインポートする
- Readwise Readerにログインします
- 以下のいずれかの方法でOPMLファイルをインポートします:Preferenceから
- OPMLファイルをブラウザウィンドウにドラッグ&ドロップ
- キーボードショートカット「U」を押してアップロードダイアログを開き、ファイルを選択
これで完了です。すべてのYouTubeチャンネル登録がReadwise Readerのフィードに追加され、各チャンネルの最新5件の動画が表示されます。その後、新しい動画が投稿されると自動的にフィードに表示されるようになります。
トラブルシューティング
チャンネルが多すぎる場合
チャンネル登録数が多い場合(特に数百以上)、すべてのチャンネル情報を取得するのに時間がかかることがあります。その場合は:
- YouTubeのチャンネル一覧ページを開いた後、手動でページ最下部までスクロールし、すべてのチャンネルが読み込まれていることを確認してください
- ブックマークレットを実行する前に、ブラウザのキャッシュをクリアするとスムーズに処理できる場合があります
ブックマークレットが機能しない場合
ブックマークレットが正常に動作しない場合は、別の方法を試すことができます:
- ブラウザのJavaScriptコンソールを開く(Chrome: F12キー → Consoleタブ)
- GitHubから直接JavaScriptコードをコピーしてコンソールに貼り付け、実行する
Readwise ReaderでのYouTube動画視聴のメリット
Readwise Readerを使ってYouTube動画を視聴すると、以下のような機能が利用できるので便利です:
動画の再生と操作
- スペースキーで再生/一時停止
- カンマ(,)とピリオド(.)キーで再生速度の変更
- 左右の矢印キーで15秒ずつスキップ
トランスクリプト(字幕)機能
- 動画と同期したトランスクリプトを表示
- 自動スクロール機能(shift + enterで切り替え)
- ハイライト機能で重要な部分をマーク
- ノート機能でメモを残せる
強化トランスクリプト
動画制作者がアップロードした字幕がない場合、YouTubeの自動生成字幕が使用されますが、句読点の欠如や段落の途中での改行など、構文やフォーマットの問題がよくあります。Readwise Readerの強化トランスクリプト機能を使用すると、これらの問題を修正できます:
- ウェブでは左上のドキュメントアイコンをクリック
- モバイルでは右下の「...」メニューから「強化トランスクリプトを表示」を選択
言語の切り替え
動画の字幕言語を変更するには:
- 左上の地球アイコンをクリック
- 希望する言語を選択(元の動画で利用可能な言語に限ります)
単一のYouTubeチャンネルを登録する方法
すべてのチャンネルをインポートする代わりに、特定のチャンネルだけをReadwise Readerに追加したい場合:
- 追加したいYouTubeチャンネルのURLをコピー
- Readwise Readerでショートカット「Shift + A」を押して「Add Feed」ダイアログを開く
- コピーしたURLを貼り付けて確定
これにより、最新5件の動画がフィードに追加され、新しい動画が投稿されると自動的にフィードに表示されるようになります。
まとめ
YouTubeチャンネル登録をReadwise Readerにインポートすることで、情報収集と学習プロセスを効率化できます。GitHubのjeb5氏によるブックマークレットを使えば、わずか数クリックですべての登録チャンネルを一括インポートでき、さらにReadwise Readerの充実した機能でコンテンツを最大限に活用できます。
ぜひこの方法を試して、情報管理をアップデートしましょう
関連タグ: #ReadwiseReader #YouTube #情報管理 #生産性向上 #学習ツール #RSSフィード #OPML #コンテンツ管理