인스타 카드뉴스 매일 자동 발행, n8n 으로 짜는 법

인스타그램 캐러셀을 n8n 과 공식 API 로 매일 자동 발행하는 흐름을 정리해요. 이미지 주소, 중복 방지, 완료 확인, 실패 알림까지 따라 할 수 있어요.

셀루모2026.10.09 · 9분 읽기
목차

콘텐츠를 만들어 두고도 올리는 일이 번거로워 계정이 며칠씩 멈춘 적 있으신가요? 이 글은 카드뉴스 한 편을 매일 같은 시각에 인스타그램 공식 API 로 올리는 자동화를, 어떤 순서로 어떤 안전장치를 두고 짜는지 정리해요.

혹시 이런 고민 있으신가요?

  • 카드뉴스는 만들어 두는데, 올리는 시간을 못 지켜서 업로드가 들쭉날쭉해요.
  • 자동 업로드를 붙이고 싶지만, 같은 글이 하루에 두 번 올라가거나 반쯤 올라가다 멈추는 일이 무서워요.
  • 비공식 도구를 쓰면 계정이 막힌다는 말을 들어서, 공식 방법으로 하고 싶어요.

이 글을 읽으면

  • 인스타그램 공식 API 로 여러 장짜리 게시물(캐러셀)을 올리는 순서를 설명할 수 있어요.
  • 이미지 주소, 목록 파일, 일정 도구를 이어 매일 한 편을 올리는 흐름을 설계할 수 있어요.
  • 중복 업로드, 토큰 만료, 중간 실패를 막는 장치를 자기 상황에 맞게 정할 수 있어요.

1단계. 올릴 수 있는 계정과 권한부터 갖추기

먼저 용어를 짚을게요. API 는 프로그램이 다른 서비스의 기능을 대신 쓰게 해 주는 창구예요. 캐러셀은 한 게시물에 사진을 여러 장 넘겨 보게 한 형태를 말해요. 토큰은 "이 프로그램이 내 계정에 글을 올려도 된다" 는 허락을 담은 긴 문자열이에요.

인스타그램에 글을 올리는 공식 API 는 Meta 가 제공하고, 개인 계정은 쓸 수 없고 프로페셔널 계정(비즈니스 또는 크리에이터)이어야 해요. 계정 전환은 앱 설정에서 몇 분이면 돼요.

Meta 문서에 따르면 로그인 방식을 인스타그램 로그인으로 고르면 페이스북 페이지를 연결하지 않아도 되고, 필요한 권한은 기본 정보와 콘텐츠 발행 두 가지예요. 또 자기 계정이나 자기가 관리하는 계정에만 쓴다면 표준 접근 권한으로 충분해서 앱 검수를 받지 않아도 돼요. 혼자 또는 작은 팀이 자기 계정에 올리는 용도라면 가장 가벼운 길이에요.

저희는 이 방식으로 개발자 앱을 만들고 계정을 연결했어요. 그 뒤 앱 화면에서 토큰을 발급받아 자동화 도구의 자격증명 칸에만 넣었어요.

TIP

토큰은 코드, 설정 파일, 이슈 본문 어디에도 적지 마세요. 자동화 도구의 자격증명 저장소에만 두고, 워크플로를 파일로 내보내 공유할 때는 "어떤 자격증명을 쓰는지" 이름만 남기게 하세요.

참고

앱이 개발 모드일 때 API 로 올린 게시물이 앱 역할이 없는 계정에도 보이는지는 공식 문서에서 확인하지 못했어요. 가설로 두고, 첫 발행 뒤에 다른 계정으로 직접 열어 보세요. 안 보이면 앱을 라이브로 바꿔야 하고, 그때는 개인정보처리방침 주소가 필요할 수 있어요.

2단계. 이미지를 주소로 열어 두기

이 단계가 가장 자주 막혀요. 인스타그램 발행 API 는 파일을 직접 받지 않고, 이미지가 있는 주소를 받아서 그 주소로 가져가요. Meta 문서의 조건은 두 가지예요.

  • 이미지는 JPEG 만 받아요.
  • 발행하는 순간에 누구나 열 수 있는 공개 HTTPS 주소여야 해요.

그래서 카드를 PNG 로 만들어 두었다면 JPEG 로 바꾸는 단계가 필요하고, 이미지를 비공개 저장소에 두었다면 공개할 길을 따로 만들어야 해요.

저희는 이미 공개 중인 블로그 사이트가 글 폴더를 읽고 있었어요. 그래서 사이트가 배포될 때 카드를 서버에서 그려 JPEG 로 열어 주는 주소를 만들었어요. 규칙은 단순해요. 1번이 표지, 그다음이 본문, 마지막이 마무리 카드예요. 크기는 인스타그램 세로 비율인 1080x1350 이에요.

이렇게 하면 장점이 두 가지 있어요.

  • 이미지를 어디에도 저장하지 않아요. 글이 그대로 원본이고, 이미지는 배포 때마다 같은 결과로 다시 나와요.
  • 새 공개 저장소를 만들 필요가 없어요. 이미 있는 사이트의 주소 하나가 늘 뿐이에요.

여러분이 이미 사이트가 없다면, 클라우드 저장소의 공개 버킷에 JPEG 를 올려 두는 방식으로도 같은 효과를 낼 수 있어요. 핵심은 "발행 시각에 공개 주소로 열린다" 하나예요.

TIP

카드 이미지를 사람이 눈으로 만든다면 이 단계가 곧 "내보내기를 JPEG 로, 파일 이름을 순서대로" 가 돼요. 자동화는 그 파일 이름 규칙에 기대니, 처음부터 규칙을 정해 두세요.

3단계. 올릴 거리를 목록 파일 하나로 내보내기

자동화 도구가 매번 글 폴더나 데이터베이스를 뒤지게 하면 연결이 복잡해져요. 대신 사이트가 "지금 올릴 수 있는 것" 목록을 JSON 파일 하나로 열어 주게 했어요. JSON 은 프로그램이 읽기 쉬운 표 모양의 텍스트예요.

목록에는 최신 글부터 일곱 편까지, 글마다 아래 네 가지만 담아요.

JSON
{  "posts": [    {      "slug": "example-post",      "publishedAt": "2026-10-09",      "images": [        "https://example.com/blog/example-post/instagram/1.jpg",        "https://example.com/blog/example-post/instagram/2.jpg"      ],      "caption": "캡션 본문\n\n#해시태그1 #해시태그2"    }  ]}

캡션은 본문, 빈 줄, 해시태그 순서로 이어서 한 덩어리로 만들어요. 인스타그램은 캡션 2,200자, 해시태그 30개가 한도라고 알려져 있어요. 한도를 넘기면 발행이 실패하니, 목록을 만드는 쪽에서 미리 검사하는 편이 안전해요.

자동화 도구는 이 파일 하나만 읽으면 돼요. 글을 어디에 어떻게 보관하든 도구 쪽 설정은 바뀌지 않아요. 나중에 채널을 하나 더 붙일 때도 같은 목록을 읽으면 되니까 확장도 쉬워요.

TIP

목록에 초안 글이 섞이지 않게 하세요. "공개된 글만 목록에 나온다" 를 목록을 만드는 쪽에서 보장하면, 도구 쪽에 예외 처리를 늘리지 않아도 돼요.

4단계. 올리기 전에 두 번 확인하기

일정 도구는 같은 일을 두 번 돌릴 수 있어요. 손으로 시험 실행을 하거나, 다시 켜거나, 이전 실행이 늦게 끝나는 경우예요. 그래서 발행 전에 확인 두 가지를 먼저 해요.

첫째, 오늘 이미 올렸는가를 계정에 직접 물어봐요. 계정의 최근 게시물 목록에서 가장 최근 게시물의 시각이 오늘(자기 시간대 기준) 이면 멈춰요.

둘째, 목록에서 어떤 글을 고를지 정해요. 저희 기준은 이래요.

  • 글의 날짜가 오늘이거나 어제인 글만 후보예요.
  • 그중 아직 올리지 않은 가장 최신 글 한 편만 올려요.
  • 후보가 없으면 아무것도 하지 않고 조용히 끝나요.

"지난 글을 몰아서 올리지 않는다" 는 규칙이 중요해요. 어느 날 글 만들기가 실패했을 때 그날을 비워 두는 편이, 며칠 전 글이 갑자기 올라오는 편보다 계정의 흐름을 덜 해쳐요.

올린 글의 식별자는 도구 안의 저장 칸(n8n 의 정적 데이터)에 남겨요. 다만 이 저장 칸은 워크플로를 지우고 다시 만들면 사라지고, 손으로 실행했을 때는 저장되지 않는 경우도 있어요. 그래서 저장 칸만 믿지 말고 위의 "계정에 직접 물어보기" 를 같이 두는 이중 장치를 권해요.

TIP

중복 방지는 한 겹이 아니라 두 겹으로 두세요. 한 겹은 도구 안의 기록, 한 겹은 결과가 있는 곳(계정) 에 묻기예요. 한쪽이 지워져도 다른 쪽이 막아 줘요.

5단계. 컨테이너를 만들고, 끝났는지 확인한 뒤 발행하기

캐러셀 발행은 한 번의 호출이 아니라 세 단계예요. 컨테이너는 "발행 전에 미리 만들어 두는 임시 상자" 라고 생각하면 돼요.

  1. 카드마다 컨테이너를 하나씩 만들어요. 이때 이미지 주소를 넘기고, 이 컨테이너가 캐러셀의 한 장이라고 표시해요.
  2. 카드 컨테이너들의 식별자를 순서대로 묶는 부모 컨테이너를 만들고, 캡션을 여기에 달아요.
  3. 부모 컨테이너가 완료 상태가 되면 발행을 요청해요.

3번에서 바로 발행하면 실패할 수 있어요. 인스타그램이 이미지를 가져와 처리하는 데 시간이 걸리기 때문이에요. 그래서 중간에 기다리며 상태를 확인하는 반복이 필요해요.

저희는 20초마다 상태 값을 읽고, 15번 안에 완료가 되지 않으면 실패로 봐요. 대략 5분이에요. 이 숫자는 처음 만들 때 정한 값이니, 여러분은 첫 실행에서 실제로 걸린 시간을 재고 그 두 배쯤으로 정하세요. 장 수가 많을수록 오래 걸려요.

흐름 전체는 아래 그림과 같아요.

이미지 주소에서 발행까지의 흐름목록 파일을 읽고, 확인한 뒤, 컨테이너 세 단계를 거쳐 발행해요

한 가지 알아 둘 한도도 있어요. 캐러셀은 최대 10장이고, 24시간 안에 API 로 발행할 수 있는 게시물은 100건이에요(Meta 문서). 하루 한 편이면 한도는 걱정하지 않아도 돼요.

참고

카드 컨테이너까지 만들고 발행 직전에 멈췄다면, 게시물은 아직 올라가지 않았다고 보는 것이 이 구조의 전제예요. 발행을 요청하기 전에는 밖에 보이지 않으므로 처음부터 다시 돌려도 중복이 생기지 않을 거라고 생각하지만, 공식 문서에서 확인한 내용은 아니라서 가설로 두고 시험해 보세요.

6단계. 실패하면 사람이 볼 곳에 남기기

자동화는 조용히 실패하는 것이 가장 위험해요. 그래서 어느 단계에서든 API 가 오류를 돌려주면 GitHub 이슈를 하나 열어요. 이슈를 고른 이유는 이미 팀이 매일 보는 곳이어서, 새 알림 채널을 만들지 않아도 되기 때문이에요.

이슈에는 이렇게 적어요.

  • 제목: 실패한 단계 이름과 글의 식별자
  • 본문: API 가 돌려준 오류 응답
  • 라벨: 사람이 봐야 한다는 표시

본문에서 꼭 지울 것이 있어요. 요청 주소에 토큰이 붙어 있으면 그대로 이슈에 들어가서 새어 나가요. 본문에 넣기 전에 토큰 값을 가리는 처리를 한 번 거치세요.

자주 만나는 오류도 알려 드릴게요. 저희는 인증 정보를 설정하는 칸에 이름을 잘못 적어서, 토큰이 엉뚱한 이름으로 붙어 "유효하지 않은 토큰" 오류(코드 190)를 받은 적이 있어요. 요청 기록에서 토큰이 정확히 access_token 이라는 이름으로 붙었는지 보면 바로 찾을 수 있어요.

토큰에는 수명이 있어요. 장기 토큰은 60일 동안 유효하고, 만료 전에 갱신해야 해요. 저희는 아직 자동 갱신을 만들지 못해서, 만료 전에 앱 화면에서 토큰을 다시 발급받아 자격증명 값을 바꿔야 해요. 갱신 전용 워크플로를 따로 두는 것이 정석이에요.

TIP

토큰 만료일은 발급한 날에 60일을 더해 달력에 적어 두세요. 자동화가 멈추는 가장 흔한 원인이 이 날이에요.

자주 묻는 질문

Q1. 사람이 검토하는 단계를 넣어야 하나요?

처음 몇 주는 넣는 편이 좋아요. 글 만들기 일정 앞에 "승인" 단계를 하나 두면 돼요. 저희는 글도 같은 방식으로 사람 검토 없이 공개하고 있어서 같은 기준을 적용했지만, 글이 사실이 아닌 내용을 담을 위험이 있다면 검토를 남기세요. 그 위험은 자동화 도구가 아니라 글 만드는 규칙으로 줄여야 해요.

Q2. 비공식 자동화 도구를 쓰면 안 되나요?

권하지 않아요. 비공식 방식은 계정 정지 사유가 될 수 있다고 알려져 있어요. 공식 API 는 이 글의 순서만 지키면 개인이나 작은 팀도 쓸 수 있고, 규칙이 바뀌어도 문서가 있어서 대응할 수 있어요.

Q3. 하루 한 번이 아니라 여러 번 올리려면요?

목록 고르기 규칙만 바꾸면 돼요. 다만 2회 이상이면 "오늘 이미 올렸나" 확인을 "마지막 게시물로부터 일정 시간이 지났나" 로 바꿔야 해요. 두 겹 중복 방지의 기준을 시간으로 바꾸는 거예요.

정리

  • 공식 API 는 프로페셔널 계정과 두 가지 권한이면 되고, 자기 계정용이면 앱 검수가 필요 없어요.
  • 이미지는 발행 시각에 공개 HTTPS 로 열리는 JPEG 주소여야 해요.
  • 올릴 거리는 목록 파일 하나로 모으면 도구 쪽 설정이 단순해져요.
  • 중복 방지는 도구 안의 기록과 계정에 직접 묻기, 두 겹으로 두세요.
  • 컨테이너를 만든 뒤 완료 확인을 하고 발행하며, 실패는 사람이 보는 곳에 남기세요.

자동화의 목표는 사람을 없애는 것이 아니라, 사람이 꼭 봐야 할 순간에만 부르는 것이에요.

이어서 읽기 좋은 글