✅ 완료 · 2026-04-16
n8n 워크플로우 B
Blogger 자동 발행 완전 설정 가이드
Google Sheets → Blogger API 자동 발행 + 상태 업데이트 완전 자동화
1
Schedule Trigger자동 실행 주기 설정
| 항목 | 설정값 |
|---|---|
| Trigger 방식 | Interval |
| 실행 간격 | 30분마다 |
| 실행 시간대 | 08:00 ~ 12:30 |
| 효과 | 4시간 동안 최대 8편 순차 발행 |
08:001편 발행
08:302편 발행
09:003편 발행
09:304편 발행
10:00 ~5~8편 계속
2
Get row(s) in sheetGoogle Sheets 조회
| 항목 | 설정값 |
|---|---|
| Operation | Get Rows |
| Document | By URL — Google Sheets URL 입력 |
| Sheet | 시트1 |
| 조회 조건 | publishAt ≤ 현재시간 AND status = 대기 |
| 출력 | 4 items (대기 상태 행 전체) |
⚠️ 중요: A1 셀에 반드시
row_number 헤더가 있어야 합니다. A열 데이터는 실제 시트 행 번호(2,3,4,5...)로 입력.
3
If 노드발행 대상 존재 여부 확인
| 분기 | 조건 | 다음 단계 |
|---|---|---|
| true | 발행할 행이 존재함 | Code 노드로 진행 |
| false | 대기 항목 없음 | 워크플로우 종료 |
4
Code in JavaScriptHTML 본문 조립 (Prepare Posts v2)
| 처리 항목 | 내용 |
|---|---|
| content 파싱 | JSON 문자열 → 객체 변환 |
| HTML 구조 조립 | 썸네일 SVG, 목차, 본론 3개, 인포그래픽, CTA |
| 시리즈 목차 | 하단 시리즈 네비게이션 추가 |
| 출력 | 1 item (완성된 HTML 본문) |
5
HTTP RequestBlogger API 포스트 발행
| 항목 | 설정값 |
|---|---|
| Method | POST |
| URL | https://www.googleapis.com/blogger/v3/blogs/{blogId}/posts |
| Authentication | Google OAuth2 |
| Body (title) | {{ $json.title }} |
| Body (content) | {{ $json.html_content }} |
| 응답 필드 | id, status, published, updated, url, selfLink, blog.id 등 |
✅ 성공 시 응답에
published, url, selfLink 포함
6
Edit Fields (Set)⭐ 핵심 노드 — 행 식별자 복원
ℹ️ HTTP Request 이후
row_number와 id 등 시트 원본 값이 사라지므로 반드시 이 노드에서 복원해야 합니다.
| 설정 항목 | 값 | 비고 |
|---|---|---|
| id | {{ $('Get row(s) in sheet').item.json.id }} | 행 매칭 기준값 |
| status | 완료 | 대기 → 완료 변경 |
| Mode | Manual Mapping | |
| Include Other Input Fields | ON ✅ | HTTP Request 결과 필드 전달 유지 |
7
Update row in sheetGoogle Sheets 상태 업데이트
| 항목 | 설정값 |
|---|---|
| Operation | Update Row |
| Document | By URL — 동일 시트 URL |
| Sheet | 시트1 |
| Mapping Column Mode | Map Automatically |
| Column to match on | id ⭐ (row_number 아님!) |
✅ 업데이트 후 시트에 status=완료, published, url, selfLink 등이 자동 기록됩니다.
🔧
트러블슈팅 기록이번 설정 과정에서 발생한 문제와 해결
문제Bad request - please check your parameters
원인A열 헤더가 없어 row_number 컬럼을 인식 못함
해결A1 셀에 row_number 헤더 추가, A열 값을 실제 행 번호로 수정
문제status가 계속 "대기"로 남아있음
원인Edit Fields에 status 필드 없음 + Include Other Fields OFF
해결status = "완료" 필드 추가, Include Other Input Fields → ON
문제Unable to parse range: 시트1!Brow_number = 2
원인n8n이 시트 구조 변경 후에도 캐시 유지 / row_number 파싱 충돌
해결Update Row 노드 Refresh 클릭 + Column to match on을 id로 변경
최종 핵심row_number 대신 id 컬럼을 매칭 기준으로 사용 → 완전 해결
💡
운영 팁
| 상황 | 대응 방법 |
|---|---|
| 중복 발행 방지 | status=완료 행은 IF 노드에서 자동 건너뜀 |
| 발행 실패 시 | status를 오류로 기록 후 추적 |
| 재발행 필요 시 | 해당 행 status를 대기로 변경 → 다음 실행 시 자동 재발행 |
| PC 꺼짐 | n8n 클라우드 사용 시 다음 스케줄에 자동 재개 |
| 새 시리즈 추가 | 시트에 행 추가 후 status=대기, publishAt 설정만 하면 완료 |