【ITニュース解説】Turning YouTube Videos Into Obsidian Notes — and What Shipping the Plugin Taught Me
2026年09月14日に「Dev.to」が公開したITニュース「Turning YouTube Videos Into Obsidian Notes — and What Shipping the Plugin Taught Me」について初心者にもわかりやすく解説しています。
ITニュース概要
YouTube動画をObsidianノートにするプラグイン開発の経験談。動画の要約や章立てを自動生成する機能に加え、安全なユーザー認証、既存データを壊さずに更新する技術、Obsidianプラグイン開発の注意点、コミュニティ審査のポイントなど、システム開発の具体的な知見を学べる。
ITニュース解説
YouTube動画をメモアプリObsidianのノートに変換するプラグインの開発と、その過程で得られた知見についての解説である。多くの人が長時間の動画を視聴した後、その内容が記憶に残りにくい、後から見返そうと思ってもURLが羅列されているだけ、といった経験を持つことだろう。このプラグインは、そのような課題を解決し、動画の内容を自動的に整理されたノートとしてObsidianに保存することで、情報活用を容易にすることを目的としている。
このプラグインを使うと、YouTube動画のURLを一つ入力するだけで、詳細なノートが生成される。具体的には、動画の要点をまとめたTL;DRや主要な洞察が最初に表示される。ノートの最上部には動画の埋め込みプレイヤーがあり、ノート内のタイムスタンプをクリックすると動画が該当箇所から再生されるため、Obsidianから離れることなく内容を確認できる。動画のチャプターはタイムスタンプ付きの箇条書きとして整理され、クリックするとそのシーンにジャンプする。さらに、動画の要約、理解度を確認するためのクイズ、動画全体の文字起こし(トランスクリプト)もオプションで追加できる。これらの情報は折りたたみ可能な形式で表示され、ノートの冒頭にはタイトル、ソース、チャンネル名、言語、タグなどのメタデータが整理されて格納され、Obsidianのデータ管理機能であるDataviewで活用しやすい。また、ノートに関連するチャットパネルが右サイドバーに表示されたり、生成されたクイズを復習に役立つフラッシュカード形式のノートに変換する機能も備わっている。
このプラグイン開発では、いくつかの重要な設計判断がなされた。 まず、プラグイン自体がAPIキーのような秘匿情報を保持しないという方針が取られた。Obsidianプラグインはユーザーのローカル環境で動作するため、APIキーを埋め込むとセキュリティ上のリスクが生じる。また、ユーザー一人ひとりにAPIキーの入力を求めるのは手間がかかり、サポートの負担も大きい。そのため、プラグインは動画リンクとユーザーのアカウントトークンをサーバーに送信し、サーバーが処理した結果を受け取ってノートとして書き出す、というクライアント・サーバーモデルを採用した。この方式では、ユーザーはサーバー側でアカウントを持つ必要があり、その費用はユーザー負担となるが、プラグインの安全性を高め、開発者の運用負担を軽減できるというメリットがある。このアカウント費用については、ユーザーが混乱しないよう、プラグインのインストール前に明確に記載されている。
次に、サーバーとの安全な接続を確立するための「ハンドシェイク」の仕組みがある。ユーザーがプラグインの設定画面から「接続」を選択すると、ウェブブラウザが開き、認証ページへ誘導される。認証後、サーバーはアカウントトークンを生成し、obsidian://スキームを使った特別なURLでユーザーをObsidianアプリにリダイレクトする。この際、プラグインが生成した一時的なstate(状態)パラメータを使い、リダイレクトされてきたURLに含まれるstateと一致するかを確認することで、悪意のあるウェブサイトから不正なトークンが注入されるのを防いでいる。この数行のコードが、セキュリティ上の大きな穴を防ぐ役割を果たす。サーバー側ではトークンはハッシュ化されて保存され、クライアント側ではObsidianの設定ファイル内に保存されるが、これがVaultの同期対象となることもユーザーに明示されている。
さらに、ノートのフォーマットの一貫性を保つための工夫も重要である。このサービスは、ウェブサイトからも動画をObsidianノートとしてエクスポートできる機能を持っている。ウェブサイトとプラグインという二つの経路で同じ形式のMarkdownノートを生成する際、それぞれが独立してコードを持つと、時間の経過とともにノートの形式にずれが生じやすい。これを防ぐため、Markdown形式のノートを組み立てるロジックは、サーバー側の「ただ一つのエンドポイント」に集約されている。プラグインもウェブサイトも、この共通のサーバー関数を呼び出すことで、常に全く同じ形式のノートを生成できるようにしている。
ユーザーが既存のノートに追記した内容を保護することも、プラグインの重要な配慮点である。プラグインで生成されたノートを後から更新(リフレッシュ)する際、ユーザーが追加で書き込んだメモが消えてしまっては使い物にならない。このプラグインでは、サーバーが生成した内容は%% svt:start %%と%% svt:end %%という特殊なマーカーで囲まれており、ノートを更新する際は、このマーカーで区切られた部分だけを置き換える。これにより、ユーザーがマーカーの外に書き込んだ内容は常に安全に保たれる。ノートの冒頭にあるフロントマターについても同様で、プラグインが「所有している」キー(例:タイトルやソースなど)だけを上書きし、ユーザーが独自に追加したキーはそのまま残す仕組みになっている。これはObsidianのvault.processという機能を使って実現されており、ユーザーのデータを安全に扱うための重要な設計パターンである。
Obsidianプラグインの通信機能requestUrlに関する制約も考慮された。この関数はウェブセキュリティ上の制約であるCORSを回避できるため便利だが、データの「ストリーミング」には対応していない。そのため、サーバーからデータが少しずつ送られてきても、プラグインは全てのデータが揃うまで待機し、まとめて処理する必要がある。リアルタイムで文字が打ち込まれるような効果は得られないが、CORS問題を回避し、モバイル環境での動作を確保するために、このトレードオフが受け入れられた。
フラッシュカード機能の更新も慎重に設計されている。生成するクイズをフラッシュカード形式のノートに変換する際、既存のカードやユーザーが設定した学習スケジュール(復習の進行度)を壊さないよう、新しいクイズが追加された場合にのみ、不足しているカードだけをノートの末尾に追記する。学習スケジュールはユーザーにとって非常に重要なデータであるため、これを誤って上書きすることは、ユーザーを失うことにつながると認識されている。
プラグインをObsidianのコミュニティディレクトリに公開するプロセスでも、いくつかの重要な学びがあった。自動化されたレビューシステムによって、コードの品質や規約遵守がチェックされる。例えば、Obsidianのスタイルはstyles.cssファイルに記述すべきであり、コード内に直接スタイルを記述する「インラインスタイル」は禁止されている。また、プラグインの設定画面を実装する際には、新しいAPIを使う必要があり、それに合わせてプラグインがサポートするObsidianの最小バージョンを適切に設定しなければならない。ビルドの正当性を証明するための手順も必須であり、GitHub Actionsを使ったビルド証明が求められる。リリースタグとマニフェストファイルのバージョンが一致しているかも確認され、npm versionコマンドが自動で付けるvプレフィックスがObsidianでは不要なため、手動で削除する必要がある。
ObsidianのCSSに関する特定の動作も、開発中に時間を要した問題だった。例えば、ノートが表示される領域である.view-contentにはデフォルトでパディングが設定されており、カスタムビューのレイアウトが意図せず内側に寄って見える原因となる。これを解決するには、より具体的なCSSセレクタを使ってパディングを上書きする必要がある。また、デスクトップ版Obsidianのステータスバーは画面下部に固定表示され、右サイドバーの下部と重なることがあるため、カスタムUIを配置する際はステータスバーの高さ(27px)を考慮してスペースを空ける必要がある。
このプラグイン開発の経験を通じて得られた最も重要な教訓は、「マーカーと所有キー」というパターンだ。これは、プラグインが生成した内容を、ユーザーが追加した内容と安全に共存させながら更新するための強力な手法である。このパターンを用いることで、プラグインのコマンドを何度実行してもユーザーの書き込みが破壊されない、安全で信頼性の高いユーザー体験が提供できる。システムエンジニアを目指す上で、このようなユーザーデータを保護し、既存のコンテンツを損なわない設計思想は、非常に重要である。