가이드

API로 Instagram 게시물을 자동화하는 방법

Instagram의 공식 Graph API는 Facebook 앱 심사, Facebook 페이지에 연결된 비즈니스 계정, 다단계 OAuth 흐름을 요구합니다. Upload-Post는 이 모든 것을 내부에서 처리합니다. 하나의 API 호출, 하나의 엔드포인트로 릴스, 사진 또는 캐러셀이 게시됩니다. 이 가이드는 실제 코드 예제와 함께 Instagram 게시를 자동화하는 데 필요한 모든 것을 다룹니다.

API로 Instagram 게시를 자동화해야 하는 이유

Instagram 앱을 통해 수동으로 게시해 본 적이 있다면, 그 과정을 알고 있을 것입니다: 앱을 열고, 파일을 선택하고, 캡션을 작성하고, 해시태그를 추가하고, 사람들을 태그하고, 커버 이미지를 선택하고, 마지막으로 게시 버튼을 누릅니다. 이제 이것을 여러 클라이언트 계정에서 하루 5개 게시물로 곱해 보세요.

인스타그램 플랫폼 페이지에서 Upload-Post가 Instagram에 대해 구체적으로 무엇을 지원하는지 설명합니다. 간단히 말하면: 단일 소셜 미디어 API 엔드포인트를 통해 릴스, 단일 사진, 캐러셀 (다중 이미지 게시물)을 게시할 수 있습니다. Facebook 앱 심사 없이, 토큰 새로고침 없이, Graph API의 복잡함 없이.

Instagram은 API를 통해 24시간당 최대 50개의 업로드를 허용하며, 대부분의 사용 사례에는 충분합니다. 동시에 추가 플랫폼에도 게시해야 한다면, 모든 플랫폼에 한 번에 게시하는 방법을 참조하세요.

API로 Instagram 릴스 게시하기

릴스는 Instagram의 주요 콘텐츠 형식입니다. 동영상을 릴스로 게시하려면 업로드 엔드포인트에 media_typeREELS로 설정하여 POST 요청을 보내세요. share_mode를 사용하여 릴스가 피드에 표시되는 방식도 제어할 수 있습니다.

curl -X POST https://api.upload-post.com/api/upload \
  -H "권한 부여: API 키 your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Behind the scenes of our new product launch" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "share_mode=FEED_AND_REELS" \
  -F "audio_name=Original Audio" \
  -F "cover_url=https://example.com/cover.jpg"

각 Instagram 전용 매개변수가 하는 일은 다음과 같습니다:

  • media_type=REELS는 Instagram에 이것을 일반 피드 동영상이 아닌 릴스로 처리하도록 알립니다.
  • share_mode=FEED_AND_REELS는 릴스 탭과 메인 피드 모두에 게시합니다. 피드 그리드에서 제외하려면 REELS_ONLY를 사용하세요.
  • audio_name은 시청자가 릴스에서 보는 내장 오디오 트랙의 이름을 설정합니다.
  • cover_url은 커스텀 커버 이미지를 제공합니다. 이 값이 없으면 Instagram이 동영상에서 프레임을 선택합니다.

업로드가 성공하면 작업 ID와 플랫폼 상태를 반환합니다:

{
  "success": true,
  "job_id": "job_reel_abc123",
  "platforms": {
    "instagram": {
      "status": "processing",
      "user": "mybrand"
    }
  }
}

share_mode의 대안으로 share_to_feed=true 또는 share_to_feed=false를 설정할 수도 있습니다. 둘 다 같은 결과를 만듭니다. thumb_offset을 사용하여 동영상에서 특정 프레임을 썸네일로 선택하세요 (값은 밀리초 단위).

사진 및 캐러셀 게시하기

단일 사진 또는 캐러셀 (다중 이미지) 게시물의 경우, /api/upload_photos 엔드포인트를 사용하세요. photos[] 매개변수를 사용하여 여러 파일을 업로드하면 자동으로 캐러셀이 생성됩니다.

curl -X POST https://api.upload-post.com/api/upload_photos \
  -H "권한 부여: API 키 your-api-key-here" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "user=mybrand" \
  -F "title=Our top 3 product picks this month" \
  -F "platform[]=instagram" \
  -F "instagram_first_comment=#productpicks #trending #shopnow"

photos[]에 둘 이상의 파일을 보내면 Instagram이 캐러셀 게시물을 생성합니다. 사용자는 업로드한 순서대로 이미지를 스와이프합니다. 단일 파일은 표준 사진 게시물을 생성합니다. Instagram은 캐러셀당 최대 10개의 이미지를 지원합니다.

동일한 콘텐츠를 여러 플랫폼에 동시에 게시할 때 Instagram 전용 캡션을 설정하려면 instagram_title을 사용할 수 있습니다. Instagram 캡션에 다른 플랫폼과 다른 해시태그나 멘션이 필요할 때 유용합니다.

첫 번째 댓글 자동 게시

instagram_first_comment 매개변수는 게시물이 게시된 직후 자동으로 댓글을 추가합니다. 이것은 가장 인기 있는 Instagram 전략 중 하나입니다: 캡션을 깔끔하게 유지하고 모든 해시태그를 첫 번째 댓글로 옮기는 것입니다.

curl -X POST https://api.upload-post.com/api/upload \
  -H "권한 부여: API 키 your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Quick tutorial: how to use our app" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "instagram_first_comment=#tutorial #howto #apptips #tech #productdemo"

왜 해시태그를 캡션에 넣지 않고 첫 번째 댓글을 사용할까요? Instagram의 알고리즘은 첫 번째 댓글의 해시태그를 캡션의 해시태그와 동일하게 발견 가능성을 위해 처리하지만, 캡션이 더 깔끔해 보입니다. 많은 브랜드와 크리에이터가 이 접근 방식을 선호하는 이유는 해시태그로 가득 찬 벽 대신 메시지에 시각적으로 집중할 수 있기 때문입니다.

공동 작업자 및 사용자 태그 사용

Instagram 협업 게시물은 두 계정이 하나의 콘텐츠를 공동 작성할 수 있게 해줍니다. 게시물은 두 프로필에 모두 표시되며, 참여도 (좋아요, 댓글, 공유)가 공유됩니다. collaborators 매개변수를 사용하여 공동 작업자를 초대하세요.

curl -X POST https://api.upload-post.com/api/upload \
  -H "권한 부여: API 키 your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Excited to announce our partnership with @partneraccount" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "collaborators=partneraccount,otheraccount" \
  -F "user_tags=partneraccount,photographer_jane" \
  -F "location_id=123456789"
  • collaborators는 쉼표로 구분된 Instagram 사용자 이름 목록을 받습니다. 초대된 사용자는 협업을 수락하라는 알림을 받습니다.
  • user_tags는 게시물 자체에 사용자를 태그합니다. 앱에서 사진에 사람을 태그하는 것과 유사합니다.
  • location_id는 게시물에 위치를 첨부합니다. Instagram 위치 검색 또는 Facebook Places API를 통해 위치 ID를 찾을 수 있습니다.

인스타그램 게시물 예약하기

모든 업로드 요청에 scheduled_date를 추가하면 미래 시점에 게시할 수 있습니다. 날짜는 ISO-8601 형식이어야 하며, 선택적으로 timezone을 지정할 수 있습니다.

curl -X POST https://api.upload-post.com/api/upload \
  -H "권한 부여: API 키 your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=Good morning! New content dropping today." \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "scheduled_date=2025-09-15T09:00:00Z" \
  -F "timezone=America/New_York"

특정 날짜 대신 add_to_queue=true를 사용할 수도 있습니다. 대기열 시스템은 설정된 일정에 따라 다음 사용 가능한 시간 슬롯을 선택하며, 수동으로 시간을 선택하지 않고 콘텐츠를 일괄 업로드하는 데 이상적입니다. 대기열 설정, 예약된 게시물 편집 및 콘텐츠 캘린더 관리에 대한 자세한 내용은 전체 예약 가이드를 참조하세요.

Python으로 자동화하기

공식 Python SDK를 사용하면 자동화 스크립트를 쉽게 구축할 수 있습니다. pip install upload-post로 설치한 다음 UploadPostClient를 사용하여 API와 상호작용하세요. 전체 안내는 Python 자동화 가이드를 확인하세요.

다음은 릴스를 게시하고, 사진 캐러셀을 업로드하고, 일주일 분량의 콘텐츠를 예약하는 전체 스크립트입니다:

from upload_post import UploadPostClient
from datetime import datetime, timedelta

client = UploadPostClient(api_key="your-api-key-here")

# 1. Post a Reel immediately
reel_response = client.upload_video(
    video_path="/path/to/reel.mp4",
    title="신제품 안내",
    user="mybrand",
    platforms=["instagram"],
    media_type="REELS",
    share_mode="FEED_AND_REELS",
    instagram_first_comment="#newproduct #walkthrough #tech"
)
print(f"릴 업로드됨: {reel_response['job_id']}")

# 2. Post a carousel of photos
carousel_response = client.upload_photos(
    photo_paths=[
        "/path/to/photo1.jpg",
        "/path/to/photo2.jpg",
        "/path/to/photo3.jpg"
    ],
    title="세 가지 각도, 하나의 제품.",
    user="mybrand",
    platforms=["instagram"],
    collaborators="partneraccount"
)
print(f"업로드된 캐러셀: {carousel_response['job_id']}")

# 3. Schedule Reels for the next 7 days
videos = [
    "monday.mp4", "tuesday.mp4", "wednesday.mp4",
    "thursday.mp4", "friday.mp4", "saturday.mp4", "sunday.mp4"
]

for i, video in enumerate(videos):
    publish_date = (datetime.now() + timedelta(days=i + 1)).replace(
        hour=10, minute=0, second=0, microsecond=0
    )
    response = client.upload_video(
        video_path=f"/path/to/{video}",
        title=f"Day {i + 1} of our launch week series",
        user="mybrand",
        platforms=["instagram"],
        media_type="REELS",
        scheduled_date=publish_date.isoformat(),
        timezone="Europe/Madrid"
    )
    print(f"Scheduled {video} for {publish_date}: {response['job_id']}")

이 스크립트는 마드리드 시간 오전 10시에 하루에 하나의 릴스를 일주일 동안 예약합니다. 워크플로우에 맞게 hour, timezone, 파일 경로를 조정하세요. 일괄 업로드 시나리오의 경우, 디렉토리 또는 CSV 파일에서 동영상 경로를 읽고 같은 방식으로 반복할 수 있습니다.

노코드 자동화: n8n 및 Make.com

코드 작성보다 시각적 워크플로우를 선호한다면, n8nMake.com 모두 Upload-Post와 바로 연동됩니다.

n8n

n8n은 오픈소스 워크플로우 자동화 도구입니다. HTTP Request 노드를 사용하여 Upload-Post API를 호출할 수 있습니다. Google Drive에서 동영상 파일을 읽고, Google Sheet에서 캡션을 추가하고, 자동으로 릴스로 게시하는 인스타그램 릴스 n8n 템플릿을 준비해 두었습니다. 더 많은 설정을 보려면 사용 가능한 모든 n8n 템플릿을 찾아보세요.

Make.com

Make.com (이전 Integromat)은 시나리오 기반 접근 방식을 사용합니다. HTTP 모듈을 추가하고 Upload-Post 엔드포인트와 API 키를 설정한 다음 원하는 트리거(Google Sheets의 새 행, Dropbox의 새 파일, 예약 타이머 등)에 연결하세요. 결과는 코드를 작성하는 것과 동일하지만, 드래그 앤 드롭 인터페이스를 사용합니다.

두 도구 모두 예약 매개변수(scheduled_date, add_to_queue)를 지원하므로, 터미널을 건드리지 않고도 완전한 Instagram 콘텐츠 캘린더를 구축할 수 있습니다.

인스타그램 콘텐츠 요구 사항

Upload-Post는 가능한 경우 내장된 FFmpeg API를 사용하여 콘텐츠를 자동으로 조정하지만, 품질을 최적화하려면 Instagram이 기대하는 사양을 알아 두는 것이 좋습니다.

형식 사양 세부 사항
동영상 (릴스) 최대 파일 크기 1 GB
형식 MP4, MOV
화면 비율 9:16 권장, 1:1 및 4:5 지원
재생 시간 3초 ~ 15분
해상도 1080x1920 권장
사진 최대 파일 크기 8 MB
형식 JPEG, PNG
화면 비율 1:1, 4:5, 1.91:1
최대 크기 1440x1440 (정사각형), 1080x1350 (세로)
캐러셀 최대 이미지 수 게시물당 10개
혼합 미디어 사진과 동영상 결합 가능

자주 묻는 질문

Does it work with personal Instagram accounts?

아닙니다. Instagram의 API는 비즈니스 및 크리에이터 계정만 지원합니다. 개인 계정은 어떤 공식 API를 통해서도 접근할 수 없습니다. 다행히 비즈니스 또는 크리에이터 계정으로 전환하는 것은 무료이며 Instagram 앱 설정에서 약 30초면 완료됩니다. Facebook 페이지에 연결해야 하는데, Upload-Post가 계정 연동 과정에서 이를 처리합니다.

API로 Instagram 스토리를 게시할 수 있나요?

Instagram의 공식 API는 스토리 게시를 지원하지 않습니다. 이는 Upload-Post가 아닌 Meta가 부과한 제한입니다. 스토리는 Instagram 앱 자체를 통해서만 만들 수 있습니다. 향후 API를 통한 스토리 지원이 제공되면, Upload-Post가 이를 추가할 것입니다.

자동 게시를 하면 계정이 섀도우밴되나요?

아닙니다. Upload-Post는 Instagram의 공식 Content Publishing API를 사용합니다 (Hootsuite, Buffer 및 기타 모든 공인 도구가 사용하는 것과 동일한 API). 게시물은 Instagram의 공식 파이프라인을 통해 전달되므로 섀도우밴이나 계정 제재의 위험이 없습니다. 이는 Instagram의 이용 약관을 위반하는 브라우저 자동화나 비공식 봇과는 근본적으로 다릅니다. 현재 Hootsuite레이터와 같은 도구를 사용 중이라면, Upload-Post는 동일한 공식 액세스를 사용하는 개발자 친화적인 대안입니다.

무료 플랜이 있나요?

네. 모든 Upload-Post 계정에는 신용카드 없이 월 10회 무료 업로드가 포함됩니다. API를 테스트하고, 워크플로우를 검증하고, 유료 플랜을 선택하기 전에 모든 것이 잘 작동하는지 확인하기에 충분합니다. 소셜 미디어 기념일 캘린더를 확인하여 다가오는 이벤트에 맞춰 첫 번째 게시물을 계획하세요.

오늘부터 Instagram 게시물 자동화를 시작하세요

하나의 API 호출. 릴스, 사진, 캐러셀, 첫 번째 댓글, 공동 작업자 및 예약. 모두 자동으로 처리됩니다.

신용카드 불필요. 무료 업로드 10회 포함.