준비 중인 채널
TikTok
포샌디로 AI가 TikTok에 올리게 될 방법이에요. TikTok이 요구하는 공개 범위 선택, 앱으로 보내는 초안, Content Posting API로 안 되는 것을 정리했어요.
준비 중인 채널이에요. 아래는 연결이 열리면 쓰게 될 방법이에요. 열리면 블로그와 이 페이지에 알려드려요.
한눈에
| 항목 | 종류 | 값 |
|---|---|---|
| 글자 수 | 텍스트 | 2,200 |
| 이미지 | 미디어 | 글 하나에 35장까지. 더 넣으면 앞의 35장만 올라가고 경고가 붙어요 |
| 캐러셀 | 미디어 | 2~35개 |
| 영상 | 미디어 | 글 하나에 1개 |
| 텍스트만 | 미디어 | 안 됨 (미디어 필수) |
| 24시간 발행 | 한도 | 8,640 |
| 24시간 삭제 | 한도 | TikTok에 삭제 API가 없어서 앱에서만 지울 수 있어요 |
| 상태 | 상태 | 준비 중 |
연결이 열리면 서버가 이 값으로 검사하게 돼요. TikTok에는 글자만 올리는 글이 없고, 영상과 사진을 한 글에 섞을 수 없어요. 본문 상한은 글 형식에 따라 달라요.
| 형식 | 본문 상한 |
|---|---|
| 영상 글 | 2,200자 |
| 사진 글 | 4,000자 |
privacyLevel이 필수인 이유
TikTok 규정상 공개 범위는 사람이 직접 골라야 하고, 미리 정해 둔 기본값이 있으면 안 돼요. AI에게는 고르는 화면이 없으니, 이 규정을 필수 값으로 옮길 예정이에요.
options.tiktok.privacyLevel은 필수이고 기본값이 없어요.- 고를 수 있는 값은 계정마다 달라요. 그래서 먼저
get_publish_options를 부르고, 응답에 있는 값 중 하나를 넣게 돼요.
첫 영상 올리기
열리면 아래 순서로 올리게 돼요.
- 영상을 올려요.
- 그 계정으로
get_publish_options를 불러요. - 미디어 id와, 2번 응답에 있던
privacyLevel을 넣어publish를 불러요.
curl -X POST https://api.posendy.com/v1/posts \
-H "Authorization: Bearer $POSENDY_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Caption #hashtags",
"accountIds": ["conn_..."],
"mediaIds": ["med_..."],
"options": { "tiktok": { "privacyLevel": "SELF_ONLY" } }
}'
options.tiktok 값
| 이름 | 타입 | 설명 |
|---|---|---|
privacyLevel | string | postMode가 draft가 아니면 필수예요. 이 계정에 대해 get_publish_options가 준 값 중 하나를 넣어요. 예: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY. 계정마다 목록이 달라서 코드에 고정해 두면 안 돼요. |
title | string | 사진 글에서는 필수이고 90자까지예요. 영상 글에는 제목 칸이 아예 없어서 넣으면 거절돼요. 영상 글의 글자는 content에서 가져와요. |
postMode | direct / draft | direct(기본값)는 프로필에 바로 올려요. draft는 크리에이터의 TikTok 받은편지함으로 보내요. 크리에이터가 알림을 열고 앱에서 마무리하면서 공개 범위도 직접 골라요. 그래서 이 방식에서는 공개 범위를 보내지 않아요. 마무리하기 전까지는 프로필에 없어서 링크도 숫자도 없어요. |
disableComment | boolean | 이 글의 댓글을 꺼요. 크리에이터가 계정 전체에서 댓글을 꺼 뒀다면 false로 켤 수 없어요. |
disableDuet | boolean | 이 글의 듀엣을 꺼요. 영상 글만. |
disableStitch | boolean | 이 글의 스티치를 꺼요. 영상 글만. |
brandContentToggle | boolean | 유료 협찬 콘텐츠("Branded Content")라고 밝혀요. TikTok은 협찬 콘텐츠를 비공개로 두지 못하게 해서, privacyLevel SELF_ONLY와 같이 못 써요. |
brandOrganicToggle | boolean | 크리에이터 자신의 브랜드를 알리는 글("Your Brand")이라고 밝혀요. 해당 없으면 false를 보내지 말고 빼 두세요. 안 밝힌 것과 '아니다'라고 밝힌 건 다른 뜻이에요. |
isAigc | boolean | AI로 만든 콘텐츠라고 밝혀요. 영상이나 이미지를 AI로 만들었다면 넣어 두는 게 좋아요. 첨부한 미디어에 aiGenerated 표시가 있으면 자동으로 켜져요. 끄려면 false를 넣어요. |
videoCoverTimestampMs | number | 커버로 쓸 장면 위치(밀리초)예요. TikTok은 커버 이미지 파일을 받지 않고 시각만 받아요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
연결이 열리면 GET /v1/platforms도 같은 내용을 돌려주게 돼요.
안 되는 것
- 글 삭제와 댓글 읽기: Content Posting API에 둘 다 없어요. 그래서
delete_post와list_replies는 되는 척하지 않고 오류 코드로 거절하게 돼요. - 영상 글 제목: 영상 글에는 제목 칸이 없고, 사진 글에만 있어요.
- 커버 파일: 커버는 파일이 아니라 영상 안의 시각으로만 정해요.
자주 묻는 것
공개 범위를 그냥 '전체 공개'로 기본 설정하면 안 되나요?
TikTok 심사 규정이 기본값을 금지해요. 사람이 직접 골라야 해요. 필수 값으로 받는 게 이 규정을 지키는 방법이에요.
올린 글에 왜 링크가 없나요?
TikTok은 공개 글에만, 그것도 TikTok 자체 검수가 끝난 뒤에 공개 id를 줘요. 나만 보기 글과, 아직 크리에이터 받은편지함에 있는 글(postMode draft)은 이 id를 받지 못해서 링크가 없어요.
커버 이미지를 정할 수 있나요?
시각으로만 정할 수 있어요. options.tiktok.videoCoverTimestampMs로 영상의 한 장면을 골라요. TikTok은 커버 파일을 받지 않아요.
