SEO 편집과 글쓰기, 그리고 구텐베르크의 벽

SEO 편집 에이전트와 글쓰기 에이전트를 구축하며 작업 중인 모습 - 블로그 자동화 워크플로우
Share

전략 에이전트까지 만들고 나니 이제 진짜 글을 쓸 차례였다. 근데 여기서 문제가 생겼다. 전략 에이전트가 공들여 만든 H2, H3 구조를 글쓰기 에이전트가 제멋대로 바꾸는 거였다. 제멋대로 섹션을 추가하거나 합치는 경우가 있었다. 건축으로 치면 설계도를 무시하고 공사하는 꼴이었다.

그래서 만든 게 SEO 편집 에이전트다. 전략과 글쓰기 사이에서 다리 역할을 한다. 구조는 절대 건드리지 않되, 검색 최적화 관점에서 한번 더 정리하는 역할이다. SEO 제목을 만들고, 메타 디스크립션을 만들고, URL 슬러그를 정한다. 그리고 이 글이 다뤄야 할 주제 목록을 만들어서 글쓰기 에이전트가 빠뜨리지 않게 한다.

프롬프트가 꽤나 디테일하게 작성되어 있는데 여기서 다 공개할 수는 없고 검색의도 가설을 확정하고 토픽 클러스터를 확정한다. 매우 중요한 역할을 하는 에이전트라고 볼 수 있다.

n8n SEO 에이전트
n8n SEO 에이전트

글자 수 가이드라인도 중요하다. “분량을 늘리기 위한 반복 설명”, “의미 없는 예시 추가” 같은 걸 명확히 금지한다. AI는 글자 수를 채우려고 같은 말을 반복하는 경우가 있다.

SEO 편집 에이전트까지 만들고 나니 이제 글쓰기 에이전트로 차례였다. 근데 여기서 또 문제를 만났다.

HTML이 아니라 구텐베르크였다

처음에는 그냥 HTML 문법으로 글을 쓰게 했다. <h2>, <p>, <ul> 이런 식으로. 근데 막상 워드프레스에 발행하니까 클래식 에디터(구버전)로 다뤄야 했다. 구텐베르크 에디터에서는 이상하게 표시됐다. 블록이 제대로 인식되지 않고, 편집도 불편했다.

그래서 알아봤더니 구텐베르크는 자기만의 블록 주석 형식이 있었다. 문단은 <!-- wp:paragraph --><p>내용</p><!-- /wp:paragraph --> 이런 식으로 블록 주석과 HTML을 같이 써야 제대로 인식된다. 소제목, 인용, 코드 블록 전부 마찬가지다.

글쓰기 에이전트 프롬프트를 완전히 뜯어고쳤다. HTML만 쓰지 말고, 구텐베르크 블록 주석을 반드시 포함하라고 명시했다. 그리고 H1은 절대 사용 금지했다. 워드프레스 제목 필드와 중복되기 때문이다.

외부 링크를 자꾸 까먹는 AI

SEO 편집 에이전트가 본문에 넣어야 할 외부 링크 목록을 만든다. 어느 섹션 끝에 어떤 링크를 넣을지까지 정해져 있다. 문제는 글쓰기 에이전트가 이걸 자꾸 까먹는다는 거였다. 링크를 아예 안 넣거나, 일부만 넣거나.


n8n 글쓰기 에이전트
n8n 글쓰기 에이전트

그래서 프롬프트에 “절대 규칙: 외부 링크 강제 삽입 프로토콜”이라는 섹션을 만들었다. 제공된 모든 URL을 본문에 반드시 사용할 것, 형식은 <p>관련 정보: <a href="URL">앵커 텍스트</a></p>로 통일할 것, 제공되지 않은 사이트에 임의로 링크를 거는 행위는 절대 금지할 것. 글을 출력하기 전에 링크 개수를 확인하고, 빠진 게 있으면 다시 작성하라고까지 명시했다.

이렇게 해도 가끔 실패한다. AI는 규칙을 읽고도 까먹는다. 그래서 나는 매번 최종 결과물을 확인하고, <a> 태그 개수를 센다. 빠졌으면 직접 넣는다. 이 부분은 아직도 완벽하게 해결하지 못했다. 링크를 자연스럽게 본문에 녹이는 게 생각보다 어렵다. 문맥에 안 맞게 억지로 넣으면 읽는 사람이 어색함을 느낀다. 그렇다고 섹션 끝에만 계속 넣으면 패턴이 뻔해 보인다. 이 균형을 AI가 알아서 찾게 만드는 게 쉽지 않다.

이미지 자동화를 고민하다 포기한 이유

글쓰기 에이전트까지 만들고 나니 이제 남은 건 이미지였다. 지금은 미드저니로 따로 만들어서 넣고 있는데, 이것도 자동화하고 싶었다. fal ai api를 연동하면 텍스트 프롬프트로 이미지를 생성할 수 있다. 글쓰기 에이전트가 본문을 만들면서 각 섹션에 맞는 이미지 프롬프트를 함께 생성하고, 그걸 fal ai에 넘겨서 이미지를 만든 다음, 워드프레스에 업로드하는 구조였다.

fal ai 메인 페이지
fal ai

기술적으로는 가능했다. 근데 비용이 문제였다. fal ai api는 이미지 한 장당 요금이 붙는다. 블로그 글 하나당 이미지 3~5장을 만든다고 치면, 글 10개만 써도 비용이 꽤 나간다. 내 블로그를 위해서라면 감수할 수 있는데, 이걸 고객한테 제공하는 서비스로 만들려면 얘기가 달라진다. 고객이 원하지 않는데 비용이 계속 나가는 구조는 부담스럽다.

그래서 일단 이미지 자동화는 빼기로 했다. 나중에 클라이언트가 원하면 옵션으로 추가할 수 있게 설계만 해뒀다. 워크플로우에 이미지 생성 노드를 끼워 넣으면 되니까 구조적으로는 준비가 되어있다.

워드프레스 발행까지

글쓰기 에이전트가 구텐베르크 형식으로 본문을 만들면, 이제 워드프레스에 발행하는 단계다. 여기서 카테고리 처리가 까다로웠다. 기존 카테고리 목록을 가져와서 AI가 현재 작성된 글이 어떤 카테고리에 적합한지 판단한 후 매칭을 한다. 그리고 적당한 카테고리가 없으면 생성하는 로직을 만들었다. 이것도 처음엔 제대로 안 됐다.

마지막으로 에어테이블의 status를 “완료”로 바꾸고 발행 URL을 기록한다. 내가 할 일은 에어테이블에 키워드만 예약 상태로 넣어두면 끝이다. 나머지는 n8n 워크플로우가 알아서 돌아간다.

다음 편에서는 이 시스템을 실제로 여러 번 돌려보면서 발견한 것들, 그리고 6개의 에이전트가 협업하는 모습을 이야기하려고 한다.

블로그 자동화 워크플로우 구축 여정을 상징하는 일러스트레이션 - 도시를 가로지르는 자전거 여행

리서치 에이전트 다음 단계에서 마주한 문제

Prev
블로그 자동화 워크플로우 작업 중인 모습 - 6개 AI 에이전트 협업 시스템

6개의 에이전트가 협업하는 순간

Next
Comments
Add a comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다