SNS 자동화 봇을 운영하는 개발자가 단체 대화방에서 자신의 작업 과정을 공유했다. 개인 비서와 원격 작업에 쓰던 에이전트를 글 발행과 댓글 대응으로 확장했다는 설명이었다. 나는 그 설명을 읽으며 발행을 어디까지 맡길 수 있는지, 결과를 어떤 지표로 확인해야 하는지에 관심이 생겼다.
운영자에게 사례를 공개 블로그에 소개해도 된다는 허락을 받았다. 이름과 닉네임, 앱을 특정할 세부 정보와 대화 캡처는 싣지 않는다. 수치는 익명화를 위해 범위로 표현했다. 시스템 구성과 운영 결과는 운영자가 공유한 설명에 근거하며, 내가 코드나 분석 대시보드에 접근해 독립적으로 검증한 결과는 아니다. 다른 참여자의 발언은 인용하지 않는다.
운영자는 조회수 수만 회와 단시간에 수십 명이 가입한 상황을 공유했다. 이후에도 조회수는 늘었지만 그 노출이 가입으로 이어졌는지는 확인하지 못했다고 설명했다. 이 두 이야기를 함께 읽어야 한다. 가입 증가가 관찰된 시점에 자동화가 돌아가고 있었다는 사실만으로 봇의 기여도를 계산할 수는 없다.
운영자가 설명한 기능과 도입 과정
운영자는 OpenClaw에 Claude Code를 연결해 봇을 구성했다고 밝혔다. 처음에는 개인 작업을 원격으로 처리하는 용도로 시작했고, SNS에 글을 쓰거나 반응에 답하는 작업으로 범위를 넓혔다고 한다. 이 글에서는 운영자의 설명에 나온 기능을 소개하며, 특정 버전의 설치 절차나 재현 가능한 성능 시험으로 제시하지 않는다.
주제를 정하면 관련 게시물을 찾아 글이나 댓글의 초안을 만들고, 달린 댓글을 분석해 답변을 작성하는 흐름이었다. 자동 모드에서는 게시까지 이어가고 수동 모드에서는 운영자가 확인한 뒤 발행한다고 설명했다. 글의 어조를 조절하는 설정도 있었다. 이런 설정을 소개한다고 타인의 게시물에 원치 않는 홍보 댓글을 반복해서 보내는 운영을 권하는 것은 아니다.
운영자가 언급한 대상에는 Threads, X, 네이버 카페와 인스타그램이 있었다. 다만 각 플랫폼을 어떤 인증 방식과 도구로 연결했는지는 확인하지 않았다. 지원 목록만으로 공식 API 사용, 약관 준수, 현재 계정의 이용 가능 범위를 판단할 수는 없다. 같은 이름의 플랫폼 연결이라도 조회와 게시, 댓글 관리의 권한은 따로 확인해야 한다.
운영자는 봇을 배포하고 사용 피드백을 받아 개선하는 과정도 공유했다. 초안에는 배포 인원과 구체적인 날짜를 넣었지만, 공개본에서는 그 세부 기록을 생략한다. 여기서 검토할 부분은 다른 환경에서도 설정과 실행을 이해할 수 있는지다. 설명서에는 필요한 계정, 권한, 설정 확인 방법과 중단 절차가 있어야 처음 쓰는 사람이 자신의 계정을 맡길 범위를 판단할 수 있다.
실행·검수·기록으로 나눠 읽은 구조
나는 운영자의 설명을 실행, 검수, 기록의 세 부분으로 나눠 보았다. 운영자가 공개한 코드 구조도나 공식 제품 사양을 그대로 옮긴 분류는 아니다. 작은 자동화에서도 어느 단계에서 문제가 생겼는지 찾기 위한 분석 틀이다.
실행 단계에서는 소재를 찾고 초안을 만든 뒤 플랫폼에 보낸다. 이때 게시 요청이 성공했다는 응답과 실제 게시물이 보이는 상태를 구분해야 한다. 응답이 늦었다고 같은 글을 다시 보내면 중복 게시가 생길 수 있다. 게시물 식별자를 저장하고 실패한 요청이 이미 처리됐는지 확인하는 절차를 두는 편이 좋다. 이는 내가 추가한 설계 제안이며 해당 봇에서 확인한 구현은 아니다.
검수 단계에서는 서브에이전트들이 초안을 확인하도록 구성했다고 운영자가 설명했다. 여러 에이전트가 읽었다는 사실만으로 오류를 잡았다고 볼 수는 없다. 서로 같은 근거 없는 숫자를 받아들이거나 문체만 고칠 수 있기 때문이다. 검수 결과에는 문제 문장, 대조한 출처, 수정 이유를 남기고 발행 담당자가 확인할 수 있어야 한다.
사람이 승인하는 모드도 승인 대상을 명확히 정할 필요가 있다. 제목만 보고 허락한 뒤 에이전트가 본문과 링크를 바꾸면 처음 승인한 글과 다른 내용이 나갈 수 있다. 내가 도입한다면 최종 문안과 대상 계정, 링크까지 한 번에 확인하고, 수정이 생기면 해당 문안을 다시 검토하겠다. 민감한 질문에 답하는 댓글도 같은 방식으로 다룬다.
기록 단계에서는 옵시디언에 글과 댓글의 반응을 모으고, 그 기록을 다음 작업 지침에 반영한다고 했다. 여기서 말하는 개선은 저장된 자료와 스킬을 다음 실행에 활용하는 과정으로 이해할 수 있다. 모델의 가중치를 다시 학습했다는 증거는 없다. OpenClaw의 스킬 문서도 스킬을 에이전트의 도구 사용 방법을 안내하는 Markdown 지침으로 설명한다.
지침을 자동으로 고친다면 변경 전 버전과 바꾼 이유를 남겨야 한다. 반응이 좋았던 글 하나를 기준으로 자극적인 표현을 늘릴 수도 있기 때문이다. 새 지침이 사실 확인이나 사람 승인 절차를 약하게 만들지 않았는지 살피고, 문제가 생기면 이전 지침으로 돌아갈 수 있도록 하겠다. 이 과정의 효과는 실제 변경 전후 자료로 확인할 과제다.
공유된 수치에서 알 수 있는 범위
운영자가 공유한 규모는 조회수 수만 회, 단시간에 수십 명 가입이다. 정확한 수치와 발생 시점은 익명화를 위해 범위로 바꾸었으며 하루 단위 가입자 수는 싣지 않는다. 독자가 이 범위에서 정밀한 전환율을 계산해서는 안 된다. 노출 집계와 가입 집계가 같은 기간과 같은 이용자 집단을 가리키는지도 확인하지 못했다.
조회수에는 같은 사람이 여러 번 본 횟수가 포함될 수 있고, 가입은 검색이나 다른 사람의 공유를 거쳐 발생했을 수도 있다. 어느 게시물이 어떤 방문을 만들었는지 연결할 자료가 없으면 자동화가 늘린 가입자를 분리할 수 없다. 해당 사례에서 봇의 직접 성과라고 단정한 기존 제목과 소개는 이 한계를 반영해 수정했다.
이후 운영자는 조회수가 늘고 있지만 가입 전환은 더 확인해야 한다고 설명했다. 유입 추적 기능을 확인할 필요가 있다는 취지였다. 이를 가입이 전혀 발생하지 않았다는 말로 바꿔 읽을 수도 없다. 확인하지 못한 것은 노출과 가입의 연결이며, 전체 가입자 수의 유무와는 다른 질문이다.
Meta는 Threads의 인사이트에서 게시물 반응과 링크 방문 등을 살펴볼 수 있다고 안내한다. 그러나 SNS 쪽의 링크 클릭과 서비스 안에서 완료한 가입은 서로 다른 단계다. 서비스 운영자는 두 기록을 어떤 기준으로 연결하는지 정해야 한다. Meta의 링크·인사이트 안내
내 서비스에 붙인다면 먼저 만들 측정표
내가 같은 자동화를 시험한다면 첫 게시 전에 측정할 행동을 정하겠다. 블로그라면 글 방문과 구독 신청, 앱이라면 가입 완료와 첫 핵심 기능 사용을 구분할 수 있다. 아래 표는 해당 운영자의 실제 데이터가 아닌, 내가 제안하는 측정 설계다.
| 단계 | 남길 항목 | 먼저 확인할 문제 |
|---|---|---|
| 게시 | 게시물 ID, 계정, 문안 버전, 발행 시각 | 같은 글을 재시도로 중복 게시했는가 |
| 방문 | 캠페인 식별자, 방문 시각, 도착 페이지 | 링크 이동 중 식별자가 사라졌는가 |
| 가입 | 가입 완료 사건, 유입 연결 가능 여부 | 버튼 클릭을 완료로 잘못 세었는가 |
| 사용 | 사전에 정한 첫 핵심 행동 | 가입한 사람이 실제 기능을 사용했는가 |
| 비용 | 호출 비용, 검수·수정에 쓴 시간 | 실패한 요청과 재작업을 누락했는가 |
게시물마다 같은 이름 규칙의 링크를 만들 수 있다. 예를 들어 가상 서비스의 주소에 utm_source=threads&utm_medium=organic_social&utm_campaign=onboarding_test&utm_content=post_a를 붙여 구분한다. 이 문자열에는 개인 이름이나 이메일을 넣지 않는다. URL은 공유·복사되기 쉬우므로 사람이 아니라 캠페인과 문안을 구분하는 이름을 쓴다.
Google의 캠페인 URL 안내는 UTM 매개변수로 유입 캠페인을 구분하는 방법을 설명한다. 실제 수집과 보고서를 보려면 분석 도구 설정도 필요하다. 링크에 매개변수를 붙였다는 이유만으로 가입 측정까지 끝난 것으로 기록하지 않는다. 캠페인 URL 공식 안내
이 블로그에 Google Analytics를 설치했다는 뜻은 아니다. 각 서비스가 사용하는 분석 도구에서 어떤 항목을 수집할 수 있는지 확인한 뒤 같은 목적에 맞춰 설계해야 한다. 캠페인 방문 후 다른 날 직접 접속해 가입하는 경우, 여러 기기에서 방문하는 경우에는 연결이 빠질 수 있다. 연결하지 못한 가입은 별도 항목으로 남긴다.
가상의 예로 특정 캠페인 방문 200건 중 연결 가능한 가입 완료가 12건이라면 비율은 6%다. 실제 사례의 수치가 아닌 산술 예시다. 방문 건수와 순방문자 수 중 무엇을 분모로 썼는지, 어느 기간에 가입을 연결했는지 함께 적어야 다음 실험과 비교할 수 있다. 이 비율만으로 자동화를 쓰지 않았을 때보다 가입이 늘었다고 증명한 것은 아니다.
자동 댓글에서 사람이 맡을 일
운영자는 AI가 댓글을 쓰고 사람들과 대화하는 모습에 불편함을 느꼈다고 했다. 이 반응을 읽으며 나는 답변의 자연스러움 외에도 계정이 누구를 대신해 말하는지 설명할 필요가 있다고 생각했다. 실제 고객의 질문에 자동 답변을 보낸다면, 운영자는 답변 내용을 확인하고 잘못된 안내를 고칠 경로를 마련해야 한다.
내가 정할 운영 범위는 관리하는 계정과 허락받은 게시판부터 시작한다. 상대가 요청하지 않은 홍보를 반복하거나 사람인 척 관계를 이어가도록 지시하지 않는다. 자동 응답을 쓰는 곳에서는 운영 방식을 알리고 사람이 답해야 하는 문의를 넘길 수 있게 하겠다. 공개 여부를 정할 때는 사용 중인 플랫폼의 규정도 확인한다.
게시물 작성과 댓글 답변은 실패했을 때의 영향이 다르다. 제품 가격, 환불, 개인정보가 포함된 문의는 게시 전에 담당자가 확인하도록 범위를 정할 수 있다. 이미 공개한 답변에서 오류를 발견하면 해당 대화에서 정정하고 같은 오류가 다시 나오는 입력을 검사에 남긴다. 글을 삭제한 뒤 완료로 표시하면 문의자가 잘못된 정보를 계속 믿을 수 있다.
플랫폼 연결도 구현별로 확인해야 한다. Threads에는 공식 API가 있으며 Meta가 제3자 앱을 통한 관리 방식을 소개했다. 초안에서 Threads를 비공식 경로로 묶은 설명은 고쳤다. 다만 이 사례의 실제 연결 방식이나 계정별 권한은 확인하지 못했다. Meta의 Threads API 소개
비용과 다음 실험의 종료 조건
운영자는 에이전트 회의와 진행 보고를 자주 실행하면 비용도 늘어난다고 설명했다. 광고비를 내지 않았더라도 모델 사용료와 구독료, 서버 운영, 사람의 검수 시간이 들어간다. 총비용 자료 없이 유료 광고보다 저렴하거나 효율적이라고 결론 내릴 수 없다.
작은 시험에서는 정해진 기간에 사용한 호출 비용과 검수 시간을 같이 적겠다. 게시물을 만드는 시간만 줄고 잘못된 댓글을 고치는 시간이 늘었다면 그 부담도 계산해야 한다. 비용표에는 성공한 게시물뿐 아니라 게시에 실패한 요청, 취소한 초안, 중복 생성 비용을 포함한다. 월 구독료를 작업별로 나눌 때는 어떤 배분 기준을 썼는지도 남긴다.
확대 여부는 같은 관찰 기간과 완료 기준으로 판단한다. 방문은 늘었는데 가입 화면에서 이탈한다면 문안 생성량을 늘리기 전에 링크와 화면을 확인할 수 있다. 조회수만 높은 글을 따라 지침을 고치기보다, 어떤 독자가 어떤 문제를 해결하려고 들어왔는지 파악할 자료를 모으겠다.
이 사례를 읽고 가져갈 작업은 게시물별 유입과 가입 완료를 연결하는 작은 시험이다. 운영자가 공유한 기능과 수치는 출발 자료로 남기고, 내 환경에서 실행한 결과는 별도로 기록해야 한다. 먼저 한 계정에서 승인한 문안을 발행하고, 링크 이동과 이벤트 기록을 확인한 뒤 비용과 수정 내역을 함께 검토하겠다.
참고자료
사례 서술의 근거는 공개 허락을 받은 운영자의 설명이다. 다음 공개 문서는 스킬과 측정 방식의 참고자료이며 해당 사례의 수치를 입증하는 자료가 아니다.
- OpenClaw: Skills — 도구 사용 절차를 안내하는 Markdown 스킬의 역할.
- Meta: Threads 링크와 Insights 안내 — 플랫폼 안에서 확인하는 링크 방문과 게시물 반응.
- Google Analytics: 캠페인 URL 만들기 — UTM을 통한 유입 구분.
- Meta: Threads API와 크리에이터 기능 소개 — 공식 API의 존재와 제3자 앱 활용 안내.