문서
플랫폼
채널마다 글자 수, 미디어 개수, 하루 한도, 채널별 옵션을 한곳에 모았어요. 서버가 검사에 쓰는 값과 같은 출처에서 읽어요.
채널별 제한이 궁금하면 이 페이지와 GET /v1/platforms를 보면 돼요. 서버가 발행 전에 검사할 때 쓰는 표와 같은 값이라, 실제 동작과 다를 일이 없어요.
지금 지원하는 채널은 6개, 준비 중인 채널은 6개예요. 아래 표는 지원 채널을 먼저, 준비 중 채널을 뒤에 적었어요.
GET /v1/platforms
모든 채널의 제한과, 지금 연결할 수 있는지를 돌려줘요.
curl https://api.posendy.com/v1/platforms \
-H "Authorization: Bearer $POSENDY_KEY"
지금의 제한
| 채널 | 글자 수 | 미디어 | 24시간 발행 | 24시간 삭제 | 상태 |
|---|---|---|---|---|---|
| Threads | 500 | 이미지 20, 영상 1, 텍스트만 가능 | 250 | 100 | 지원 |
| 2,200 | 이미지 10, 영상 1, 미디어 필수 | 100 | Facebook으로 연결한 계정만 | 지원 | |
| YouTube | 5,000 + 제목 100 | 영상 1, 미디어 필수 | 5 | 20 | 지원 |
| 63,206 | 이미지 10, 영상 1, 텍스트만 가능 | 100 | 50 | 지원 | |
| Telegram | 4,096 (미디어가 있으면 1,024) | 이미지 10, 영상 10, 텍스트만 가능 | 28,800 | 올린 뒤 48시간 안만 | 지원 |
| 네이버 블로그 | 30,000 + 제목 100 | 이미지 40, 영상 10, 텍스트만 가능 | 20 | 확장으로 처리 | 지원 (브라우저 확장 필요) |
| TikTok | 2,200 + 제목 90 | 이미지 35, 영상 1, 미디어 필수 | 8,640 | 안 됨 (삭제 API 없음) | 준비 중 |
| 네이버 클립 | 300 | 영상 1, 미디어 필수 | 20 | 아직 안 됨 | 준비 중 |
| Bluesky | 300 + 3,000바이트 | 이미지 4, 영상 1, 텍스트만 가능 | 11,666 | 35,000 | 준비 중 |
| 800 + 제목 100 | 이미지 1, 영상 1, 미디어 필수 | 25 | 이 계정이 만든 핀만 | 준비 중 | |
| Discord | 2,000 | 이미지 10, 영상 10, 텍스트만 가능 | 28,800 | 이 웹후크가 보낸 메시지만 | 준비 중 |
| Ghost | 30,000 + 제목 255 | 이미지 40, 텍스트만 가능 | 1,000 | Admin API로 처리 | 준비 중 |
삭제 칸에 숫자가 없는 채널은 하루 한도가 공개되지 않은 채널이에요. 채널마다 자세한 내용은 각 채널 문서에 있어요: Threads, Instagram, YouTube, Facebook, Telegram, 네이버 블로그.
채널 상태 값
GET /v1/platforms는 채널마다 status를 같이 줘요.
| 값 | 뜻 |
|---|---|
live | 누구나 연결할 수 있어요. |
beta | 플랫폼 심사 중이라 테스터로 등록한 계정만 연결돼요. |
bridge | 브라우저 확장이 있어야 연결돼요. |
soon | 아직 열리지 않았어요. 이 문서의 '준비 중'이에요. |
발행할 때 beta와 bridge는 live와 똑같이 처리해요. 아직 열리지 않은 채널로 보내면 조용히 버리지 않고 platform_not_available로 거절해요.
글자 세는 법
기본 규칙은 이래요.
- 모든 문자는 1로 세요.
- U+FFFF보다 큰 코드포인트(이모지 대부분)만 4로 세요.
그래서 프로그램의 문자열 길이를 그대로 쓰면 안 돼요. 예를 들어 "가😀".length는 3이지만 포샌디는 5로 세요. GET /v1/platforms가 채널마다 이 규칙을 charCount로 알려줘요. 실패한 다음이 아니라 부르기 전에 확인할 수 있어요.
내 계정 한도는 GET /v1/me에서 봐요
위 표는 채널이 허용하는 값이에요. 내 계정이 허용하는 값은 따로 있고, GET /v1/me의 limits가 알려줘요.
- 만들 수 있는 워크스페이스 수
- 분당 요청 수
연결 수에는 따로 한도가 없어요. 대신 워크스페이스 하나에 플랫폼마다 채널 하나씩이에요. 같은 플랫폼을 두 번 연결하려고 하면 platform_already_connected로 거절해요.
출시 전 값이라 바뀔 수 있어요. 코드에 숫자를 적어 두지 말고, 실행할 때마다 읽어요.
채널별 options 값
채널마다 options가 있어요. publish가 받는 채널별 설정의 JSON Schema이고, 서버가 검사에 쓰는 코드에서 그대로 만들어요. 필드 이름을 짐작하지 말고 이 표를 봐요.
agentOnly가 붙은 칸(아래 표의 'API 전용')은 API로 부르는 쪽만 쓰는 값이라 대시보드에는 안 보여요.- 모든 채널이
content도 받아요. 그 채널에만 보낼 다른 본문이에요.
options.threads
| 이름 | 타입 | 설명 |
|---|---|---|
topicTag | string | 글에 붙일 주제 태그 하나예요. 카테고리처럼 써요. Threads는 딱 하나만 받고, UTF-8로 50바이트까지(한글 약 16자) 넣을 수 있어요. 마침표와 &가 들어가면 거절해요. 이어 달기 글이면 첫 토막에만 붙어요. 사용자가 주제를 말하지 않았으면 빼 둬요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.instagram
| 이름 | 타입 | 설명 |
|---|---|---|
contentType | feed / story / reel | 글 종류예요. 안 넣으면 영상 1개는 reel, 나머지는 feed예요. 스토리는 캡션이 안 보이고 이미지나 영상 1개만 받아요. |
shareToFeed | boolean | 릴스 전용. false면 릴스가 메인 피드에 안 나와요. |
coverMediaId | string | 릴스 커버로 쓸 이미지의 미디어 id예요. JPEG, PNG, WebP, 8MB까지 받고, Instagram에는 JPEG로 바꿔서 보내요. 릴스 전용. |
thumbOffsetMs | number | 릴스 커버로 쓸 장면 위치(밀리초)예요. coverMediaId를 넣으면 이 값은 무시돼요. |
audio | object | search_instagram_audio로 찾은 음악이나 소리를 릴스에 넣어요. 릴스 전용이고 Facebook으로 연결한 계정만 돼요. 나레이션이 있으면 volume 20, videoVolume 100부터 시도해 보세요. 올리기 전 미리 듣기는 안 돼요. 음원은 처음부터 한 번만 재생되니 릴스보다 긴 걸 골라요. (API 전용, 대시보드에는 없음) |
collaborators | string[] | 공동 작업자로 초대할 공개 프로페셔널 계정, 3개까지. 상대가 수락해야 보여요. 스토리에는 안 돼요. |
userTags | object[] | 미디어에 계정을 태그해요. 사진은 0과 1 사이의 x, y가 필요하고, 영상은 사용자 이름만 넣어요. mediaIndex로 캐러셀 몇 번째 장인지 골라요. (API 전용, 대시보드에는 없음) |
isAiGenerated | boolean | true면 Instagram에 AI 생성 표시가 붙어요. 첨부한 미디어에 aiGenerated 표시가 있으면 자동으로 켜져요. 끄려면 false를 넣어요. |
firstComment | string | 올린 직후 포샌디가 다는 첫 댓글이에요. 해시태그를 여기 많이 넣어요. 스토리에는 안 돼요. 댓글이 실패해도 글은 올라가고 경고가 붙어요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.youtube
| 이름 | 타입 | 설명 |
|---|---|---|
title (필수) | string | 영상 제목이에요. 100자까지, 필수예요. <와 >는 넣을 수 없어요. |
defaultLanguage | string | 제목과 설명을 쓴 언어예요. BCP-47 코드 하나를 넣어요(예: en-US, ko). 빼면 아무 값도 보내지 않아요. 영상에서 말하는 언어(YouTube 스튜디오의 '동영상 언어')는 API로 정할 수 없어요. |
tags | string[] | 검색 태그예요. 모든 태그를 합쳐 500자까지예요. 띄어쓰기가 있는 태그는 YouTube가 따옴표를 붙여서 2자를 더 써요. |
categoryId | string | YouTube 카테고리 id예요. 기본값은 22(인물/블로그)예요. 사용자가 카테고리를 말하지 않았으면 빼 둬요. (API 전용, 대시보드에는 없음) |
privacyStatus | public / unlisted / private | 기본값은 private예요. 넣은 값을 그대로 보내요. YouTube가 다른 값을 적용하면 결과에 실제 적용된 값이 경고로 나와요. |
publishAt | string | 영상을 공개할 시각(ISO 8601)이에요. privacyStatus가 private일 때만, 한 번도 공개된 적 없는 영상에만 돼요. YouTube 자체 예약이에요. 여러 채널을 같이 예약하려면 글의 scheduledAt을 써요. (API 전용, 대시보드에는 없음) |
madeForKids | boolean | 어린이용 영상인지 표시해요. 남의 채널에 대한 법적 표시라서, 사용자가 말해 주지 않으면 빼 두고 채널 기본값을 따라요. 채널에도 시청자 설정이 없으면 누군가 고를 때까지 YouTube 스튜디오에서 이 영상의 다른 수정이 저장되지 않아요. 그래서 사용자에게 물어봐요. |
containsSyntheticMedia | boolean | 실제처럼 보이게 바꾸거나 합성한 내용이 있으면 true로 넣어요. 실제 같은 사람, 장소, 사건을 AI로 만든 장면도 포함돼요. 첨부한 미디어에 aiGenerated 표시가 있으면 자동으로 켜져요. 끄려면 false를 넣어요. |
thumbnailMediaId | string | 썸네일로 쓸 JPEG나 PNG(2MB까지)의 미디어 id예요. 일반 영상만 돼요. YouTube는 Shorts에 직접 만든 썸네일을 받지 않고, 3분 이하 세로 영상은 Shorts가 돼요. 채널 인증이 끝나 있어야 YouTube가 받아요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.facebook
| 이름 | 타입 | 설명 |
|---|---|---|
contentType | feed / story / reel | 글 종류예요. 안 넣으면 영상 1개는 reel, 나머지는 feed예요. 스토리에 글자를 넣으면 거절돼요. 본문 없이 스토리를 올리고, 글은 피드 글에 넣어요. 스토리는 이미지나 영상 딱 1개만 받고 첫 댓글도 안 돼요. |
link | string | 미리보기 카드가 붙는 링크 글을 만들어요. 미디어와 같이 못 써요. facebook.com 공유 링크는 Facebook이 받지 않아요. |
title | string | 릴스 제목이에요. 캡션과는 따로예요. |
scheduledPublishTime | string | 피드 글을 나중에 올릴 시각(ISO 8601)이에요. 지금부터 10분 뒤에서 28일 사이로 넣어요. 피드 글만 되고 릴스, 스토리는 안 돼요. firstComment와 같이 못 써요(예약 글은 아직 안 올라가서 댓글을 달 곳이 없어요). Facebook 자체 예약이에요. 여러 채널을 같이 예약하려면 글의 scheduledAt을 써요. (API 전용, 대시보드에는 없음) |
firstComment | string | 올린 직후 포샌디가 다는 첫 댓글이에요. 스토리와 예약 글에는 안 돼요. 댓글이 실패해도 글은 올라가고 경고가 붙어요. |
feedTargeting | object | 텍스트 글이나 링크 글을 더 보여주고 싶은 대상이에요. 제한이 아니라 희망 사항이라, Facebook이 이 사람들에게 더 보여줄 수는 있어도 다른 사람도 볼 수 있고 효과는 보장되지 않아요. 사진 글과 릴스에는 Facebook이 이 값을 남기지 않아서 거절해요. 올린 뒤에는 바꿀 수 없어요. (API 전용, 대시보드에는 없음) |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.telegram
| 이름 | 타입 | 설명 |
|---|---|---|
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.naver_blog
| 이름 | 타입 | 설명 |
|---|---|---|
title (필수) | string | 필수. 글 제목이에요. 100자까지. |
categoryId | string | 연결한 블로그의 카테고리 id예요. list_accounts의 naverBlog.categories에 있어요. 이 값이나 category(이름) 중 하나를 넣어요. 기본값이 없고, 안 넣으면 네이버가 엉뚱한 게시판에 글을 넣어요. draftOnly가 true면 필요 없고 무시돼요(임시저장 글은 발행 전까지 게시판이 없어요). |
category | string | id 대신 쓰는 카테고리 이름이에요. list_accounts의 naverBlog.categories에 나온 그대로 넣어요. 블로그에 없는 이름이면 naver_category_unknown과 고를 수 있는 목록이 와요. 방금 만든 카테고리라면 refresh_account를 먼저 불러요. (API 전용, 대시보드에는 없음) |
tags | string[] | 태그 30개까지, #과 띄어쓰기 없이 넣어요. draftOnly가 true면 무시돼요. 본문 끝을 #해시태그 줄로 끝내지 마세요. 네이버는 이 태그를 글 아래에 보여주고, 발행할 때 포샌디가 본문 마지막 해시태그 줄을 태그로 옮겨요(draftOnly일 때는 본문 그대로 둬요). |
openType | public / neighbor / mutual / private | 누가 볼 수 있는지예요. public(새 글 기본값), neighbor(이웃), mutual(서로이웃만), private(비공개). 수정(update_post)할 때 빼면 네이버에 있는 지금 공개 범위를 그대로 둬요. draftOnly가 true면 무시돼요. |
draftOnly | boolean | 발행하지 않고 네이버에 임시저장해요. 사용자가 직접 마무리하거나, 나중에 publish_naver_draft로 발행해요. categoryId, tags, openType은 임시저장 글에 남지 않으니 발행할 때 넣어요. 글 전체를 포샌디에 두는 글의 draft와는 달라요. |
layout | template / as-is | template(기본값)은 본문을 블로그 기본 형식으로 다시 배치해서 보내요. #, ## 제목은 밑줄 인용구 제목이 되고, 섹션 사이에 얇은 구분선이 들어가고, media: 참조로 자리를 정하지 않은 사진은 섹션마다 한 장씩 들어가요(남은 사진은 끝에 두 장씩 묶여요). 글 내용은 바뀌지 않아요. 결과는 naver_layout을 먼저 불러서 봐요. 사용자가 구조를 직접 정했거나 모든 걸 직접 배치했으면 as-is를 써요. (API 전용, 대시보드에는 없음) |
form | bubble-info / divider-tutorial / photo-review / place-list / news-event / table-explain / mood-review / photo-story | template 배치에 쓸 폼이에요(기본값 photo-story). GET /v1/naver/forms가 폼 목록을 주고, naver_layout에 forms: "all"을 넣으면 나란히 비교해서 보여줘요. |
scheduledAt | string | 글의 scheduledAt과 같아요. 시간대가 붙은 ISO 8601로, 10분 뒤부터 1년 안으로 넣어요. 포샌디가 글을 갖고 있다가 그 시각에 네이버로 보내요. 네이버 자체 예약은 쓰지 않아요. 글의 scheduledAt을 쓰는 게 좋아요. draftOnly와 같이 못 쓰고, 다른 채널에도 보내는 글에서도 못 써요. (API 전용, 대시보드에는 없음) |
tempLogNo | string | publish_naver_draft가 넣는 값이에요. 네이버에 임시저장된 글을 그대로 발행할 때 써요. 본문은 무시되고, 확장이 그 임시저장 글을 에디터에 불러와 발행을 눌러요. (API 전용, 대시보드에는 없음) |
fontFamily | nanumgothic / nanummyeongjo / nanumbarungothic / nanumsquare / maruburi | 본문 글꼴이에요. 빼면 에디터 기본 글꼴을 써요. |
fontSize | 11 / 13 / 15 / 16 / 19 / 24 / 28 / 30 / 34 / 38 | 본문 글자 크기(px)예요. 에디터에 있는 크기(11~38) 중 하나를 넣어요. 빼면 에디터 기본 크기를 써요. |
alignCenter | boolean | 정렬을 따로 정하지 않은 문단과 이미지를 모두 가운데 정렬해요. 사진 줄에 붙은 {.left}, {.center}, {.right}가 우선이에요. |
imageSize | fit / small | 크기를 따로 정하지 않은 사진 한 장짜리의 크기예요. fit은 문서 너비, small은 에디터의 '작게'(약 4분의 3)예요. 사진 줄에 붙은 {.fit}, {.small}이 우선이에요. 빼면 693px보다 넓은 사진은 문서 너비, 좁은 사진은 원래 너비로 들어가요. @group 사진은 항상 문서 너비예요. 포샌디 확장 0.7.13 이상이 필요해요. 그보다 낮은 버전이면 글은 올라가고, fit을 요청했을 때는 경고가 붙어요. |
seoKeywords | object | 키워드 조사(POST /v1/naver/keywords/judge)로 정한 이 글의 검색 키워드예요. main은 제목 앞에 오는 대표 키워드 하나, subs(2~5개)는 섹션 제목에 하나씩 들어가요. 발행에는 쓰지 않고 글과 같이 저장돼서 SEO 점검이 읽어요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. 다른 채널에는 일반 글을 보내고 네이버 블로그에만 마크다운 본문을 보낼 때 여기에 넣어요. |
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 | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.naver_clip (준비 중)
| 이름 | 타입 | 설명 |
|---|---|---|
tags | string[] | 해시태그 5개까지, # 없이 넣어요. 네이버 클립에는 태그 칸이 따로 없어서 설명 끝에 #태그로 붙어요. 그래서 설명과 태그를 합쳐 300자 안이어야 하고, 설명에 이미 쓴 #낱말도 5개에 들어가요. |
categoryId | string | 필수. list_accounts의 naverClip.categories에 있는 카테고리 id예요. 네이버 클립 카테고리는 2단계라서 두 번째 단계 id를 넣어요. 이 값이나 category(이름) 중 하나를 넣어요. 기본값은 없어요. |
category | string | id 대신 쓰는 카테고리 이름이에요. list_accounts의 naverClip.categories에 나온 그대로(대분류와 소분류 이름을 ›로 이은 형태) 넣어요. (API 전용, 대시보드에는 없음) |
visibility | public / private | public(기본값) 또는 private(계정 주인만 볼 수 있음). 비공개여도 클립은 올라가요. |
aiGenerated | boolean | 네이버 클립의 AI 활용 표시를 켜요. 첨부한 영상에 aiGenerated 표시가 있으면 자동으로 켜져요. 끄려면 false를 넣어요. |
adDisclosure | boolean | 광고, 협찬 표시를 켜요(유료 광고, 협찬, PPL). 법적 표시라서 직접 정해서 넣어요. |
disableComments | boolean | 이 클립의 댓글을 꺼요. 기본은 댓글 허용이에요. |
draftOnly | boolean | 게시하지 않고 클립 크리에이터에 임시저장으로 올려요. 마무리는 사람이 거기서 해요. 계정 주인만 보게 게시하는 visibility private와 다르고, 글 전체를 포샌디에 두는 글의 draft와도 달라요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.bluesky (준비 중)
| 이름 | 타입 | 설명 |
|---|---|---|
langs | string[] | 글에 쓴 언어예요. ["ko"]나 ["en", "ko"]처럼 BCP-47 코드 1~3개를 넣어요. 피드 생성기가 이 값으로 거르기 때문에, 없으면 언어별 피드에 안 나와요. Bluesky는 글 수정이 없어서 올린 뒤에는 못 고쳐요. 실제로 쓴 언어를 넣어요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.pinterest (준비 중)
| 이름 | 타입 | 설명 |
|---|---|---|
boardId | string | 핀을 넣을 보드 id예요. list_accounts의 pinterest.boards에서 찾아요. 빼면 연결할 때 고른 기본 보드로 가요. |
title | string | 핀 제목이에요. 100자까지. 본문(content)은 핀 설명이 돼요. |
link | string | 핀을 열었을 때 이동할 주소예요. https://로 시작하고 2,048자까지. |
altText | string | 화면 낭독기를 쓰는 사람을 위한 이미지 설명이에요. 500자까지. |
isAiGenerated | boolean | 이미지나 영상을 AI로 만들었거나 고쳤다는 표시예요. Pinterest가 핀에 AI 표시를 붙여요. 첨부 파일에 AI 제작 표시가 있으면 포샌디가 자동으로 켜요. |
coverMediaId | string | 영상 핀 커버로 쓸 JPEG나 PNG의 미디어 id예요. 영상 핀만. |
coverKeyFrameSeconds | number | coverMediaId가 없을 때, 영상 몇 초 장면을 커버로 쓸지예요. 영상 핀만. 둘 다 빼면 Pinterest가 첫 장면을 골라요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.discord (준비 중)
| 이름 | 타입 | 설명 |
|---|---|---|
username | string | 이 메시지 하나에만 보일 보낸 사람 이름이에요. 1~80자. 빼면 웹후크 이름을 써요. 이름에 "discord"나 "clyde"가 들어가면 Discord가 거절해요. |
silent | boolean | 푸시 알림이나 데스크톱 알림 없이 올려요(Discord의 @silent). |
suppressEmbeds | boolean | 본문에 있는 URL의 링크 미리보기를 안 보여줘요. |
mentions | none / users / all | 본문의 멘션이 실제로 누구에게 알림을 보낼지 정해요. none(기본값): 아무에게도 안 가요. @everyone, @here, 역할과 사람 멘션은 글자로만 보여요. users: 멘션한 사람에게만 가요. all: 사람, 역할, @everyone, @here 모두에게 가요. all은 사용자가 서버 전체에 알리라고 했을 때만 써요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
options.ghost (준비 중)
| 이름 | 타입 | 설명 |
|---|---|---|
title (필수) | string | 필수. 글 제목이에요. 255자까지. |
tags | string[] | 태그 이름이에요. 없는 태그는 Ghost가 새로 만들어요. #으로 시작하는 이름은 거절해요(Ghost가 숨김 내부 태그로 만들어 버려요). 수정할 때 빼면 지금 태그를 그대로 둬요. |
featureImageMediaId | string | 대표 이미지로 쓸 JPEG, PNG, GIF, WebP의 미디어 id예요. 포샌디가 복사본을 Ghost에 올려요. 수정할 때 빼면 지금 이미지를 그대로 둬요. |
draftOnly | boolean | 발행하지 않고 Ghost 초안으로 저장해요. 이때 글 주소는 Ghost 에디터 페이지예요. 글을 포샌디에 두는 글의 draft와는 달라요. |
content | string | 이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요. |
자주 묻는 것
채널별 글자 수 제한은 얼마예요?
위 '지금의 제한' 표에 있어요. 서버가 검사할 때 읽는 표와 같은 값이에요. 코드에서는 GET /v1/platforms로 읽어요.
제한을 넘기면 어떻게 돼요?
글자 수가 넘으면 채널에 보내기 전에 포샌디가 거절하고, 오류에 어느 제한에 걸렸는지 나와요. 이미지 개수가 넘으면 앞에서부터 상한 개수만 올라가고 경고가 붙어요.
가장 짧은 제한에 맞춰서 써야 하나요?
아니요. 포샌디는 채널마다 따로 검사해요. 채널마다 다른 길이로 보내고 싶으면 options.채널이름.content에 그 채널용 본문을 넣어요. 넣은 채널은 그 본문으로 검사하고, 나머지 채널은 공통 본문으로 검사해요.
