YouTube Data API v3
Python
코드 공개
유튜브 Data API 연동 코드 전체 공개
— 채널 수집부터 통계까지
API 키 발급부터 실제 데이터 수집까지, 따라 하기만 하면 됩니다.
📌 시리즈 2편입니다
1편에서 전체 시스템 구조를 설명했습니다. 이번 편은 YouTube Data API 연동 코드를 전체 공개합니다.
1편에서 전체 시스템 구조를 설명했습니다. 이번 편은 YouTube Data API 연동 코드를 전체 공개합니다.
YouTube Data API v3 준비
API 키 발급 방법
1
Google Cloud Console 접속 → 새 프로젝트 생성
2
좌측 메뉴 → API 및 서비스 → 라이브러리 → "YouTube Data API v3" 검색 → 사용 설정
3
사용자 인증 정보 → API 키 만들기 → 생성된 키 복사
4
프로젝트 루트의
.env 파일에 추가:YOUTUBE_API_KEY=여기에_붙여넣기
⚠️ 할당량 주의
YouTube Data API는 하루 10,000 units 무료 제공됩니다. 검색 1회 = 100 units. 무분별하게 호출하면 하루 만에 소진됩니다.
YouTube Data API는 하루 10,000 units 무료 제공됩니다. 검색 1회 = 100 units. 무분별하게 호출하면 하루 만에 소진됩니다.
할당량 절약 전략: 채널 목록 고정 관리
매주 "어떤 채널이 탑 채널인지" 검색하는 것 자체가 할당량을 낭비합니다. 그래서 저는 채널 목록을 코드에 하드코딩하고, 매주 해당 채널의 최신 영상만 가져오는 방식을 택했습니다.
# tools/fetch_tools.py NICHE_CHANNELS = { "수익성 브랜드": [ # 👇 채널 ID 찾는 법: 채널 페이지 → 소개 탭 → '채널 공유' → 채널 ID 복사 # URL이 youtube.com/channel/UCxxx 형태라면 UCxxx 부분이 채널 ID입니다 "UC여기에_채널ID_붙여넣기", "UC여기에_채널ID_붙여넣기", ], "콘텐츠 수익화": [ "UC여기에_채널ID_붙여넣기", "UC여기에_채널ID_붙여넣기", ], "1인 사업 런칭": [ "UC여기에_채널ID_붙여넣기", "UC여기에_채널ID_붙여넣기", ], }
채널 ID 확인하는 방법
채널 페이지 → 소개 → 채널 공유 → 채널 ID 복사
또는 URL이
채널 페이지 → 소개 → 채널 공유 → 채널 ID 복사
또는 URL이
youtube.com/channel/UC... 형태라면 UC... 부분이 채널 ID입니다.
실제 코드 전체 공개
1. 채널 인기 영상 수집
import os from googleapiclient.discovery import build def get_popular_videos(channel_id: str, max_results: int = 10) -> list[dict]: """채널의 최근 인기 영상 목록 조회""" youtube = build("youtube", "v3", developerKey=os.environ["YOUTUBE_API_KEY"]) # 채널의 업로드 재생목록 ID 조회 ch_resp = youtube.channels().list( part="contentDetails", id=channel_id ).execute() uploads_id = ( ch_resp["items"][0]["contentDetails"] ["relatedPlaylists"]["uploads"] ) # 재생목록에서 최근 영상 ID 수집 pl_resp = youtube.playlistItems().list( part="contentDetails", playlistId=uploads_id, maxResults=max_results ).execute() video_ids = [ item["contentDetails"]["videoId"] for item in pl_resp["items"] ] return get_video_stats(video_ids)
2. 영상 통계 수집
def get_video_stats(video_ids: list[str]) -> list[dict]: """조회수·좋아요·댓글 등 영상 통계 수집""" youtube = build("youtube", "v3", developerKey=os.environ["YOUTUBE_API_KEY"]) resp = youtube.videos().list( part="snippet,statistics", id=",".join(video_ids) ).execute() videos = [] for item in resp.get("items", []): stats = item.get("statistics", {}) snippet = item["snippet"] videos.append({ "video_id": item["id"], "title": snippet["title"], "channel_title": snippet["channelTitle"], "published_at": snippet["publishedAt"], "tags": snippet.get("tags", []), "view_count": int(stats.get("viewCount", 0)), "like_count": int(stats.get("likeCount", 0)), "comment_count": int(stats.get("commentCount", 0)), }) return sorted(videos, key=lambda v: v["view_count"], reverse=True)
3. FetchAgent — 전체 분야 수집 조율
# agents/fetch_agent.py from tools.fetch_tools import NICHE_CHANNELS, get_popular_videos class FetchAgent: def run(self) -> dict[str, list[dict]]: print("[FetchAgent] YouTube 데이터 수집 시작") niche_data = {} for niche, channel_ids in NICHE_CHANNELS.items(): all_videos = [] for ch_id in channel_ids: videos = get_popular_videos(ch_id, max_results=10) all_videos.extend(videos) # 분야별 조회수 기준 상위 20개만 유지 niche_data[niche] = sorted( all_videos, key=lambda v: v["view_count"], reverse=True )[:20] print(f" ✔ {niche}: {len(niche_data[niche])}개 수집") return niche_data
실제 수집된 데이터 구조
한 번 실행하면 이런 형태의 데이터가 수집됩니다:
{
"수익성 브랜드": [
{
"video_id": "abc123",
"title": "퍼스널 브랜딩으로 월 1000만 버는 법",
"channel_title": "브랜드채널",
"view_count": 284000,
"like_count": 8200,
"tags": ["퍼스널브랜딩", "수익화", "1인기업"]
},
...
]
}
"수익성 브랜드": [
{
"video_id": "abc123",
"title": "퍼스널 브랜딩으로 월 1000만 버는 법",
"channel_title": "브랜드채널",
"view_count": 284000,
"like_count": 8200,
"tags": ["퍼스널브랜딩", "수익화", "1인기업"]
},
...
]
}
API 할당량 계산
| 작업 | units 소모 | 주당 실행 횟수 | 합계 |
|---|---|---|---|
| 채널 업로드 목록 조회 | 1 | 채널 수 × 1 | ~10 |
| 재생목록 아이템 조회 | 1 | 채널 수 × 1 | ~10 |
| 영상 통계 조회 | 1 | 배치당 1 | ~10 |
| 합계 | ~30 units |
하루 10,000 units 중 30만 쓰니 할당량 걱정은 전혀 없습니다.
다음 편 예고
📌 시리즈 목차
1편 → Claude Code로 유튜브 채널 분석기 만들기 — 기획부터 완성까지
2편 ✅ 유튜브 Data API 연동 코드 전체 공개 (현재 글)
3편 → Python으로 분석 결과 자동 이메일 발송하기
4편 → 실제 PDF 리포트 공개 + Ollama 로컬 AI 도전기
1편 → Claude Code로 유튜브 채널 분석기 만들기 — 기획부터 완성까지
2편 ✅ 유튜브 Data API 연동 코드 전체 공개 (현재 글)
3편 → Python으로 분석 결과 자동 이메일 발송하기
4편 → 실제 PDF 리포트 공개 + Ollama 로컬 AI 도전기
3편에서는 수집한 데이터를 Gemini AI로 분석하고, PDF로 만들어 Gmail로 자동 발송하는 과정을 공개합니다.
댓글 없음:
댓글 쓰기