무조건 따라하기:: n8n으로 블로그 글을 AI가공 -> 스레드/릴스 자동 포스팅하는 3단계 실전 워크플로우
무조건 따라하세요! n8n으로 블로그 글을 AI가공 -> 스레드/릴스 자동 포스팅하는 3단계 실전 워크플로우
🚀 오프닝 (인트로)
이론은 끝났습니다! 앞선 두 편의 글에서 자동화 비서의 필요성을 확인하고, n8n 설치 및 Meta/Google API 크레덴셜 설정이라는 필수 기반 작업을 모두 완료하셨을 겁니다. 이제 드디어 실제 콘텐츠 확산 워크플로우를 구축하여, 여러분의 블로그 글이 발행되는 순간 AI가 이를 감지하고 스레드나 릴스에 자동으로 포스팅하도록 만들 차례입니다.
이 글은 단순한 이론 설명이 아닌, '무조건 따라 하면 구축되는' 실전 가이드입니다. 워크플로우를 '블로그 감지', 'AI 가공', 'Meta 배포'의 명확한 3단계로 나누어 설명하며, 각 단계에서 어떤 노드를 사용하고 어떤 값을 입력해야 하는지 How-to에 집중하여 알려드립니다.
지금부터 저와 함께 n8n 워크플로우를 완성하여, 콘텐츠 확산에 소모하던 시간을 획기적으로 절약하는 멋진 자동화 비서를 탄생시켜 봅시다!
💡1: 워크플로우의 시작: 블로그 포스팅 감지 및 데이터 추출 (How-to: 단계 1)
워크플로우의 가장 첫 번째이자 핵심은 '트리거(Trigger)' 노드를 설정하여 블로그에 새 글이 올라왔음을 자동으로 감지하는 것입니다. 이 단계에서는 블로그 글의 핵심 정보를 추출하고, 중복 포스팅을 방지하는 로직까지 구축합니다.
1. 'RSS Feed Read' 노드를 이용한 포스팅 감지
대부분의 블로그 플랫폼은 RSS 피드를 제공합니다. RSS는 새 글이 발행될 때마다 업데이트되는 데이터 규격입니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 1-1. 노드 추가 | n8n 워크플로우 빌더에서 'RSS Feed Read' 노드를 검색하여 추가합니다. | 'Add First Node' 버튼을 클릭하고 'RSS Feed Read'를 선택합니다. |
| 1-2. URL 입력 | 블로그의 RSS 피드 주소를 입력합니다. (예: https://[블로그주소]/feed.xml 또는 /rss) | 'URL' 필드에 블로그 RSS 주소를 정확하게 입력합니다. |
| 1-3. 실행 설정 | 주기적으로 새 글이 있는지 확인하도록 설정합니다. (실제 워크플로우 실행 시에만 적용) | 'Options' 섹션에서 'Mode'를 'Read New Items'로 설정합니다. |
| 1-4. 스케줄 설정 | n8n 서버가 새 글을 확인할 주기를 지정합니다. | 'Settings' 탭에서 'Execution Mode'를 'Recurring'으로 설정하고, 'Interval'을 '1 Hour' (1시간) 등으로 설정합니다. |
2. 'Set' 노드를 이용한 핵심 데이터 추출
RSS 노드는 많은 데이터를 가져오지만, 다음 단계(AI 가공)에 필요한 핵심 정보만 추출하고 이름을 정의해야 합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 2-1. 노드 추가 | 'RSS Feed Read' 노드 뒤에 'Set' 노드를 연결합니다. | 'RSS Feed Read' 노드의 출력 포트를 클릭하여 'Set' 노드를 추가합니다. |
| 2-2. 변수 정의 | 필요한 데이터만 새 변수로 정의합니다. | 'Values' 섹션에서 'Add Value'를 클릭하고 아래 변수를 정의합니다. |
| a) 포스팅 제목 | 'Name'을 title로, 'Value'를 Expression으로 설정 후 RSS 출력 값 중 '제목(Title)'을 연결합니다. | |
| b) 포스팅 URL | 'Name'을 url로, 'Value'를 Expression으로 설정 후 RSS 출력 값 중 '링크(Link)'를 연결합니다. | |
| c) 포스팅 내용 | 'Name'을 content로, 'Value'를 Expression으로 설정 후 RSS 출력 값 중 '내용(Content)'을 연결합니다. |
3. 중복 방지 로직 (선택 사항: 안정성 강화)
새 글이 아닌데도 시스템 오류로 인해 재감지되는 것을 방지하기 위해, 이미 포스팅된 글인지 확인하는 단계를 추가합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 3-1. 노드 추가 | 'Set' 노드 뒤에 'Google Sheets' 노드를 추가합니다. | 'Operation'을 'Get All' (기존 포스팅 목록 불러오기)로 설정하고, 이전 글에서 설정한 Google Drive 크레덴셜을 적용합니다. |
| 3-2. 'IF' 노드 추가 | Google Sheets 뒤에 'IF' 노드를 추가합니다. | 'Conditions'에서 'Value 1'을 {{ $json.url }}로 설정하고, 'Operation'을 **'not in'**으로, 'Value 2'를 Google Sheets 노드의 URL 출력 값으로 설정합니다. |
| 3-3. 역할 | 새 글의 URL이 스프레드시트 목록에 '없을 경우'에만 다음 단계(AI 가공)로 데이터를 넘기도록 설정됩니다. | 'IF' 노드의 'True' 포트만 다음 단계로 연결합니다. |
이로써 워크플로우는 블로그에 새 글이 올라왔음을 정확히 감지하고, 필요한 데이터를 추출하여 다음 단계로 넘길 준비를 마쳤습니다.
⚙️본론 2: 지능적인 가공: AI를 활용한 텍스트 변환 및 최적화 (How-to: 단계 2)
블로그에서 추출한 원문은 그대로 소셜 미디어에 올릴 수 없습니다. 스레드는 짧고 후킹해야 하고, 릴스는 영상 소재와 캡션이 필요합니다. 이 단계에서는 AI(GPT/Gemini 등)를 활용하여 원문을 각 플랫폼에 최적화된 형식으로 지능적으로 변환합니다.
1. 'Message a model' 노드를 이용한 AI 연동
n8n의 AI 노드를 사용하여 콘텐츠 가공 작업을 수행합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 1-1. 노드 추가 | 'Set' 노드 (또는 'IF' 노드의 True 포트) 뒤에 'Message a model' 노드를 추가합니다. | AI 서비스(예: OpenAI, Google Gemini 등)에 맞는 노드를 선택합니다. |
| 1-2. 크레덴셜 적용 | 이전에 설정한 AI API 크레덴셜을 노드에 연결합니다. | 'Credentials' 드롭다운에서 저장해 둔 AI API 크레덴셜을 선택합니다. |
| 1-3. 모델 및 프롬프트 설정 | 사용할 AI 모델을 선택하고, 가장 중요한 프롬프트를 입력합니다. | 'Model' 필드에 gpt-4o 또는 gemini-2.5-pro 등 원하는 모델을 선택합니다. |
2. 스레드/X에 최적화된 텍스트 가공 프롬프트
AI에게 짧고 임팩트 있는 스레드 포스팅을 생성하도록 지시합니다.
프롬프트 입력 예시:
"당신은 최고의 소셜 미디어 카피라이터입니다. 다음 블로그 글의 내용을 분석하고, 280자 이내로 사람들이 즉시 클릭하고 싶은 후킹한 문장 1개와 본문 요약 1개, 그리고 트래픽을 유도할 수 있는 핵심 해시태그 3개를 생성해 주세요. 출력은 오직 JSON 형식으로만 해주세요."
JSON{ "hook": "후킹한 문장", "summary": "본문 요약", "hashtags": "#태그1 #태그2 #태그3" }입력 데이터 연결: 'Input' 섹션에서 블로그 원문(
{{ $json.content }})을 AI 모델에게 전달합니다. AI는 이 원문을 바탕으로 요청된 JSON 형식의 데이터를 반환합니다.
3. 'Code' 노드를 이용한 최종 포스팅 텍스트 결합 (스크립트 상세)
AI가 반환한 JSON 데이터와 원본 URL을 결합하여 최종적으로 Meta API에 보낼 텍스트를 완성합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 3-1. 노드 추가 | 'Message a model' 노드 뒤에 'Code' 노드를 추가합니다. | 'Code' 노드는 자바스크립트를 사용하여 데이터를 자유롭게 가공할 수 있습니다. |
| 3-2. 스크립트 작성 | AI 결과를 불러와 최종 텍스트를 만듭니다. | 다음 스크립트 예시를 입력합니다. (AI의 출력이 $json.choices[0].message.content에 담겨 있다고 가정) |
// AI가 JSON을 반환한다고 가정하고 파싱
const aiData = JSON.parse(items[0].json.choices[0].message.content);
// 최종 포스팅 텍스트 생성
const postText = aiData.hook +
'\n\n' +
aiData.summary +
'\n\n' +
'원본 보기: ' + items[0].json.url +
'\n\n' +
aiData.hashtags;
return [{
json: {
postText: postText,
// 다른 노드에서 쉽게 참조할 수 있도록 데이터를 저장
url: items[0].json.url
}
}];
팁:
Code노드는$json대신items[0].json을 사용하여 이전 노드의 데이터를 참조합니다. AI가 JSON으로 반환하도록 요청하면, 데이터 가공이 훨씬 쉬워집니다.
이제 블로그 글은 스레드/X 포스팅에 최적화된 텍스트로 변환되었고, 최종 포스팅 텍스트(postText)가 준비되었습니다.
🛡️ 본론 3: 최종 배포: Meta API를 통한 스레드/릴스 실제 포스팅 (How-to: 단계 3)
콘텐츠 가공을 완료했다면, 이제 마지막 단계는 준비된 텍스트와 이미지/영상을 Meta 플랫폼(스레드, 페이스북, 인스타그램)에 발행하는 것입니다. 이 단계에서는 Meta API를 직접 호출하는 'HTTP Request' 노드를 사용합니다.
1. 'HTTP Request' 노드 설정 (Meta API 연동)
Meta API 연동은 전용 노드 대신 범용성이 높은 HTTP Request 노드를 사용하는 것이 가장 유연합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 1-1. 노드 추가 | 'Code' 노드 뒤에 'HTTP Request' 노드를 추가합니다. | 'Code' 노드의 출력 포트를 클릭하여 노드를 연결합니다. |
| 1-2. 크레덴셜 적용 | 이전에 설정한 Meta API 크레덴셜을 연결합니다. | 'Credentials' 드롭다운에서 저장해 둔 Meta API 크레덴셜을 선택합니다. |
| 1-3. 메소드 및 URL 설정 | 포스팅은 'POST' 메소드를 사용하며, 대상 페이지/계정 ID를 포함해야 합니다. | 'Method'를 'POST'로 설정합니다. 'URL'에 다음 형식의 Meta Graph API 엔드포인트를 입력합니다. (예: https://graph.facebook.com/v19.0/[페이지_ID]/feed) |
페이지 ID 확인: 포스팅하려는 Facebook 페이지 ID를 미리 확인해 두어야 합니다. 이 ID는 API 호출의 필수 요소입니다.
2. 스레드/페이스북 텍스트 포스팅 (가장 일반적인 형태)
가장 간단한 형태인 텍스트 포스팅을 먼저 실행합니다. 스레드 포스팅은 Facebook 페이지 포스팅과 동일한 API를 사용합니다.
| 순서 | 작업 내용 | n8n 설정 방법 |
| 2-1. 데이터 형식 설정 | API에 보낼 데이터의 형식을 지정합니다. | 'Body Parameters' 섹션으로 이동합니다. 'Body Content Type'을 'Form Data'로 설정합니다. |
| 2-2. 텍스트 바디 추가 | 'message' 필드에 본론 2에서 준비한 최종 포스팅 텍스트를 담습니다. | 'Add Parameter'를 클릭하고 'Name'을 message로, 'Value'를 Expression(={{ $json.postText }})으로 설정합니다. |
| 2-3. 토큰 전달 (선택) | 크레덴셜 설정이 잘 되었다면 자동으로 토큰이 전달되지만, 명시적으로 추가할 수 있습니다. | 'Name'을 access_token으로, 'Value'를 Expression으로 설정 후 Meta 크레덴셜의 액세스 토큰을 연결합니다. |
3. 인스타그램 릴스/이미지 포스팅의 차이점 (파일 업로드)
릴스(영상)나 이미지 포스팅은 텍스트 포스팅과 달리, 파일의 공개 URL을 먼저 전달해야 합니다.
API 엔드포인트 변경: URL이
.../[계정_ID]/media와 같이 미디어 업로드용 엔드포인트로 달라집니다.릴스/이미지 필수 파라미터:
image_url 또는 video_url: Google Drive, S3 등에서 접근 가능한 영상/이미지 파일의 공개 URL을 Value로 전달해야 합니다. (이 파일 URL은 본론 2의 'Code' 노드 이전에 준비되어야 합니다.)
caption: 본론 2에서 가공한 릴스/쇼츠용 캡션 텍스트(
{{ $json.postText }})를 Value로 전달합니다.is_carousel_item/media_type: 릴스 포스팅 시 미디어 유형을REELS로 명시하는 추가 파라미터가 필요합니다.
4. 성공/실패 알림 추가 ('IF' 및 'Gmail' 노드)
포스팅이 성공했는지 여부를 확인하고, 실패 시 알림을 받도록 설정하여 워크플로우의 안정성을 높입니다.
'IF' 노드 추가:
HTTP Request노드 뒤에 'IF' 노드를 추가합니다. 'Value 1'을{{ $json.statusCode }}로 설정하고, 'Operation'을is equal to로, 'Value 2'를 200 (HTTP 성공 코드)으로 설정합니다.'Gmail' 노드 연결: 'IF' 노드의 'False' 포트(실패 시)에 'Gmail' 노드를 연결합니다. 이 노드에서 'Operation'을 'Send an Email'로 설정하고, 실패 정보(에러 메시지)를 담아 사용자 이메일로 전송합니다.
축하합니다! 이 3단계를 통해 여러분은 블로그 글을 AI로 가공하고 Meta 플랫폼에 자동 포스팅하는 완벽한 워크플로우를 구축했습니다. 이제 n8n 빌더에서 이 노드들을 연결하고 'Activate' 버튼을 누르면 자동화 비서가 실행됩니다.
📣 클로징: 당신의 자동화 비서가 탄생했습니다 (CTA 포함)
축하드립니다! 여러분은 이 세 단계를 통해 블로그 포스팅 감지, AI를 통한 지능적인 콘텐츠 가공, 그리고 Meta 플랫폼(스레드/릴스)으로의 최종 배포를 완벽하게 통합하는 n8n 워크플로우를 성공적으로 구축했습니다.
이 워크플로우를 통해 여러분의 자동화 비서는 다음과 같은 핵심 작업을 수행합니다.
자동 감지: RSS 피드를 통해 새로운 블로그 글을 놓치지 않고 확인합니다.
지능적 재가공: AI가 글을 분석하여 스레드/릴스에 최적화된 후킹 문구와 해시태그를 생성합니다.
안정적 배포: 안전하게 설정된 Meta 크레덴셜을 통해 정확한 시간에 포스팅을 발행합니다.
다음 단계:
이 워크플로우를 'Activate'하고 자동화의 효과를 만끽하십시오. 다음 글에서는 이 시스템을 확장하여 '완전 자동화된 유튜브 쇼츠 업로드 워크플로우'를 구축하는 방법을 다루겠습니다. 가장 트래픽이 높은 두 채널(Meta, YouTube)의 자동화를 완성하여 콘텐츠 영향력을 극대화하세요!
#가나 투데이 #ganatoday
그린아프로




