문서

Instagram

포샌디로 AI가 Instagram에 올리는 방법이에요. 피드, 릴스, 스토리가 각각 받는 것과 API로 안 되는 것을 정리했어요.

연결 방법

Instagram 계정은 두 가지 방법으로 연결해요.

  1. Instagram 계정으로 바로 로그인해요.
  2. Facebook 페이지에 연결된 프로페셔널 계정을 골라요.

어느 쪽으로 연결해도 글은 똑같이 올라가요. 다른 점은 아래 '연결 방법별 차이'에 있어요.

한눈에

항목종류값
글자 수텍스트2,200
이미지미디어글 하나에 10장까지. 더 넣으면 앞의 10장만 올라가고 경고가 붙어요
캐러셀미디어2~10개, 이미지와 영상 섞기 가능
영상미디어글 하나에 1개
텍스트만미디어안 됨 (미디어 필수)
24시간 발행한도100
24시간 삭제한도Facebook으로 연결한 계정만 가능, 하루 한도는 공개된 값 없음
상태상태live

이 값은 서버가 검사할 때 쓰는 파일에서 그대로 가져왔어요.

Instagram은 글자만으로는 올라가지 않아요. 글마다 이미지나 영상이 하나 이상 있어야 해요.

이미지는 JPEG만 받아요. 다른 형식은 올리기 전에 포샌디가 JPEG로 바꿔요. 올린 원본 파일은 바꾸지 않아요.

피드 이미지 비율은 4:5에서 1.91:1 사이여야 해요. 휴대폰으로 찍은 3:4 사진처럼 범위를 벗어난 이미지는, 복사본을 가까운 쪽 비율에 맞춰 가운데 기준으로 잘라서 보내요. 몇 장을 잘랐는지는 그 글의 경고에 남아요.

연결 방법별 차이

Instagram 로그인으로 직접 연결하든, Facebook 로그인으로 페이지를 거쳐 연결하든 채널은 하나로 잡혀요. 글 올리기는 똑같고, 나머지 권한에서 차이가 나요.

기능Instagram 로그인Facebook 로그인
글 올리기됨됨
글 지우기안 됨 (삭제 권한 없음)됨
글과 댓글에 좋아요안 됨됨
릴스 음원 붙이기안 됨됨

피드, 릴스, 스토리

options.instagram.contentType으로 정해요. 값을 안 넣으면 영상 1개짜리 글은 릴스, 나머지는 피드로 올라가요.

  • 스토리: 이미지나 영상 딱 1개. 캡션과 첫 댓글은 없어요.
  • 캐러셀: 피드 글 하나에 2~10개.

릴스 음원

options.instagram.audio로 릴스에 음악이나 다른 릴스의 소리를 넣어요.

  1. 올릴 계정으로 search_instagram_audio(MCP)나 GET /v1/channels/instagram/audio를 불러서 음원 id를 찾아요.
  2. { "id": "...", "volume": 20, "videoVolume": 100 } 형태로 넘겨요.

volume은 넣은 음원 소리, videoVolume은 영상 원래 소리예요. 둘 다 0에서 100 사이 정수예요. Instagram 기본값은 둘 다 100이라, 그대로 두면 목소리가 음악에 묻힐 수 있어요.

알아 둘 점이에요.

  • 음원은 릴스에만, Facebook으로 연결한 계정에만 넣을 수 있어요.
  • 검색어 없이 찾으면 그 계정의 인기 목록이 나와요. 검색어를 넣으면 음악은 Meta의 로열티 프리 음악(Sound Collection) 안에서만 찾아요.
  • 음원을 넣은 릴스는 올리기 전에 미리 들어볼 수 없어요.
  • 음원은 처음부터 한 번만 재생돼요. API로는 시작 지점을 고를 수 없고, 반복도 안 돼요. 그래서 릴스보다 긴 음원을 골라야 해요.

첫 글 올리기

이미지를 먼저 올리고, 받은 미디어 id를 넣어 publish를 불러요. contentType은 넣지 않아도 돼요.

curl -X POST https://api.posendy.com/v1/posts \
  -H "Authorization: Bearer $POSENDY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Caption under the photo",
    "accountIds": ["conn_..."],
    "mediaIds": ["med_..."],
    "options": { "instagram": { "contentType": "feed", "firstComment": "#hashtags #here" } }
  }'

options.instagram 값

이름타입설명
contentTypefeed / story / reel글 종류예요. 안 넣으면 영상 1개는 reel, 나머지는 feed예요. 스토리는 캡션이 안 보이고 이미지나 영상 1개만 받아요.
shareToFeedboolean릴스 전용. false면 릴스가 메인 피드에 안 나와요.
coverMediaIdstring릴스 커버로 쓸 이미지의 미디어 id예요. JPEG, PNG, WebP, 8MB까지 받고, Instagram에는 JPEG로 바꿔서 보내요. 릴스 전용.
thumbOffsetMsnumber릴스 커버로 쓸 장면 위치(밀리초)예요. coverMediaId를 넣으면 이 값은 무시돼요.
audioobjectsearch_instagram_audio로 찾은 음악이나 소리를 릴스에 넣어요. 릴스 전용이고 Facebook으로 연결한 계정만 돼요. 나레이션이 있으면 volume 20, videoVolume 100부터 시도해 보세요. 올리기 전 미리 듣기는 안 돼요. 음원은 처음부터 한 번만 재생되니 릴스보다 긴 걸 골라요. (API 전용, 대시보드에는 없음)
collaboratorsstring[]공동 작업자로 초대할 공개 프로페셔널 계정, 3개까지. 상대가 수락해야 보여요. 스토리에는 안 돼요.
userTagsobject[]미디어에 계정을 태그해요. 사진은 0과 1 사이의 x, y가 필요하고, 영상은 사용자 이름만 넣어요. mediaIndex로 캐러셀 몇 번째 장인지 골라요. (API 전용, 대시보드에는 없음)
isAiGeneratedbooleantrue면 Instagram에 AI 생성 표시가 붙어요. 첨부한 미디어에 aiGenerated 표시가 있으면 자동으로 켜져요. 끄려면 false를 넣어요.
firstCommentstring올린 직후 포샌디가 다는 첫 댓글이에요. 해시태그를 여기 많이 넣어요. 스토리에는 안 돼요. 댓글이 실패해도 글은 올라가고 경고가 붙어요.
contentstring이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요.

이 표는 서버가 검사에 쓰는 스키마에서 그대로 만들었어요. GET /v1/platforms도 같은 내용을 돌려줘요.

안 되는 것

  • 올린 글 수정: Instagram에 수정 API가 없어요.
  • DM
  • Instagram 로그인으로 연결한 계정의 글 삭제

숫자는 피드와 릴스만 get_insights로 받아요. 스토리는 24시간 뒤 사라지고 숫자를 하나도 주지 않아요.

자주 묻는 것

PNG가 왜 JPEG로 바뀌었나요?

Instagram이 JPEG만 받아서 그래요. 다른 형식 이미지는 올리기 직전에 JPEG로 바꿔요. 포샌디에 올린 원본 파일은 그대로 있어요.

스토리에 캡션이 왜 없나요?

스토리는 원래 캡션을 보여주지 않아요. 보낸 글이 사라진 게 아니라 스토리에 들어갈 자리가 없는 거예요. 글은 피드 글에 넣어요.

올린 글을 지울 수 있나요?

Facebook으로 연결한 계정만 돼요. Instagram 로그인으로 연결한 계정은 삭제 권한이 없어서, Instagram 앱에서 직접 지워요.