yt-fts
는 yt-dlp를 사용하여 모든 YouTube 채널 자막을 스크랩하고 명령줄에서 검색 가능한 sqlite 데이터베이스에 로드하는 명령줄 프로그램입니다. 특정 키워드나 문구에 대해 채널을 쿼리할 수 있으며 키워드가 포함된 비디오에 대한 타임스탬프가 있는 YouTube URL을 생성합니다.
또한 Chromdb를 사용하는 OpenAI 임베딩 API를 통해 의미 검색을 지원합니다.
씨
pip install yt-fts
download
채널의 자막을 다운로드하세요.
채널 URL을 인수로 사용합니다. --jobs
플래그를 사용하여 다운로드를 병렬화할 작업 수를 지정합니다. --cookies-from-browser
사용하여 요청 시 브라우저의 쿠키를 사용하면 로그인을 요청하는 오류가 발생하는 경우 도움이 됩니다. 또한 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
타임스탬프가 표시된 URL을 제공하여 YouTube 동영상 대본을 요약합니다. 인수로 유효한 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 "
채널 업데이트: 업데이트 명령은 현재 전체 텍스트 검색에만 작동하며 의미 체계 검색 임베딩을 업데이트하지 않습니다.
yt-fts update --channel " 3Blue1Brown "
채널의 모든 성적표 내보내기:
이 명령은 지정된 채널의 YouTube 채널 ID를 사용하여 현재 작업 디렉터리에 디렉터리를 생성합니다.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "