SEO 블로그 엔진 구축기: 제가 초안을 작성하는 n8n 워크플로우 분석
이 글은 n8n에서 LLM(대규모 언어 모델) 워크플로우를 프로덕션 환경에서 운영하는 과정의 '빌드-인-퍼블릭(build-in-public)' 시리즈 중 일부입니다. 여기에 담긴 모든 내용은 제가 판매하고 지원하는 실제 템플릿에서 가져온 것입니다. 실수한 부분은 저의 것이고, 수정된 부분은 테스트를 거쳤습니다.
30초 만에 완성되는 파이프라인
키워드 입력 → 상위 랭킹 페이지들의 소제목을 추출하는 리서치 패스(research pass) → 이 소제목들을 반드시 인용해야 하는 아웃라인 노드(outline node) → 섹션별로 스타일 계약(style contract)에 맞춰 작성하는 초안 노드(draft node) → 잘못된 초안을 거부하는 스키마 가드 노드(schema-guard node) → 출판 준비가 된 Markdown 출력. 이 과정에서 사람의 손길은 중간 단계에는 전혀 필요하지 않습니다. 제가 이야기하고 싶은 실패 사례들은 모두 아무도 지켜보지 않는 그 중간 단계에서 발생했습니다.
실패 #1: 키워드 과잉 주입 반사 작용(keyword-stuffing reflex)
초기 초안들은 마치 2012년의 글처럼 읽혔습니다. 모델은 'SEO 라이팅'에 대한 10년간의 정보를 흡수하여
제목 계층 구조가 흐트러짐: H4 아래에 H2가 오고, 목록 항목 안에 코드 블록이 들어가며, 열(column)이 맞지 않는 테이블들이 나타남. 미리보기 창에서는 모든 것이 정상으로 보였지만, CMS로 가져오자마자 깨져버렸다. 수많은 작은 유효성 오류들로 인한 죽음이었다.
해결책은 Markdown 렌더링 전에 스키마 가드(schema guard)를 적용하는 것이었다: 초안을 구조화된 JSON(섹션, 제목, 코드 블록, 테이블 등 유형별 필드로 구성)으로 생성하고, 이를 스키마에 따라 검증한 다음, 비로소 Markdown으로 렌더링한다. 렌더링 자체는 쉬운 부분이고, 렌더링 전에 구조를 검증하는 것이 핵심이다. (이는 이 시리즈의 retry-budget 글에서 다룬 패턴과 동일하다: 출력 형식을 제한하고, 모델에게 부탁하지 않는다.)
비용 계산
전체 기사 하나는 약 25k 개의 입력 토큰(리서치 컨텍스트가 대부분을 차지함)에 약 4k개의 출력이 필요하며, GPT-4o-mini 기준으로 초안당 대략 $0.15–$0.25 정도의 비용이 발생한다. 개요 작성 단계(outline pass)가 가장 비싼 노드이지만, 동시에 인간의 시간을 가장 많이 절약해 주는 부분이다 — 나쁜 개요는 재작성을 의미하며, 이는 어떤 토큰 청구서보다 많은 비용을 초래한다.
내가 수동으로 유지한 것들
세 가지는 여전히 사람의 영역에 남는다: 5개의 후보 중 헤드라인을 고르는 것(토큰이 아닌 취향), 최종 편집 과정(15–20%를 잘라내는 것 — 모델은 내용을 덮어쓴다), 그리고 내부 링크(내가 실제로 무엇을 작성했는지 알아야 하므로). 이 워크플로우는 키워드를 편집할 가치가 있는 초안까지 약 6분 만에 만들어준다. 편집이 직무이고, 워크플로우는 그저 활주로를 정리해 줄 뿐이다.
나는 AI Automation Lab — 사용 준비가 된 n8n 워크플로우 템플릿을 구축하고 있다. 이 글의 전체 워크플로우인 AI SEO Blog Engine은 다음과 같다: 리서치 단계, 인용 개요 노드(citing outline node), 스타일 계약이 적용된 섹션별 초안 작성기, 그리고 CMS 가져오기를 깔끔하게 유지해 주는 스키마 가드. 나의 오픈 소스 패턴은 github.com/zhp910318/n8n-ai-automation-lab에서 볼 수 있다.