처음에는 단순할 줄 알았다
"AI한테 카드뉴스 만들라고 하면 되는 거 아냐?"
솔직히 처음엔 그렇게 생각했습니다. ChatGPT에게 카피를 시키고, 이미지 API 하나 붙이고, 자동으로 올리면 끝이라고요. 일주일이면 될 줄 알았습니다. 실제로는 두 달이 걸렸습니다. 그리고 그 두 달 동안 배운 것이 이전 10년보다 많았습니다.
이 글은 기술 요약이 아닙니다. 19단계를 거치면서 실제로 부딪힌 벽, 돌아간 길, 그 과정에서 얻은 진짜 교훈을 풀어봅니다.
교훈 1: 만능 봇은 한 달 만에 무너진다
처음 에이전트를 만들 때 욕심이 났습니다. 하나의 봇이 건강 카드뉴스도 만들고, 재테크 카드뉴스도 만들고, 블로그도 쓰고, SNS도 올리게 하고 싶었습니다. 한 달 정도 돌려보니 문제가 생겼습니다.
건강 주제를 쓸 때 갑자기 재테크 용어가 섞여 나왔습니다. 이전 대화에서 쓴 "복리 효과"라는 표현이 건강 카드뉴스에 불쑥 튀어나온 겁니다. 이걸 "메모리 오염"이라고 부릅니다. 에이전트의 기억에 서로 다른 주제가 뒤섞이는 현상입니다.
해결책은 단순했습니다. 한 에이전트에 한 가지 역할. 카드뉴스 만드는 봇은 카드뉴스만 만듭니다. 블로그는 다른 봇이 씁니다. 이 원칙을 깨면 초반에는 편하지만, 한 달 뒤에 수습이 안 됩니다.
초보자에게 드리는 팁: 에이전트를 처음 만들 때 "이것도 시키고 저것도 시키고" 싶은 유혹이 정말 큽니다. 참으세요. 하나만 잘하는 봇이 열 가지를 대충 하는 봇보다 훨씬 쓸모 있습니다.
교훈 2: 쉬운 길과 배우는 길은 다르다
이미지를 만드는 방법은 두 가지였습니다.
첫 번째는 외부 API를 쓰는 것. Midjourney나 DALL-E API에 프롬프트를 보내면 10초 안에 이미지 URL이 돌아옵니다. 코드 10줄이면 끝입니다.
두 번째는 내 PC에 있는 ComfyUI를 쓰는 것. RTX GPU가 달린 윈도우 PC에 ComfyUI를 깔고, 리눅스 서버에서 SSH로 원격 실행하고, 생성된 이미지를 다시 가져오는 방식입니다.
두 번째를 택했습니다. 이유는 비용입니다. 외부 API는 이미지 한 장에 몇 십 원이지만, 카드뉴스 8장씩 매일 만들면 한 달에 제법 쌓입니다. 내 GPU는 전기세 빼면 공짜입니다.
그 대가로 파이프라인이 세 배는 복잡해졌습니다. SSH 키 설정, 방화벽 포트 열기, PowerShell 원격 실행, 파일 전송 자동화까지 전부 직접 해야 했습니다. 쉬운 길을 포기한 대신, 서버 간 연동이라는 기술을 통째로 배웠습니다.
돌이켜 보면 이 선택이 맞았습니다. 외부 API를 쓰는 건 나중에도 할 수 있지만, 두 대의 서버를 연결해서 작업을 자동으로 주고받는 경험은 직접 해봐야 감이 옵니다.
교훈 3: 에이전트의 진짜 두뇌는 코드가 아니라 문서다
파이프라인 코드를 다 짜놓고, 디자인 방향도 잡아놓고, Threads 발행까지 연결했는데 이상한 문제가 생겼습니다. 에이전트가 매번 같은 질문을 했습니다.
"폰트는 뭘로 할까요?" "배경색은요?" "이미지 스타일은 사실적으로 할까요?"
분명 어제 답해줬는데 오늘 또 물어봅니다. 새 세션이 시작될 때마다 에이전트는 기억을 잃었습니다.
원인은 MEMORY.md가 비어 있었기 때문입니다. OpenClaw 에이전트는 매 대화마다 워크스페이스의 MD 파일을 읽습니다. MEMORY.md에 "기본 폰트는 나눔손글씨", "이미지는 흑백 스케치", "계정명은 리도 인사이트"라고 적어두면 다시 묻지 않습니다.
MEMORY.md를 채운 뒤로 반복 질문이 사라졌습니다. 파일 하나가 수십 번의 설명을 대신합니다. 코드를 아무리 잘 짜도, 에이전트에게 "너는 누구고, 뭘 기억해야 하고, 어떻게 판단해야 해"를 문서로 남겨두지 않으면 매번 처음부터 시작합니다.
교훈 4: 완성본을 보기 전에는 방향을 모른다
처음에 "프리미엄 다크 톤" 카드뉴스를 만들었습니다. 어두운 배경에 화려한 그래디언트. 머릿속으로는 멋질 거라고 생각했습니다. 파이프라인 전체를 연결하고, ComfyUI 이미지를 삽입하고, 렌더링을 돌렸습니다.
완성본을 보는 순간 알았습니다. "이건 내 계정 느낌이 아닌데."
인스타그램 피드에 올려본 적도 없이 스타일을 정한 게 실수였습니다. 결국 흑백 스케치 + 연회색 텍스트 박스라는 완전히 다른 방향으로 전면 재설계했습니다. 템플릿을 새로 만들고, ComfyUI 프롬프트 규칙을 갈아엎고, style-guide.md를 다시 썼습니다.
이 경험에서 배운 건 이것입니다. 자동화를 먼저 완성하고 디자인을 나중에 잡으려 하지 마세요. 최소한의 뼈대로 결과물을 빨리 한 번 뽑아보고, 그걸 보면서 방향을 정하는 게 맞습니다. 머릿속 상상과 실제 결과물은 거의 항상 다릅니다.
교훈 5: 자동화의 적은 "한 단계가 빠진 것"이다
파이프라인이 길어질수록 어이없는 실패가 많아집니다. 전부 기술 문제가 아니라 "빠뜨림" 문제였습니다.
Threads에 이미지를 올리려면 그 이미지가 공개 URL로 접근 가능해야 합니다. 이미지를 이미지 서버에 업로드하고, curl로 접근 가능한지 확인한 뒤에 Threads API를 호출해야 합니다. 이 확인 단계를 빠뜨리면 "COULD_NOT_DOWNLOAD_IMAGE" 에러가 나고, 에이전트는 "발행 완료"라고 보고하지만 실제로는 아무것도 올라가지 않습니다.
Windows SSH 연결도 마찬가지였습니다. 일반 계정은 ~/.ssh/authorized_keys에 공개키를 넣으면 되는데, 관리자 계정은 C:\ProgramData\ssh\administrators_authorized_keys라는 전혀 다른 위치를 씁니다. 이 차이점 하나 때문에 반나절을 Permission denied와 씨름했습니다.
자동화 파이프라인에서 10단계가 잘 돌아가도, 11번째 단계에서 사소한 검증 하나를 빠뜨리면 전체가 실패합니다. 그래서 MEMORY.md에 "확인 안 된 결과물은 완료로 보고하지 않는다"라는 규칙을 명시적으로 적어뒀습니다.
교훈 6: 구조를 먼저 잡으면 나중이 편하다
폴더 정리를 나중에 하려다가 고생한 적이 있습니다. 초반에 이미지 파일이 여기저기 흩어져 있었고, job.json이 어디 있는지 헷갈렸고, 결과 이미지를 어디서 가져와야 하는지 매번 찾아야 했습니다.
결국 처음으로 돌아가서 폴더 구조부터 다시 잡았습니다. io 폴더는 파일 교환, scripts 폴더는 실행 스크립트, output 폴더는 결과 저장. 이 세 폴더 규칙을 정하고 나니 이후 모든 스크립트가 단순해졌습니다.
에이전트 워크스페이스도 마찬가지입니다. 에이전트 이름으로 폴더를 만들고(workspace-chaeunbyul), 안에 memory, context, artifacts, outbox를 미리 나눠뒀습니다. 에이전트가 늘어나도 같은 패턴으로 폴더를 복제하면 됩니다.
"나중에 정리하지 뭐"라는 생각이 드는 순간이 정리해야 할 때입니다.
이 경험이 남긴 것
카드뉴스 자동화 하나를 만들었을 뿐인데, 배운 범위가 넓었습니다. SSH 원격 제어, PowerShell 스크립팅, API 연동, 파일 전송 자동화, 에이전트 메모리 설계, 디자인 시스템 구축. 어느 하나 계획하고 배운 게 아니라, 문제를 해결하다 보니 자연스럽게 익힌 것들입니다.
가장 중요한 건 이겁니다. 돌아가는 뭔가를 만들어야 진짜 배움이 시작됩니다. 튜토리얼 열 개를 보는 것보다, 내 프로젝트에서 Permission denied 한 번 만나서 해결하는 게 더 오래 기억에 남습니다.
지금 차은별은 주제 한 줄을 받으면 카드뉴스를 만들고, Threads에 올립니다. 사람이 개입할 필요가 없습니다. 완벽하지는 않지만, 동작합니다. 그리고 동작하는 것 위에 개선을 쌓는 건 처음 만드는 것보다 훨씬 쉽습니다.
ComfyUI API 연동 부분만 따로 배우고 싶다면, ComfyUI API 파이프라인 구축 가이드를 참고하세요. 이 프로젝트에서 쓴 방식을 처음부터 따라갈 수 있게 4편으로 정리해 뒀습니다.
