문서
YouTube
포샌디로 AI가 YouTube에 영상을 올릴 때 되는 것, 다른 채널과 다른 점, 아예 안 되는 것을 정리했어요.
공개 범위
privacyStatus에는 public, unlisted, private 중 하나를 넣어요. 포샌디는 받은 값을 그대로 YouTube에 보내요. YouTube가 실제로 적용한 값은 발행 결과에 같이 나와요. 보낸 값과 다르게 적용되면 경고가 붙어요.
알아 둘 점: Google은 심사를 마치지 않은 API 프로젝트로 올린 영상을 비공개로만 둬요. 발행 결과에 private로 나오면 이 경고부터 확인해요.
한눈에
| 항목 | 종류 | 값 |
|---|---|---|
| 글자 수 | 텍스트 | 5,000 |
| 이미지 | 미디어 | 안 됨. 영상에 이미지를 같이 넣으면 영상만 올라가고 경고가 붙어요 |
| 캐러셀 | 미디어 | 안 됨 |
| 영상 | 미디어 | 글 하나에 1개 |
| 텍스트만 | 미디어 | 안 됨 (미디어 필수) |
| 24시간 발행 | 한도 | 5 |
| 24시간 삭제 | 한도 | 20 |
| 상태 | 상태 | live |
서버가 검사할 때 쓰는 파일에서 그대로 읽은 값이라 실제 발행과 어긋나지 않아요. 설명 글자 수 상한은 글자 개수가 아니라 UTF-8 바이트로 세요.
연결할 때 요청하는 권한
Google에 youtube.force-ssl 권한 하나만 요청해요. 댓글 숨기기를 허락하는 권한은 이것 하나뿐이고, 업로드, 삭제, 조회, 답글도 이 권한 안에 다 들어 있어요. 다른 권한을 더 받으면 쓰지 않는 권한까지 갖게 돼요.
AI 토큰이 갖는 권한
| 이름 | 종류 | 하는 일 |
|---|---|---|
accounts:read | 읽기 | 연결된 채널 목록 보기 |
posts:read | 읽기 | 올린 글 기록, 답글, 숫자 보기 |
posts:write | 쓰기 | 글 올리기, 지우기, 답글 달기, 숨기기, 파일 올리기 |
offline_access | 로그인 유지 | 브라우저를 닫아도 AI 연결 유지 |
첫 영상 올리기
영상 파일을 먼저 올리고, 받은 미디어 id와 제목을 넣어 publish를 불러요. YouTube는 영상 딱 1개만 받고 이미지는 받지 않아요.
curl -X POST https://api.posendy.com/v1/posts \
-H "Authorization: Bearer $POSENDY_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Description that shows under the video",
"accountIds": ["conn_..."],
"mediaIds": ["med_..."],
"options": {
"youtube": {
"title": "My first upload",
"tags": ["vlog", "behind the scenes"],
"privacyStatus": "private"
}
}
}'
Shorts
Shorts만 올리는 API는 따로 없어요. 올리는 방법은 일반 영상과 같고, Shorts인지는 YouTube가 정해요. 세로나 정사각형이면서 3분 이하인 영상이 Shorts가 돼요.
포샌디는 올리기 전에 Shorts가 될지 미리 판단해서 응답에 넣어 줘요. 이 판단이 썸네일 처리에 쓰이기 때문이에요(아래 참고).
썸네일이 안 들어간 이유
YouTube는 Shorts에 직접 만든 썸네일을 받지 않아요. Shorts 썸네일은 올린 뒤 앱에서 장면을 하나 고르는 방식이고, 한 번 고르면 바꿀 수 없어요.
그래서 포샌디는 Shorts가 될 영상에 썸네일이 들어 있으면 업로드를 시작하기 전에 거절해요. 영상이 채널에 올라간 다음에 거절하면 되돌릴 수 없어서예요.
일반 영상 썸네일도 채널 인증이 끝나 있어야 들어가요. 영상은 올라갔는데 썸네일만 실패하면, 그 글은 발행 성공으로 남고 경고가 붙어요.
영상 예약
돼요. 채널 자체 예약을 쓸 수 있는 곳은 YouTube뿐이에요.
privacyStatus를private로 둬요.options.youtube.publishAt에 공개할 시각을 넣어요.
영상은 숨겨진 상태로 올라갔다가 그 시각에 공개돼요. 한 번도 공개된 적 없는 영상에만 쓸 수 있어요.
한도
한도는 두 가지예요.
| 한도 | 값 | 누가 나눠 쓰나 |
|---|---|---|
| 워크스페이스 하루 발행 수 | 위 표의 24시간 발행 | 워크스페이스마다 따로 |
| Google API 프로젝트 하루 업로드 | 100회 | 포샌디를 쓰는 모든 사용자가 함께 |
| Google API 프로젝트 하루 units | 10,000 units (업로드 외 요청) | 포샌디를 쓰는 모든 사용자가 함께 |
요청별 units는 영상 삭제 50, 댓글 작성 50, 조회 1이에요. 두 한도 모두 미국 태평양 시간 자정에 다시 채워져요. get_quota를 부르면 두 한도를 같이 보여줘서, 어느 쪽에 막혔는지 알 수 있어요.
안 되는 것
- 이어 달기: YouTube 계정에
threadItems를 보내면 토막 수만큼 영상이 올라가게 돼요. 그래서 거절해요. - 자세한 숫자: 조회수, 좋아요, 댓글 수는 받아요. 노출, 시청 지속 시간, Shorts 전용 숫자는 YouTube Analytics API라는 다른 API에 있고 필요한 권한도 달라서, 포샌디는 요청하지 않아요.
