yt-fts
、yt-dlp を使用して YouTube チャンネルの字幕をすべて取得し、コマンド ラインから検索可能な sqlite データベースにロードするコマンド ライン プログラムです。これにより、特定のキーワードまたはフレーズについてチャンネルをクエリすることができ、キーワードを含むビデオへのタイムスタンプ付きの YouTube URL が生成されます。
また、chromadb を使用した OpenAI 埋め込み API によるセマンティック検索もサポートしています。
ピップ
pip install yt-fts
download
チャンネルの字幕をダウンロードします。
チャネル URL を引数として受け取ります。 --jobs
フラグを使用して、ダウンロードを並列化するジョブの数を指定します。 --cookies-from-browser
使用すると、リクエストでブラウザからの Cookie を使用できます。これは、サインインを要求するエラーが発生した場合に役に立ちます。 update
コマンドを数回実行して、徐々により多くのビデオをデータベース。
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
保存されているチャンネルを一覧表示します。
チャネル名の横にある (ss) は、チャネルでセマンティック検索が有効になっていることを示します。
yt-fts list
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID ┃ Name ┃ Count ┃ Channel ID ┃
┡━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ ChessPage1 (ss) │ 19 │ UCO2QPmnJFjdvJ6ch-pe27dQ │
│ 2 │ 3Blue1Brown │ 127 │ UCYO_jab_esuFRV4b17AJtAw │
│ 3 │ george hotz archive │ 410 │ UCwgKmJM4ZJQRJ-U5NjvR2dg │
│ 4 │ The Tim Dillon Show │ 288 │ UC4woSp8ITBoYDmjkukhEhxg │
│ 5 │ Academy of Ideas (ss) │ 190 │ UCiRiQGCHGjDLT9FQXFW0I3A │
└────┴───────────────────────┴───────┴──────────────────────────┘
search
(全文検索)保存されたチャネル内の文字列を全文検索します。
# search in all channels
yt-fts search " [search query] "
# search in channel
yt-fts search " [search query] " --channel " [channel name or id] "
# search in specific video
yt-fts search " [search query] " --video-id " [video id] "
# limit results
yt-fts search " [search query] " --limit " [number of results] " --channel " [channel name or id] "
# export results to csv
yt-fts search " [search query] " --export --channel " [channel name or id] "
高度な検索構文:
検索文字列は、sqlite 拡張クエリ構文をサポートしています。これには、単語の一部を一致させるために使用できる接頭辞クエリなどが含まれます。
# AND search
yt-fts search " knife AND Malibu " --channel " The Tim Dillon Show "
# OR SEARCH
yt-fts search " knife OR Malibu " --channel " The Tim Dillon Show "
# wild cards
yt-fts search " rea* kni* Mali* " --channel " The Tim Dillon Show "
mbeddings
コマンドを使用して、チャネルのセマンティック検索を有効にできます。これには、環境変数OPENAI_API_KEY
に設定された OpenAI API キーが必要です。または、 --openai-api-key
フラグを使用してキーを渡すことができます。
embeddings
指定されたチャネルの OpenAI エンベディングを取得します
# make sure openAI key is set
# export OPENAI_API_KEY="[yourOpenAIKey]"
yt-fts embeddings --channel " 3Blue1Brown "
# specify time interval in seconds to split text by default is 30
# the larger the interval the more accurate the llm response
# but semantic search will have more text for you to read.
yt-fts embeddings --interval 60 --channel " 3Blue1Brown "
埋め込みが保存されると、チャンネルをリストするときにチャンネル名の横に(ss)
表示され、そのチャンネルに対してvsearch
コマンドを使用できるようになります。
llm
(チャットボット)最初のプロンプトのセマンティック検索結果を質問に答えるためのコンテキストとして使用して、 gpt-4o
OpenAI モデルとの対話型チャット セッションを開始します。質問に答えられない場合は、会話に基づいて対象を絞ったクエリを実行してコンテキストを更新するメカニズムを備えています。チャネルではセマンティック検索が有効になっている必要があります。
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
YouTube ビデオのトランスクリプトを要約し、タイムスタンプ付きの URL を提供します。引数として有効な YouTube ビデオ URL またはビデオ ID が必要です。トランスクリプトがデータベースにない場合は、それをスクレイピングしようとします。
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
出力:
In this video, 3Blue1Brown explores how large language models (LLMs) like GPT-3
might store facts within their vast...
1 Introduction to Fact Storage in LLMs:
• The video starts by questioning how LLMs store specific facts and
introduces the idea that these facts might be stored in a particular part of the
network known as multi-layer perceptrons (MLPs).
• 0:00
2 Overview of Transformers and MLPs:
• Provides a refresher on transformers and explains that the video will focus
vsearch
(セマンティック検索) vsearch
は「ベクトル検索」です。これには、 embeddings
を含むチャネルのセマンティック検索を有効にする必要があります。 search
と同じオプションがありますが、出力は検索文字列との類似性によって並べ替えられ、デフォルトの返される制限は 10 です。
# search by channel name
yt-fts vsearch " [search query] " --channel " [channel name or id] "
# search in specific video
yt-fts vsearch " [search query] " --video-id " [video id] "
# limit results
yt-fts vsearch " [search query] " --limit " [number of results] " --channel " [channel name or id] "
# export results to csv
yt-fts vsearch " [search query] " --export --channel " [channel name or id] "
検索結果をエクスポートする:
search
コマンドとvsearch
コマンドの両方で、 --export
フラグを使用して結果を csv ファイルにエクスポートできます。そして、結果が現在のディレクトリの csv ファイルに保存されます。
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
チャンネルの削除: delete
コマンドを使用してチャンネルを削除できます。
yt-fts delete --channel " 3Blue1Brown "
チャネルを更新する: update コマンドは現在、全文検索に対してのみ機能し、セマンティック検索の埋め込みは更新されません。
yt-fts update --channel " 3Blue1Brown "
チャンネルのトランスクリプトをすべてエクスポートします。
このコマンドは、指定されたチャンネルの YouTube チャンネル ID を持つディレクトリを現在の作業ディレクトリに作成します。
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "