본문으로 건너뛰기
yt-dlp

X(Twitter)용 yt-dlp 명령어 생성기

X의 영상용 yt-dlp 명령어를 만듭니다. 파일 이름은 예측하기 쉽고, 민감한 콘텐츠에 필요한 옵션도 붙습니다.

선택 사항입니다. 비워 두면 명령어가 URL 로 끝나므로 나중에 직접 채우면 됩니다.

만들어진 명령어

yt-dlp --merge-output-format mp4 --no-playlist -o '%(uploader_id)s - %(id)s.%(ext)s' https://x.com/user/status/1234567890
기본

오디오만 고르면 소리 트랙만 뽑고 영상은 버립니다.

영상과 화질

높이 상한을 정합니다. yt-dlp는 그 상한 이하에서 가장 좋은 트랙을 고릅니다.

분리된 영상과 오디오 트랙을 병합해 담을 파일 형식입니다.

고급 옵션 (3)

화질 선택을 대체합니다. format 문법을 이미 아는 분을 위한 항목입니다.

재인코딩 없이 다시 포장만 합니다. 빠르고 손실이 없습니다.

영상을 다시 인코딩합니다. 느리고 손실이 있습니다 —— remux로 안 될 때만 쓰세요.

오디오

오디오를 변환할 대상 형식입니다.

VBR은 용량 대비 품질이 가장 좋고, 고정 bitrate는 용량을 예상하기 쉽습니다.

자막

삽입은 자막을 영상 안에 넣고, 저장은 옆에 별도의 .srt 파일을 만듭니다.

쉼표로 구분합니다. 사용 가능한 모든 언어를 원하면 all 이라고 쓰세요.

재생목록과 채널

URL이 영상과 재생목록에 동시에 속할 때 어떻게 할지 정합니다.

범위와 목록 모두 됩니다. 예를 들어 1-10,15, 또는 끝에서부터 하나씩 건너뛰는 -5::2.

고급 옵션 (1)

이미 내려받은 항목을 적어 두어 다시 실행할 때 건너뜁니다. 채널을 계속 동기화하는 방법이 바로 이것입니다.

구간과 챕터
고급 옵션 (2)

*00:01:30-00:03:00 같은 시간 범위, 또는 챕터 이름입니다. 앞의 별표는 시각이라는 뜻입니다.

메타데이터와 표지
고급 옵션 (3)
SponsorBlock

SponsorBlock 데이터를 바탕으로 커뮤니티가 표시한 구간을 파일에서 잘라냅니다.

고급 옵션 (1)

구간은 남기고 표시만 해서 직접 건너뛸 수 있게 합니다.

파일과 폴더

필드 이름은 %(...)s 안에 씁니다. 슬래시는 폴더를 만듭니다.

고급 옵션 (4)

파일을 저장할 위치입니다. 위 템플릿과 조합하면 하위 폴더도 만들 수 있습니다.

파일 이름의 최대 길이(문자 수)입니다.

필터
고급 옵션 (5)

YYYYMMDD, 또는 now-1month 같은 상대 날짜.

YYYYMMDD, 또는 상대 날짜.

이보다 작은 것은 건너뜁니다. 5M, 500K 같은 표기를 씁니다.

이보다 큰 것은 건너뜁니다.

멈추기 전까지 내려받을 파일 수입니다.

네트워크

예를 들어 2M 또는 500K. 남은 대역폭을 다른 일에 써야 할 때 유용합니다.

고급 옵션 (5)

조각으로 나뉜 트랙을 빠르게 합니다. 4 정도로 시작하면 무리가 없습니다.

실패한 조각을 몇 번 다시 시도할지. infinite 도 쓸 수 있습니다.

HTTP, HTTPS 또는 SOCKS proxy 주소입니다.

요청이 실제 브라우저에서 온 것처럼 보이게 합니다. 갑자기 403이 날 때 흔히 쓰는 해법입니다.

로그인과 cookies

로그인된 세션을 직접 읽습니다. 비공개, 연령 제한, 멤버 전용 콘텐츠에는 필요합니다.

고급 옵션 (1)

브라우저에서 내보낸 Netscape 형식 cookies.txt 파일입니다.

라이브 방송
고급 옵션 (2)

예정된 방송이 시작될 때까지 계속 확인합니다. MIN-MAX는 확인 간격(초)입니다.

우회 방법
고급 옵션 (3)

구식이며 --add-headers 로 대체되었습니다. 오래된 안내 글이 아직 많이 쓰기 때문에 남겨 두었습니다.

구식이며 --add-headers 로 대체되었습니다.

사이트별 전용 옵션입니다. 예를 들어 youtube:player_client=web.

출력과 디버그
고급 옵션 (2)
초기화

X에서 주의할 점

x.com과 twitter.com 주소 모두 됩니다. X에서 GIF라고 부르는 것은 실제로는 짧은 MP4 영상이라서 다른 영상처럼 내려받힙니다. 진짜 GIF가 필요하면 나중에 변환하세요.

민감한 콘텐츠 게시물은 해당 설정을 켠 로그인 세션이 필요합니다. 기본 템플릿은 작성자와 게시물 id로 이름을 붙이므로, 그런 파일이 가득한 폴더도 살펴보기 좋습니다.

X는 API 표면을 여러 번 바꾸었고, 실용적인 귀결은 extractor 수정이 며칠 안에 yt-dlp 갱신으로 도착한다는 것입니다 —— 몇 주만 지나도 낡은 설치가 바로 "X가 망가졌다"는 보고의 대부분이 사는 곳입니다. 디버깅 전에 먼저 yt-dlp -U 로 갱신하세요. 게스트 접근은 오르락내리락합니다. 거둬들여질 때는 cookies를 얹은 로그인 세션이 동작하는 길이고, 그것은 민감한 콘텐츠로 가는 유일한 길이기도 합니다.

스레드와 인용 게시물은 URL이 헷갈리기 시작하는 곳입니다. 영상을 담은 트윗은 그것을 포함하고, 프로필 미디어 탭에 있는 같은 영상은 별개 항목입니다. 계정 전체라면, 미디어 탭 URL이 미디어가 붙은 게시물 전부를 페이지 단위로 가져옵니다. 기록 파일과 오류가 나도 계속이 있으면, 활동 중인 계정이 필연적으로 쌓아 두는 삭제된 게시물도 처리됩니다. 검색 URL 내려받기는 여기서 의도적으로 지원하지 않습니다. 결과는 요청마다 흔들리고, 움직이는 검색에 대한 기록은 무의미합니다.

X는 영상을 HLS fragment로 제공하고 대부분의 경우 MP4 폴백이 붙으므로, 병합은 일상이고 가장 먼저 확인할 의존성은 ffmpeg입니다. "GIF" 게시물은 알아 둘 만한 예외입니다: 다른 것과 마찬가지로 MP4로 도착하고, 진짜 GIF로의 변환은 그다음 ffmpeg의 일이지 yt-dlp의 일이 아닙니다 —— 애초에 반복 재생되는 WebM이 보낸 이의 의도에 더 가까운 경우가 많습니다.

연령 제한과 민감한 게시물이 단단한 벽입니다. 설정은 계정 쪽에 있고, 명령어 쪽에 있지 않습니다. 브라우저에서 한 번 로그인하고, 민감한 콘텐츠 설정을 켜고, cookies를 넘겨 주면 됩니다 —— cookies 없는 우회로는 존재하지 않습니다. X는 세션을 서버 쪽에서 확인하기 때문입니다. 삭제된 게시물은 어디서나 같습니다: 사라진 것은 사라졌고, 한때 복제본을 보관하던 미러는 여러 해 전에 닫혔습니다.

자주 묻는 질문

X의 연령 제한 게시물이 실패하는 이유는?
민감한 콘텐츠에는 로그인 세션이 필요합니다. 그 설정을 켠 계정으로 --cookies-from-browser 를 쓰세요.
X에서 GIF를 받으려면?
GIF가 아니라 MP4 영상이며, 다른 영상과 똑같이 내려받힙니다. 진짜 GIF가 필요하면 나중에 변환하세요.
X에서 영상 화질을 고를 수 있나요?
고를 수 있습니다. X는 여러 판본을 제공합니다. 화질 선택으로 높이를 제한하거나 먼저 -F 로 목록을 보세요.