Communitygithub.com

비디오 다운로드 (yt-dlp)

yt-dlp를 사용하여 YouTube 및 기타 사이트에서 비디오나 오디오를 다운로드합니다. 포맷, 해상도 선택, 비디오/오디오 병합, 오디오 전용, 자막, 클립 및 재생 목록 다운로드를 지원합니다.

비디오 다운로드 (yt-dlp)란 무엇인가요?

이 스킬은 AI 에이전트가 yt-dlp를 사용하여 YouTube와 1,800여 개의 다른 사이트에서 비디오 또는 오디오를 다운로드할 수 있도록 합니다. 사용자가 URL에서 비디오/오디오를 다운로드, 저장, 또는 리핑해 달라고 요청할 때 사용됩니다. 주요 기능으로는 포맷 및 해상도 선택, 비디오와 오디오 병합, 오디오 전용 추출, 자막, 클립, 재생 목록 다운로드가 포함됩니다. 이 스킬은 사전 점검, 메인 명령어, 긴 다운로드 처리, 다양한 변형(오디오 전용, 최고 화질, 자막, 클립, 재생 목록), 남은 스트림 병합, 문제 해결 등 상세한 안내를 SKILL.md에 제공합니다. Apple Silicon Mac에서의 호환성 문제를 해결하는 방법과 yt-dlp 업데이트, 다양한 오류 대처법도 포함되어 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/danielhall/agent-skills/tree/HEAD/skills/media-video-download

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

비디오 다운로드 (yt-dlp)은(는) 무엇을 하나요?

YouTube와 약 1,800개의 다른 사이트에서 비디오 또는 오디오를 다운로드합니다.

사용자 자신의 용도로만 다운로드하세요. 타인의 저작권이 있는 저작물을 재배포하는 데 도움을 주지 마십시오.

기본값

  • 저장 위치: 비디오는 ~/Movies, 오디오는 ~/Music (사용자가 다른 폴더를 지정하지 않은 경우). Linux에서는 ~/Videos를 사용하십시오.
  • 포맷: 다른 요청이 없으면 H.264 비디오와 AAC 오디오가 포함된 MP4. QuickTime, Final Cut, Premiere 및 iOS에서 변환 없이 재생할 수 있습니다. AV1 및 VP9 파일은 훨씬 작지만 QuickTime Player에서 열리지 않는 경우가 많습니다.
  • 해상도: 지정되지 않은 경우 1080p.
  • 추가 사항: 메타데이터, 썸네일 및 챕터를 포함합니다.

사전 점검

yt-dlp --version             # 오래된 버전은 YouTube 오류의 가장 흔한 원인입니다
ffmpeg -version | head -1    # 실제로 실행 가능해야 하며, 존재만으로는 안 됩니다
ffprobe -version | head -1   # yt-dlp에도 필요하며, 종종 누락되는 부분입니다

which ffmpeg로 확인하지 마십시오. 이는 PATH에서 첫 번째 일치 항목만 보고하며, 잘못된 바이너리일 수 있습니다. Apple Silicon Mac에서는 /usr/local/bin에 남아 있는 Intel 빌드가 /opt/homebrew/bin의 Homebrew 빌드보다 먼저 올 수 있습니다. 그러면 yt-dlp가 모든 것을 다운로드한 후 병합 단계에서 bad CPU type in executable 또는 ffmpeg not found 오류와 함께 실패하고, 여전히 종료 코드 0으로 종료됩니다. 따라서 종료 코드를 신뢰하지 말고 출력에서 ERROR를 확인하십시오.

Apple Silicon에서는 올바른 경로를 명시적으로 전달하십시오:

yt-dlp --ffmpeg-location /opt/homebrew/bin ...

병합이 실패하면 분리된 비디오 및 오디오 파일(.fNNN)이 디스크에 남습니다. 남은 스트림 병합에 설명된 대로 ffmpeg를 사용하여 다시 다운로드할 필요 없이 결합하십시오.

시작하기 전에 다운로드할 내용을 확인하십시오:

yt-dlp --print "%(title)s | %(duration_string)s | %(uploader)s" "URL"
yt-dlp -F "URL"              # 사용 가능한 모든 포맷
df -h ~/Movies | tail -1     # 여유 공간

약 1GB 이상인 것은 시작하기 전에 사용자에게 제목, 길이 및 대략적인 크기를 알려주십시오.

메인 명령어

cd ~/Movies && yt-dlp \
  -f "bv*[height<=1080][vcodec^=avc1]+ba[ext=m4a]/bv*[height<=1080]+ba/b[height<=1080]" \
  --merge-output-format mp4 \
  --embed-metadata --embed-thumbnail --embed-chapters \
  -o "%(title)s [%(id)s].%(ext)s" \
  --newline \
  "URL"

Apple Silicon Mac에서는 --ffmpeg-location /opt/homebrew/bin을 추가하십시오.

포맷 문자열은 왼쪽에서 오른쪽으로 시도되는 폴백 목록입니다:

  1. bv*[height<=1080][vcodec^=avc1]+ba[ext=m4a]: 최대 1080p의 최고 H.264 비디오와 최고 M4A 오디오. 가장 호환성이 좋은 옵션입니다.
  2. bv*[height<=1080]+ba: 해당 높이에 H.264가 없는 사이트를 위한 모든 코덱.
  3. b[height<=1080]: 비디오와 오디오가 이미 결합된 단일 파일. 별도로 제공하지 않는 사이트용입니다.

다른 해상도를 위해 1080을 720, 1440 또는 2160으로 변경하거나, 사용 가능한 최고 해상도를 위해 높이 필터를 제거하십시오.

--newline은 각 진행 업데이트를 자체 줄에 출력하여 로그를 읽기 쉽게 만듭니다.

파일 이름의 [%(id)s]는 동일한 제목의 재업로드가 서로를 덮어쓰는 것을 방지하고 파일 출처를 기록합니다. 제목의 슬래시나 이모지가 문제를 일으키면 --restrict-filenames를 추가하십시오.

긴 다운로드

수백 MB가 넘는 것은 백그라운드에서 실행하고, 사용자에게 기다리게 하지 말고 제목과 예상 크기를 알려주십시오.

백그라운드 다운로드를 tail 또는 head로 파이프하지 마십시오. 출력을 버퍼링하여 다운로드가 끝날 때까지 로그가 비어 있습니다. 진행 상황을 확인하려면 -F의 크기와 증가하는 .part 파일을 비교하십시오:

ls -la ~/Movies/*.part

중단된 다운로드를 재개하려면 동일한 명령어를 다시 실행하십시오. yt-dlp가 .part 파일부터 계속 진행합니다.

변형

오디오 전용 (MP3):

cd ~/Music && yt-dlp -x --audio-format mp3 --audio-quality 0 \
  --embed-metadata --embed-thumbnail -o "%(title)s.%(ext)s" "URL"

YouTube의 원본 AAC 오디오를 유지하려면 --audio-format m4a를 사용하십시오. 더 빠르고 재인코딩으로 인한 품질 손실이 없습니다.

모든 코덱에서 최고 품질:

yt-dlp -f "bv*+ba/b" --merge-output-format mkv "URL"

MKV는 모든 코덱 조합을 담을 수 있습니다. QuickTime에서 열리지 않을 수 있다고 사용자에게 경고하십시오.

자막:

yt-dlp --write-subs --write-auto-subs --sub-langs "en.*" --embed-subs "URL"

--write-auto-subs는 YouTube의 자동 캡션을 포함합니다. 대본만 얻으려면 --skip-download를 추가하십시오.

비디오의 일부:

yt-dlp --download-sections "*00:10:00-00:15:30" "URL"

재생 목록 또는 채널:

yt-dlp -o "%(playlist)s/%(playlist_index)03d - %(title)s.%(ext)s" "URL"

재생 목록의 일부를 다운로드하려면 --playlist-items 1-10을 추가하십시오. 나중에 업데이트할 항목의 경우 --download-archive archive.txt를 추가하여 다시 실행할 때 이미 다운로드된 항목을 건너뛰도록 하십시오.

드라이 런: --simulate는 아무것도 다운로드하지 않고 형식과 파일 이름을 계산합니다.

남은 스트림 병합

병합 단계가 실패한 경우 다시 다운로드하지 않고 분리된 파일을 결합하십시오:

ffmpeg -i "NAME.f137.mp4" -i "NAME.f140.m4a" -c copy -movflags +faststart "NAME.mp4"

-c copy는 스트림을 재인코딩 없이 결합하므로 빠르고 품질 손실이 없습니다. +faststart는 파일의 시작 부분으로 인덱스를 이동하여 파일이 완전히 로드되기 전에 재생할 수 있도록 합니다. 결과물이 재생되면 .fNNN 파일을 삭제하십시오.

문제 해결

문제해결 방법
Requested format is not available-F를 실행하고 실제 목록에서 선택하십시오. 사이트가 해당 해상도나 코덱을 제공하지 않을 수 있습니다.
HTTP 403, "unable to extract" 또는 서명 오류yt-dlp가 오래되었습니다. 업데이트하십시오 (brew upgrade yt-dlp 또는 pip install -U yt-dlp). YouTube 오류 시 가장 먼저 확인하십시오.
"Sign in to confirm you're not a bot"--cookies-from-browser chrome (또는 safari, firefox)를 추가하십시오. 브라우저를 먼저 종료하십시오. Chrome은 쿠키 데이터베이스를 잠급니다.
전체 다운로드 후 ffmpeg not foundffmpeg가 없거나 잘못된 아키텍처입니다. 사전 점검을 확인한 후, 다시 다운로드하지 말고 남은 파일을 병합하십시오.
bad CPU type in executableIntel 바이너리가 Apple Silicon 바이너리 대신 사용되고 있습니다. --ffmpeg-location /opt/homebrew/bin을 전달하십시오.
병합 실패 또는 오디오 없음ffmpeg가 너무 오래되었거나 ffprobe가 없습니다. ffmpeg를 재설치하십시오.
다운로드 속도가 매우 느림--concurrent-fragments 4를 추가하십시오.
연령 제한 또는 비공개 비디오로그인된 브라우저와 함께 --cookies-from-browser를 사용하십시오.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬