반복되는 발행 절차—원고 복사, 이미지 업로드, 카테고리 선택, 예약 시간 맞추기—를 자동화하면 콘텐츠 운영의 속도가 눈에 띄게 빨라집니다. IFTTT(If This Then That)는 다양한 서비스(구글 시트, RSS, Pocket, 이메일, Webhooks 등)와 블로그 플랫폼(WordPress, Blogger)을 연결해 “조건이 만족되면 자동으로 발행·예약·공유”까지 수행하게 해 줍니다. 핵심은 표준 입력(제목·본문·태그·예약시간)을 정해두고, 트리거(글감이 준비된 순간)와 액션(블로그 발행)을 안정적으로 연결하는 것입니다. 이 글에서는 IFTTT로 자동 발행 파이프라인을 설계하는 방법, 실전 예시(구글 시트 → 워드프레스, RSS → 블로거, Webhooks → 커스텀), 그리고 운영 중 자주 만나는 문제 해결 팁까지 단계별로 정리합니다.
1) 설계: 트리거와 액션을 고정하고 ‘표준 입력’ 만들기
자동 발행은 도구가 아니라 구조에서 성패가 갈립니다. 먼저 발행의 출발점(트리거)과 도착점(액션)을 고정하세요. 트리거는 “발행할 글이 준비됨”을 의미하고, 액션은 “플랫폼에 포스트 생성/발행/예약”을 의미합니다. 그 사이에 들어가는 데이터(제목, 본문, 카테고리, 태그, 예약시간, 썸네일)를 표준 입력으로 정의하면 어떤 소스에서 와도 동일하게 처리할 수 있습니다.
권장 트리거
- 구글 시트: 새로운 행이 추가되면(상태=READY) → 포스트 발행
- RSS/Atom: 특정 피드에 새 항목 등장 → 자동 수집/발행
- Pocket/Instapaper: 나중에 읽기 저장 시 특정 태그가 붙으면 → 요약 포스트 생성
- Webhooks: 외부 스크립트/노코드 툴에서 이벤트 호출 → 완성 본문 전송
- 이메일: 특정 주소로 메일 전송 시 → 제목/본문 파싱하여 발행
액션(대상 플랫폼)
- WordPress: 새 포스트 생성, 상태(발행/임시/예약), 카테고리·태그 지정, 미디어 업로드
- Blogger: 새 게시물 생성, 라벨 지정, 예약
- 기타 플랫폼: Webhooks로 중간 서버/스크립트에 전송 → 해당 플랫폼 API로 발행
표준 입력 스키마(예시)
{
"title": "포스트 제목",
"slug": "post-slug",
"content_html": "<p>본문 HTML</p>",
"tags": "태그1,태그2,태그3",
"category": "카테고리이름",
"status": "publish|draft",
"scheduled_at": "2025-10-08 09:00",
"featured_image": "https://example.com/cover.jpg"
}
블로그 플랫폼마다 필드명이 다르므로 IFTTT 액션의 입력 칸에 맞춰 매핑합니다. 구글 시트에서는 열 제목을 위 스키마와 최대한 유사하게 두면 유지보수가 쉬워집니다.
2) 구글 시트 → 워드프레스: 가장 깔끔한 자동 발행 루틴
구글 시트를 발행 큐로 쓰면 작성·검수·예약을 한 화면에서 관리할 수 있습니다. 시트에 한 줄을 추가하거나 상태를 바꾸는 것만으로 발행이 이뤄지므로, 협업에도 유리합니다.
1단계. 구글 시트 설계
- 열 구성: status, title, slug, content_html, tags, category, scheduled_at, featured_image, notes
- status는 드롭다운(DRAFT/READY/PUBLISHED)로 통일
- scheduled_at은 날짜·시간 형식으로 통일(UTC 또는 워드프레스 서버 시간과 일치)
2단계. IFTTT 애플릿 만들기
- IF(트리거): Google Sheets → New row added 또는 New row added to query
- THEN(액션): WordPress → Create a post
- 필드 매핑:
- Title ← {{Ingredient from Sheet: title}}
- Body ← {{content_html}}
- Categories ← {{category}}
- Tags ← {{tags}}
- Status ← “Publish immediately” 또는 예약 사용 시 Webhooks/시간 필드가 필요
IFTTT의 기본 WordPress 액션은 “즉시 발행” 위주입니다. 예약 발행(스케줄)이 핵심이면 두 가지 방법이 유효합니다.
예약 발행 방법 A: Webhooks → 커스텀 엔드포인트
- IFTTT 액션을 Webhooks로 바꿔, 시트의 행 데이터를 JSON으로 보내고
- 중간에 간단한 서버/Apps Script Web App에서 WordPress REST API(
/wp-json/wp/v2/posts
)로 date 또는 date_gmt를 포함해 생성
예약 발행 방법 B: 상태 READY → 시간 트리거
- IFTTT에서 시간 기반 트리거를 사용해 일정 간격으로 시트를 폴링
- scheduled_at ≤ 현재시간 이고 status=READY 인 행만 발행
Apps Script 예시(WordPress REST API로 예약 발행)
function postToWordPress(row){
const endpoint = 'https://your-site.com/wp-json/wp/v2/posts';
const user = 'api_user';
const appPass = 'application_password'; // 워드프레스 애플리케이션 비밀번호
const payload = {
title: row.title,
content: row.content_html,
status: row.status || 'future', // 예약이면 'future'
date_gmt: row.scheduled_at ? new Date(row.scheduled_at).toISOString() : null,
categories: row.category_ids || [],
tags: row.tag_ids || []
};
const headers = {
Authorization: 'Basic ' + Utilities.base64Encode(user + ':' + appPass),
'Content-Type': 'application/json'
};
const res = UrlFetchApp.fetch(endpoint, {method:'post', headers, payload: JSON.stringify(payload), muteHttpExceptions:true});
return res.getResponseCode() + ' ' + res.getContentText();
}
IFTTT→Webhooks로 이 Apps Script Web App URL을 호출하면 예약 포함 세밀 제어가 가능합니다. 카테고리/태그는 이름→ID 매핑이 필요합니다.
이미지(특성 이미지) 처리
- WordPress 액션의 본문에는
<img>
가 들어가지만, featured image 설정은 제한적일 수 있습니다. - 커버 이미지를 확정하려면 Webhooks → 중간 스크립트에서 이미지를 미디어 라이브러리에 업로드한 뒤, 반환된 media_id를 포스트 생성 시 featured_media로 지정합니다.
운영 팁
- 시트에서 발행 성공/실패 로그 열을 두고 응답 메시지를 기록
- 슬러그 중복, 태그/카테고리 미존재 시 자동 생성 여부를 규칙으로 명시
- Draft→Ready 변경 시에만 트리거 되게 하려면 “New row” 대신 “New row in view(query)”를 사용하거나 상태 변경을 별도 시트에 기록
3) RSS/읽기 후 발행: 큐레이션·요약·크로스포스트 자동화
콘텐츠 큐레이션이나 다중 플랫폼 크로스포스팅에는 RSS 트리거가 유용합니다. 특정 소스의 새 글을 자동으로 받아서 본문 템플릿에 주석/요약을 붙여 발행하거나, 블로거(Blogger)로 미러링 할 수 있습니다.
RSS → Blogger 자동 발행
- IF: RSS Feed → New feed item
- THEN: Blogger → Create a post
- 매핑:
- Title ← {{EntryTitle}}
- Content ← 템플릿 조합: 원문 링크, 인용, 편집자 코멘트
- Labels ← 소스명, 주제 라벨
템플릿 예시(콘텐츠 요약형)
<h2>오늘의 읽을거리</h2>
<p><a href="{{EntryUrl}}" target="_blank">{{EntryTitle}}</a></p>
<p>요약: {{EntryContent}} 중 핵심 부분 인용 후 2~3줄 요약을 덧붙이세요.</p>
<p>출처: {{FeedTitle}}</p>
Pocket 태그 기반 발행
- IF: Pocket → New item tagged “blog”
- THEN: WordPress/Blogger → Create post
- Pocket에서 저장하며 요약 메모를 남기고, IFTTT는 그 메모를 본문 하단에 붙여 자동 발행
크로스포스트(내 블로그 → 다른 블로그)
- 내 블로그의 RSS를 소스로, 다른 플랫폼 액션으로 발행
- 중복·무한루프를 피하려면 “카테고리=Crosspost”처럼 필터 조건을 넣어 특정 포스트만 동기화
4) Webhooks로 확장: 플랫폼 API 연동·예약·썸네일·멀티채널
네이티브 액션이 없는 플랫폼(국내 플랫폼 등)이나 예약·특성 이미지·카테고리 세부 제어가 필요하면 Webhooks를 쓰세요. IFTTT가 이벤트 JSON을 보내면, 중간 레이어(서버리스 함수, Apps Script Web App)가 해당 플랫폼의 API 스펙에 맞춰 가공·발행합니다.
IFTTT Webhooks 설정
- THEN 서비스에서 Webhooks 선택 → Make a web request
- URL: 중간 엔드포인트
- Method: POST
- Content Type: application/json
- Body: 시트/트리거에서 넘어온 필드 맵(JSON)
예시 바디
{
"title": "{{Title}}",
"content_html": "{{Content}}",
"tags": "{{Tags}}",
"category": "{{Category}}",
"scheduled_at": "{{ScheduledAt}}",
"featured_image": "{{ImageUrl}}",
"source": "ifttt_sheets",
"meta": {"slug": "{{Slug}}"}
}
중간 레이어에서 할 일
- 필수값 검증: title, content_html
- 예약 변환: scheduled_at을 플랫폼 표준 시간대로 변환
- 이미지 업로드: featured_image가 있다면 먼저 미디어 업로드 후 media_id 확보
- 카테고리/태그 매핑: 이름→ID 변환
- 중복 방지: slug나 해시로 기존 글 검사
보안·신뢰성
- Webhooks 엔드포인트에 토큰·서명 검증 추가
- 재시도 로직(429/5xx 응답 시)
- 로그 저장: 요청·응답 기록, 실패시 관리자 메일/슬랙 알림
5) 운영·문제 해결: 중복·인코딩·시간대·이미지·카테고리
중복 발행
- 원인: 같은 트리거가 두 번 발생, 또는 예약 점검 루틴이 같은 항목을 두 번 처리
- 해결: 시트에 published_at/post_id 열을 두고 성공 시 기록. 다음 실행에서 이미 값이 있는 행은 건너뛰기
인코딩 깨짐
- 원인: 본문에 특수문자/이모지, HTML 엔티티 이중 처리
- 해결: IFTTT 액션의 Body를 HTML로 간주하게 구성, 중간 레이어에서 UTF-8로 고정
시간대/예약 오류
- 원인: 시트 시간대와 블로그 서버 시간대 불일치
- 해결: UTC로 저장하고, 서버에서 로컬타임으로 변환. 또는 양쪽 모두 같은 타임존으로 고정
이미지 미표시
- 원인: 외부 이미지를 핫링크 차단/만료 URL
- 해결: 발행 전 미디어 라이브러리에 업로드 후, 본문 이미지/featured_media로 교체
카테고리/태그 미적용
- 원인: 이름-대소문자/공백 불일치, 권한 부족
- 해결: 사전 매핑 테이블 유지, 미존재 시 자동 생성 로직 추가
승인·검수 단계가 필요할 때
- 시트에서 status=READY일 때만 발행, DRAFT는 무시
- 에디터 승인 체크박스를 추가해 승인된 행만 큐에 진입
결론: ‘작성은 한 번, 발행은 자동’으로 콘텐츠 속도를 올리자
IFTTT는 “조건→행동”을 이어 붙여 반복을 제거해 줍니다. 구글 시트를 발행 큐로 삼고, RSS·Pocket·이메일·Webhooks를 트리거로, WordPress/Blogger/커스텀 API를 액션으로 연결하면 “작성은 한 번, 발행은 자동”이라는 이상적인 루틴에 근접할 수 있습니다. 구조 설계의 포인트는 세 가지입니다. 첫째, 표준 입력(제목/본문/태그/카테고리/예약시간)을 정하고 모든 소스를 여기에 맞춘다. 둘째, 예약·썸네일·카테고리 세부 제어가 필요하면 Webhooks로 중간 레이어를 두어 REST API를 직접 호출한다. 셋째, 시트에 published_at/post_id/로그 열을 두고 실패·중복·시간대 오류를 가시화한다.
시작은 작게 하세요. 오늘은 “구글 시트 한 줄 → 워드프레스 즉시 발행” 애플릿을 만들고, 내일은 “status=READY만 발행” 규칙을 더하고, 모레는 Webhooks로 예약·특성 이미지까지 확장합니다. 일주일이면 수동 발행에 쓰던 30분이 3분으로 줄고, 남는 시간은 품질 좋은 글에 투자할 수 있습니다. 자동화의 목적은 더 많이가 아니라 더 잘 쓰는 것입니다. IFTTT로 발행 파이프라인을 고정하고, 당신의 블로그를 꾸준히, 가볍게, 빠르게 운영해 보세요.