편집 프로그램 없이 스크립트로 릴스를 만듭니다. 저작권에 안 걸리는 소재를 고르는 것부터 음악을 붙이는 것까지, 순서대로 적었습니다. 그대로 따라 하면 돌아갑니다.
유튜브에는 업로더가 직접 거는 크리에이티브 커먼즈 저작자표시(CC BY) 라이선스가 있습니다. 검색 단계에서 이것만 남기면 소재 풀 자체가 안전해집니다.
유튜브 사이트에서도 됩니다. 검색 후 필터 → 기능 → 크리에이티브 커먼즈.
자동화하려면 Data API에 파라미터 하나만 더 붙이면 됩니다.
GET https://www.googleapis.com/youtube/v3/search
?part=snippet
&q=AI+automation
&type=video
&order=viewCount
&videoLicense=creativeCommon <-- 이 줄이 전부입니다
&publishedAfter=2026-01-01T00:00:00Z
&key=YOUR_KEY
검색 필터를 통과해도 개별 영상을 한 번 더 확인하세요. videos 엔드포인트의
status.license 값이 creativeCommon 인 것만 남깁니다.
GET .../videos?part=status,statistics&id=VIDEO_ID
→ status.license == "creativeCommon" 이면 통과
→ "youtube" 이면 표준 저작권. 버립니다.
영상을 다 보고 있을 수 없습니다. 자막을 받아서 어디를 쓸지 정합니다. 제목만 보고 내용을 단정하면 틀린 소개를 하게 됩니다.
pip install youtube-transcript-api
from youtube_transcript_api import YouTubeTranscriptApi
segs = list(YouTubeTranscriptApi().fetch(VIDEO_ID))
# segs[i].start / .duration / .text
자막 전문을 LLM에 넣고 "가장 보여줄 만한 5초 구간의 시작 시각"을 받아옵니다. 키워드 개수로 고르면 "타임스탬프는 아래에 있습니다" 같은 데가 뽑힙니다. 직접 해봤고 실패했습니다.
영상 전체를 받을 이유가 없습니다. 구간만 잘라서 받으면 5초짜리가 1초 만에 떨어집니다.
yt-dlp --no-playlist -f "b[ext=mp4][height<=720]/b" \
--download-sections "*180-185" \
-o "clip.%(ext)s" "https://www.youtube.com/watch?v=VIDEO_ID"
가로 영상을 세로에 억지로 꽉 채우면 얼굴이 잘립니다. 위쪽에 얹고 아래를 자막 자리로 비우는 게 낫습니다.
ffmpeg -i clip.mp4 -vf "scale=1080:-2,pad=1080:1920:0:430:color=#08080A" -an stage.mp4
| 항목 | 값 | 이유 |
|---|---|---|
| 해상도 | 1080 x 1920 | 릴스 규격 |
| 프레임 | 30fps | 파일이 가볍고 충분함 |
| 자막 위치 | 상단 안전영역 아래 | 하단은 앱 UI가 가림 |
| 컷 길이 | 0.6 ~ 1.0초 | 초반 3초를 넘기기 위해 |
| 한 화면 자막 | 1줄, 10자 이내 | 0.8초에 2줄은 못 읽음 |
그래서 저작권 없는 음원을 미리 모아둡니다. Openverse API에 license=cc0를 걸면
원본(Freesound 등)까지 자동으로 받을 수 있습니다.
GET https://api.openverse.org/v1/audio/?q=dark+electronic+loop&license=cc0
# 음량은 반드시 맞춥니다. 안 맞추면 어떤 건 안 들리고 어떤 건 찢어집니다.
ffmpeg -i bgm.mp3 -af "loudnorm=I=-14:TP=-1.5:LRA=11" -ar 48000 -ac 2 audio.wav
ffmpeg -framerate 30 -i frames/f%04d.jpg -i audio.wav \
-c:v libx264 -preset slow -crf 19 -pix_fmt yuv420p \
-c:a aac -b:a 192k -shortest -movflags +faststart out.mp4
-pix_fmt yuv420p 와 +faststart 는 빼면 안 됩니다.
없으면 어떤 기기에서 재생이 안 되거나 로딩이 느립니다.
클립은 편당 3~4개, 하나당 5초 이내로 쓰고 나머지는 자기 편집으로 채우는 게 안전합니다.
| 단계 | 도구 | 핵심 |
|---|---|---|
| 1 소재 | YouTube Data API | videoLicense=creativeCommon |
| 2 검증 | videos.status.license | 자칭이므로 채널도 확인 |
| 3 내용 | youtube-transcript-api | 제목 말고 자막으로 판단 |
| 4 클립 | yt-dlp | --download-sections |
| 5 화면 | ffmpeg | 1080x1920, 하단 비우기 |
| 6 소리 | Openverse CC0 | 원본 음소거 + loudnorm |
여기까지가 한 편입니다. 저희 기준으로 전 과정이 2분 20초 걸렸고, 추가 비용은 들지 않았습니다.