Meta 광고 영상 업로드
공개 URL의 영상을 광고 계정 미디어 라이브러리에 올리고 영상 ID를 돌려주는 노드입니다.
설명
광고 소재에는 영상 URL이 아니라 영상 ID(video_id) 가 들어갑니다. 이 노드가 URL을 ID로 바꿔줍니다.
① 노드 → Meta POST /act_xxx/advideos file_url=https://cdn.../9x16.mp4
② Meta → CDN 그 주소로 직접 접속해 파일 다운로드 ← 우리 워커를 거치지 않습니다
③ Meta → 노드 {"id": "1736616490585566"}
④ 노드 → Meta 인코딩이 끝날 때까지 상태 확인
②가 핵심입니다. 영상 파일은 워커 메모리를 통과하지 않습니다. 500MB 영상을 여러 개 넣어도 워커가 버팁니다.
올린 영상은 광고 관리자의 미디어 라이브러리 → 동영상 탭에 그대로 뜹니다. 별도 업로드 API가 아니라 같은 곳입니다.
Meta 서버가 직접 접속하므로 아래는 실패합니다.
- 쿠키·헤더·토큰이 필요한 주소
- 리다이렉트를 거치는 주소 — 구글 드라이브 공유 링크가 여기 해당합니다 (HTML 확인 페이지로 넘깁니다)
- 사내망·VPN 뒤의 주소
- 이미 만료된 서명 URL
포트 구성
입력 포트
- 데이터셋 (필수): 올릴 영상 URL 목록
출력 포트
- 데이터셋: 입력 행에
_meta_video_id컬럼이 추가된 결과
속성
액세스 토큰과 광고 계정 두 가지뿐입니다. 발급 절차는 Meta 광고 문서와 같습니다. 업로드에는 ads_management 권한이 필요합니다.
입력 컬럼
| 컬럼 | 필수 | 설명 |
|---|---|---|
video_url | ✅ | 올릴 영상의 공개 URL |
name | ⬜ | 미디어 라이브러리에 남길 이름 |
URL이 빈 행은 그냥 통과합니다. 일부 행만 영상을 바꾸는 것이 정상 사용이라 오류로 만들지 않습니다.
결과 컬럼과 재실행
| 컬럼 | 내용 |
|---|---|
_meta_video_id | 업로드된 영상 ID |
배치 여러 개가 같은 영상을 공유하는 것이 정상입니다. 같은 URL이 여러 행에 있으면 한 번만 업로드하고 모든 행에 같은 ID를 채웁니다. 12행에 URL 3종이면 업로드도 3번, 인코딩 대기도 3번입니다.
다시 돌리면 라이브러리에 같은 영상이 하나 더 생깁니다.
그래서 _meta_video_id 가 이미 채워진 행은 건너뜁니다. 실패한 행을 결과 컬럼째 다시 실행하면 남은 것만 올립니다.
업로드 직후에는 아직 인코딩 중이라 그 영상으로 소재를 만들면 Meta가 거부합니다. 노드가 ready 상태가 될 때까지 기다렸다가 ID를 돌려주므로, 행당 수십 초가 걸립니다.
시간 안에 안 끝나면 오류로 알립니다. 그 행을 다시 실행하면 이미 올린 영상은 건너뛰고 이어서 진행합니다.
예제
[
{ "video_url": "https://cdn.example.co.kr/1x1.mp4", "name": "고민하지마리쥬_1x1" },
{ "video_url": "https://cdn.example.co.kr/4x5.mp4", "name": "고민하지마리쥬_4x5" },
{ "video_url": "https://cdn.example.co.kr/9x16.mp4", "name": "고민하지마리쥬_9x16" }
]
실행하면 _meta_video_id 가 붙습니다.
video_url name _meta_video_id
https://cdn.example.co.kr/1x1.mp4 고민하지마리쥬_1x1 1010145345131490
https://cdn.example.co.kr/4x5.mp4 고민하지마리쥬_4x5 27259310917074158
https://cdn.example.co.kr/9x16.mp4 고민하지마리쥬_9x16 1736616490585566
이 ID를 Meta 광고 복제의 copies.creative_parameters 소재 스펙에 끼워 사용합니다.
주의사항
행당 인코딩 대기(수십 초)가 붙어 워커를 오래 잡습니다. 복제(100행)보다 상한이 낮습니다.
Meta의 이미지 업로드(/adimages)는 URL 방식이 없어 파일 바이트를 직접 실어 보내야 합니다.
썸네일은 대신 URL을 소재에 그대로 넣을 수 있습니다 — asset_feed_spec.videos[] 의 thumbnail_url, 단일 영상(video_data)은 image_url 이 그 용도입니다. 이미 라이브러리에 있는 이미지를 쓰려면 thumbnail_hash(또는 image_hash)를 쓰세요.
조회하면 scontent-*.fbcdn.net 주소가 오지만 서명이 붙은 만료되는 링크입니다. 재사용할 값은 URL이 아니라 video_id 입니다 — 이건 만료되지 않습니다.