[태그:] 1인 사업자

  • 쇼츠 자동화, 이 확인 없이 올리면 망합니다

    쇼츠 자동화, 이 확인 없이 올리면 망합니다

    검수 없이 올렸다가 알게 된 것들

    유튜브 쇼츠 자동으로 만드는 방법을 검색하는 순간이면 보통 편집 시간이 먼저 무너진 때다. 나도 그랬다. 대본 쓰고, 목소리 깎고, 자막 맞추고 있자면 하루가 다 갔고, 정작 채널은 멈춰 있었다. 그래서 자동화를 시작했는데, 처음엔 잘못했다.

    생성만 자동으로 돌리고 확인은 건너뛰었다. 자막에 고유명사가 틀린 채로 나갔고, 같은 컷이 반복되는 영상이 그대로 올라갔다. 조회수가 안 나온 건 둘째 치고, 내가 봐도 믿음이 안 가는 영상이 내 채널에 붙어 있는 게 더 문제였다. 그 뒤로 원칙을 하나 정했다. 생성은 기계, 공개 판단은 게이트. 이 게이트가 이 글의 주제다.

    ‘자동’이라는 말을 셋으로 나눠서 쓰고 있다. 완전자동은 사람 손이 아예 없는 상태, 반자동은 사람이 초안을 만지는 상태, 검수필수는 기계가 만들되 사람 눈을 통과해야 공개되는 상태다. 쇼츠는 셋 중 마지막이 답이었다.

    수동, 반자동, 풀자동, 실제로 견줘보면

    내 워크스테이션에는 지금 cron 63개가 무인으로 돌고 있고, 작업 폴더가 183개, git 저장소가 90개 쌓여 있다. 블로그와 SaaS 발행은 이 구조로 한 달 반 동안 43편을 나갔다. 그런데 쇼츠에 같은 구조를 그대로 얹었을 때 결과가 달랐다. 표로 정리하면 이렇다.

    방식 사람 손이 들어가는 지점 실패 양상 내 판단
    수동 제작 전부. 대본부터 편집, 업로드까지 실패는 적은데 지속이 안 됨. 내 경우 편집에 지쳐 업로드 주기가 먼저 무너졌다 품질 기준이 극단적으로 높은 채널에만 맞다
    반자동 사람이 대본과 최종 컷을 확인 사람 병목이 남는다. 내가 자리를 비우면 발행이 멈춘다 전환기에 쓰기 좋다. 자동화 범위를 점점 늘려가는 시험대
    풀자동 없음. 생성 즉시 발행 내가 겪은 자막 오탈자, 고유명사 오독, 중복 컷이 그대로 외부로 나간다 쇼츠에는 부적합. 확인 장치 없는 풀자동은 사고를 낸다
    검수필수(자동 생성, 게이트 통과분만 공개) 게이트에서 걸린 분량만 사람이 봄 게이트가 느슨하면 풀자동과 같아진다 현재 운영 방식. 43편 발행 구조를 쇼츠에 그대로 적용

    포인트는 표의 마지막 줄이다. 사람 검토를 없애는 게 아니라, 검토할 대상을 기계가 골라 주게 만드는 것. 내 블로그 파이프라인은 주 1~5편씩 불규칙하게 초안을 만들고, 문체와 사실성 자동 검사를 통과한 글만 공개된다. 검사에서 걸린 초안은 사람이 연다. 쇼츠도 똑같이 돌렸더니 사람이 볼 분량이 줄어서 1인 운영이 성립했다.

    이걸 정의하면 이렇다. 쇼츠 검수 게이트란 자동 생성 영상을 공개하기 전에 문체, 사실성, 중복을 기계가 먼저 검사하고, 통과분만 발행 큐에 넣는 이중 구조다.

    어디까지 자동으로 되고, 어디서부터 사람인가

    9:16 크롭, 싱크 자막, 무료 BGM 매칭은 기계가 잘한다. 이 셋은 규격과 규칙의 문제라서 그렇다. 반면 고유명사 발음, 자막 오탈자, 중복 컷은 사람 손이 없으면 사고로 이어진다. 자동 검사에서 걸린 내 초안들을 다시 보니 대부분 이 세 유형이었다. 외래어 브랜드명을 이상하게 읽은 케이스가 특히 많았고, 자막에 띄어쓰기가 틀린 채 검사를 통과해버린 경우도 있었다. 그래서 자막 검사에는 별도 규칙을 하나 더 얹었다.

    검증 도구를 믿기만 하면 안 된다. 직접 만든 중복 검사 가드를 돌려 보니 이미 발행된 글 35편끼리 비교했을 때 595쌍 중 73쌍, 즉 12.3%를 중복이라고 잘못 잡았다. 오탐을 사람이 일일이 풀다 보면 그 게이트는 방해물이 된다. 오탐률을 낮추고, 걸린 것만 사람이 보는 이중 구조로 갈 수밖에 없었다.

    비용 이야기도 하지 않을 수 없다. 헤드리스로 LLM을 부를 때 기본 설정으로는 1회 $0.78이 나왔다. 모델과 작업 디렉터리를 지정하고 불필요한 도구를 떼자 $0.028로 27배 줄었다. 자동화는 한 번 만드는 게 아니라 호출 비용을 계속 감시하는 작업이다.

    실제 흐름은 이렇게 생겼다.

    # 쇼츠 생성 → 검사 → 발행 큐 (매일 오전)
    0 7 * * * /home/aileego/bin/shorts_pipeline.sh generate --topic from_pool
    15 7 * * * /home/aileego/bin/shorts_pipeline.sh check --captions --facts --dup
    30 7 * * * /home/aileego/bin/shorts_pipeline.sh publish --only passed
    # 걸린 초안은 drafts/ 에 남고, 알림만 온다

    대본 단계에서 쓰는 프롬프트는 이런 식이다.

    60초 쇼츠 대본을 써 줘. 주제는 아래 한 줄뿐이야. 첫 문장은 시청자의 고민을 지적하는 문장으로 시작하고, 고유명사는 최소화하고, 문장당 15자 이내로 끊어 줘. 통계나 수치는 내가 준 것 외에는 만들지 마.

    무인 발행 파이프라인이란 콘텐츠 생성, 품질 검사, 발행을 크론이 순서대로 실행하되, 검사 미통과분은 사람 검토 큐로 보내는 구조를 말한다. 내 경우 게이트 통과 조건은 문체 지문, 사실성, 중복 세 가지다. 자동 생성 글의 AI 문체 지문을 재보니 1,000자당 10.1건이었고, 손으로 고친 뒤 1.4건으로 떨어졌다. 이 지문 검사를 쇼츠 대본에도 그대로 쓴다.

    유튜브 정책 리스크 체크리스트 일러스트

    정책 리스크와, 자동화하면 안 되는 것들

    2025년 7월부터 시행된 유튜브의 반복적 콘텐츠 정책은 ‘틀만 바꿔 반복 찍어내는 영상’을 수익화 심사에서 걸러낸다. 또한 현실감 있는 변경을 포함한 AI 생성 콘텐츠에는 자동 생성 라벨이 붙을 수 있다. 정의하자면, 반복적 콘텐츠 정책이란 대본, 구성, 편집 방식이 거의 같은 영상을 대량으로 뿌리는 채널의 수익화를 제한하는 유튜브의 규칙이다. 이걸 운영 관찰로 얘기하면, 내 무인 발행 영상과 사람 검토 영상의 퍼포먼스는 차이가 났다. 사람이 마지막에 확인한 영상이 조회가 더 안정적이었다. 원인을 딱 집어 말할 수는 없다. 다만 게이트 없이 뿌린 영상은 자막 실수까지 그대로 나가니, 시청자의 이탈 요인이 하나 더 있는 건 확실하다.

    참고로 짧은 세로 영상의 참혹한 중앙값도 한번 봤다. 인스타 한 계정의 최근 30편을 다시 세니 릴스 18편은 조회수 중앙값이 50이었고, 피드 12편은 0이었다. 자동화를 하든 안 하든, 기본 난이도가 이 정도라는 얘기다. 채널 성장을 자동화가 대신해 주진 않는다.

    자동화하면 안 되는 유형은 명확하다. 제품 리뷰, 의료, 금융처럼 틀린 정보가 실제 피해로 이어지는 주제다. 사람이 확인하지 않아 잘못된 정보가 나갈 뻔한 순간을 겪고 나서 이 원칙을 세웠다. 그때 만든 발행 전 60초 확인 목록이다.

    • 자막에서 고유명사, 숫자, 단위만 10초 훑는다. 오탈자의 대부분이 여기 있다
    • 첫 3초 컷과 마지막 컷이 이전 영상과 같은지 10초 확인한다. 중복 컷은 반복 정책 리스크가 된다
    • 대본의 주장 중 근거 없는 문장이 하나라도 있으면 발행을 보류한다
    • AI 생성 라벨이 필요한 영상이면 공개 설정에서 공개한다. 숨기면 리스크가 커진다
    • 의료, 금융, 리뷰 유형이면 무조건 사람 전량 확인으로 넘긴다

    마지막 정리. 내가 운영하는 방식의 뼈대는 세 문장으로 요약된다. 생성은 자동, 검사는 자동, 공개 여부는 게이트가 통과한 것만. 오늘 할 일은 작다. 대본 하나를 자동으로 만들고, 그걸 사람이 60초 보는 것부터 시작하면 된다. 그 다음에 게이트를 하나씩 붙이면 된다. 자동화 파이프라인 설계 자체를 어떻게 잡았는지는 별도 글로 정리해 뒀으니 거기서 이어서 보면 된다.

    근거로 삼은 문서


    글쓴이 정보

    이 글의 초안도 운영자가 만든 AI 파이프라인이 씁니다. 문체·사실성 자동 검사를 통과한 글만 공개되고, 걸린 초안은 사람이 고쳐서 내보냅니다. 전체 구조는 포트폴리오에 적어 두었습니다.

    자주 나오는 질문

    유튜브 쇼츠를 완전 자동으로 만들어도 되나요?

    생성까진 자동이어도 공개는 사람 확인을 거치는 게 안전합니다. 실제로 확인 없이 올렸더니 자막 오탈자와 중복 컷이 그대로 나가서 채널 신뢰도가 먼저 무너졌습니다. 생성은 기계, 공개 판단은 게이트가 원칙입니다.

    쇼츠 제작에서 뭐까지 자동으로 되나요?

    9:16 크롭, 싱크 자막, 무료 BGM 매칭은 기계가 잘합니다. 규격과 규칙의 문제라서 그렇습니다. 반면 고유명사 발음, 자막 오탈자, 중복 컷은 사람 눈을 거치지 않으면 사고로 이어집니다.

    쇼츠 자동화 검수 게이트가 정확히 뭔가요?

    자동 생성 영상을 공개 전에 문체, 사실성, 중복을 기계가 먼저 검사하고 통과분만 발행 큐에 넣는 이중 구조입니다. 검사에서 걸린 초안만 사람이 열어 보면 되어서 1인 운영이 성립합니다.

    검수 자동화 도구의 오탐은 어떻게 처리하나요?

    제 경우 중복 검사 가드가 실제로 12.3%를 오탐으로 잡았습니다. 오탐을 사람이 일일이 풀면 게이트가 방해물이 되므로, 오탐률을 낮추고 걸린 것만 사람이 보는 구조로 갈 수밖에 없었습니다.

    쇼츠 자동화 비용은 얼마나 드나요?

    헤드리스 LLM 호출이 기본 설정으로는 1회 $0.78이었습니다. 모델과 작업 디렉터리를 지정하고 불필요한 도구를 떼자 $0.028로 27배 줄었습니다. 자동화는 만들고 끝이 아니라 호출 비용을 계속 감시하는 작업입니다.

    수동, 반자동, 풀자동 중 뭘 골라야 하나요?

    쇼츠는 검수필수 방식, 즉 자동 생성 후 게이트 통과분만 공개하는 방식이 답이었습니다. 수동은 품질이 좋지만 지속이 안 되고, 풀자동은 확인 장치가 없어 사고가 납니다. 반자동은 자동화 범위를 늘려가는 전환기 시험대로 좋습니다.


  • 스프레드시트 자동화, 이 설정 놓치면 데이터 망가집니다

    스프레드시트 자동화, 이 설정 놓치면 데이터 망가집니다

    매일 복붙하는 그 작업, 시트가 알아서 합니다

    구글 스프레드시트 자동화를 검색하는 순간 대부분은 이런 상황일 겁니다. 아침마다 폼 응답을 열어 복사해서 정리하고, 다른 시트에서 숫자를 받아다 집계표를 갱신하고, 그걸 보고서 양식에 붙여 넣는다. 코딩을 배울 시간은 없고, 그렇다고 이 반복을 계속할 수도 없다. 그 사이 어딘가에 있을 겁니다.

    나는 혼자서 콘텐츠 생성과 발행을 무인으로 돌리는 입장이라 시트뿐 아니라 서버의 예약 작업까지 cron 63개를 직접 관리한다. 그래서 아는 것이다. 자동화는 어렵지 않은데, ‘망가졌을 때 조용히 망가진다’는 게 진짜 문제라는 걸. 이 글은 함수 나열이 아니라 실패했을 때 어떻게 붙잡는지까지 쓴다.

    개발을 못 해도 시작할 수 있을까?

    된다. 스프레드시트 자동화란 반복되는 데이터 입력·정리·집계를 사람 대신 시트 함수와 예약 실행이 처리하도록 만드는 작업이다. 구글 시트는 함수만으로도 상당 부분 자동화되고, 거기서 한 발 더 가면 ‘매크로 녹화’가 있고, 그다음이 Apps Script라는 코드다. 이 순서대로 가면 코드를 직접 짜는 순간은 생각보다 늦게 온다. 나도 처음엔 녹화 매크로에서 시작했다.

    오늘부터 자동화 가능한 작업 vs 아닌 작업 구분법

    구분 기준은 하나다. “입력이 정해진 형태로 들어오고, 출력 규칙이 사람이 문장으로 설명할 수 있는가?” 예컨대 ‘폼 응답이 쌓이면 미결제 건만 뽑아 별도 탭으로 옮긴다’는 규칙이라 자동화된다. 반면 ‘이번 주 분위기에 맞게 홍보 문구를 손봐라’처럼 판단이 매번 달라지는 일은 사람 몫으로 남긴다. 경계선 애매하면 일주일 치 작업을 수기로 하면서 내 판단을 문장으로 적어보라. 문장이 안 나오는 작업은 아직 자동화 대상이 아니다.

    시작 전 5분 점검: 이 설정 놓치면 데이터가 망가집니다

    자동화 사고의 대부분은 화려한 기술 실패가 아니라 설정 누락에서 나온다. 실제로 나는 무인 배치가 권한 만료로 조용히 멈춘 걸 한참 뒤에야 알았다. 에러도 없다. 그냥 안 돌았을 뿐. 그 뒤로는 뭘 만들든 아래 다섯 가지를 먼저 확인하고 시작한다.

    1. 큰 배치를 돌리기 전에 파일 > 사본 만들기로 백업본을 떠 둔다.
    2. 원본 데이터 시트와 자동화 결과 시트를 파일 단위로, 최소 탭 단위로 분리한다.
    3. 자동화 계정의 접근 권한이 ‘편집자’ 이상인지, 만료일이 없는지 확인한다.
    4. 자동화가 결과를 ‘덮어쓰는지’, ‘행을 추가하는지’를 정해 두고 기록해 둔다.
    5. 시트 파일 설정의 시간대를 한국 표준시로 맞춘다.

    자동화 전 반드시 백업해 두기

    구글 시트는 버전 기록이 기본 켜져 있지만, Apps Script나 외부 도구가 대량 수정을 하면 최근 상태 위에 계속 덮인다. 복구 지점이 필요하면 큰 배치를 돌리기 직전에 파일을 복제해 두는 습관이 가장 확실하다. 나는 원본을 읽기 전용으로 두고, 자동화는 사본에만 쓰게 만든다. 이 구조로 가면 스크립트가 아무리 잘못돼도 원본은 남는다.

    원본 시트와 자동화 시트를 분리하는 구조 설계

    흔한 사고가 ‘사람이 보는 집계표’와 ‘기계가 쓰는 원천 데이터’가 같은 탭에 섞이는 거다. 정렬 한 번 잘못 누르면 함수가 참조하던 행이 전부 어긋난다. 구조는 단순하게. 데이터가 쌓이는 탭(사람 손 금지), 함수가 읽어 정리하는 탭, 사람이 보는 리포트 탭. 이렇게 세 겹으로 나누면 중간이 망가져도 원천은 살아 있다.

    권한·공유 설정에서 자주 터지는 함정

    Apps Script가 다른 스프레드시트를 읽게 하면 권한 승인 팝업이 뜨는데, 이걸 브라우저에서 한 번 승인했다고 끝이 아니다. 계정 비밀번호를 바꾸거나, 소유자가 문서를 이동하거나, 승인 토큰이 만료되면 조용히 끊긴다. 워크스페이스 관리자가 앱 권한을 정리하는 바람에 끊기는 경우도 봤다. 그래서 나는 권한을 링크가 아니라 특정 계정 기준으로 부여하고, 스크립트 소유 계정을 자동화 전용 하나로 고정해서 쓴다.

    폼 응답·외부 데이터 자동으로 쌓기: 세팅 순서대로 따라하기

    데이터가 자동으로 쌓이는 구조를 만들면 그다음 정리·집계는 시트 함수의 몫이 된다. 내 운영 시트도 같은 구조다. 폼과 외부 도구가 쓰는 탭, 그걸 읽어 상태를 정리하는 탭, 리포트 탭. 스크린샷 대신 구조로 보면 이렇다.

    시트 구조 템플릿: [raw] 폼 응답 원본 (사람 금지 구역) / [clean] QUERY 함수로 상태별 분류 / [report] 월별 집계 + 조건부 서식 / [log] 자동화 실행 기록 남기는 탭

    구글폼 → 시트 연결 후 응답 자동 정리 구조 만들기

    구글폼의 ‘스프레드시트에 연결’을 누르면 응답 탭이 자동 생긴다. 여기서 바로 원본을 고치려 들면 안 된다. 응답 탭 옆에 탭을 하나 만들고 QUERY로 끌어오는 식이다. 예컨대 =QUERY('폼 응답 1'!A:H, "select B,C,E where E = '미결제'") 같은 형태로 쓰면 미결제 건만 별도 탭에 실시간으로 뜬다. 이러면 폼이 몇 백 건 쌓여도 정리 탭은 늘 같은 모양을 유지한다.

    IMPORTRANGE로 다른 시트 데이터 가져오기와 주의점

    다른 파일의 데이터는 IMPORTRANGE로 가져온다. 첫 실행 때 권한 승인을 한 번 눌러야 하는데 이걸 놓치고 ‘왜 안 되지’를 오래 하는 경우가 많다. 주의점은 로딩이다. 참조 범위가 크면 화면에 뜨는 데 시간이 걸리고, 그 사이 다른 함수가 빈 값을 참조해 오류를 낸다. 그래서 나는 IMPORTRANGE로 통째로 전용 탭에 받아 놓고, 다른 함수는 그 탭만 바라보게 나눠 쓴다. 원본이 덜 흔들린다.

    외부 데이터(API·다른 도구)를 쌓는 최소 구성

    외부 데이터가 필요하면 Apps Script로 받아서 쌓는 게 최소 구성이다. URL Fetch 서비스로 API를 부르고, 결과를 raw 탭에 행으로 추가한다. 실행 기록은 log 탭에 남긴다. 비용 관련해서 하나만 적자면, 나는 헤드리스로 LLM을 부를 때 기본 설정이 1회 $0.78이었던 걸 모델과 작업 디렉터리를 지정하고 불필요한 도구를 떼는 방식으로 $0.028까지 줄인 적이 있다. 외부 API를 쓰는 자동화는 이렇게 호출 단가와 횟수를 먼저 따져보고 붙여야 한다. 생략하면 청구서로 배우게 된다.

    기본형은 이렇다. 마지막 행 다음에 붙이는 구조라 덮어쓰기 사고가 없다.

    function appendOrder() {
      const sh = SpreadsheetApp.getActive().getSheetByName('raw');
      const row = [new Date(), '주문', '자동 수집'];
      sh.appendRow(row);
      SpreadsheetApp.getActive().getSheetByName('log')
        .appendRow([new Date(), 'appendOrder', 'ok']);
    }
    시간·폼·수정 트리거 일러스트

    트리거 완전 정리: 시간·폼 제출·수정 시, 언제 뭘 써야 하나

    자동화를 ‘걸어두는’ 장치가 트리거다. 어떤 트리거를 쓰느냐에 따라 실패 양상이 달라지니, 선택 기준부터 정리한다. 무인으로 돌리는 입장에서 내가 실제로 쓰는 판단 표다.

    상황 트리거 주의점
    매일 정해진 시각에 집계 갱신 시간 기반 (일 단위 타이머) 지정 시각이 아니라 그 시간대 안에 임의 실행된다
    폼 응답이 올 때마다 정리 양식 제출 시 응답 탭 반영이 늦으면 빈 값을 읽을 때가 있다
    특정 셀을 고치면 즉시 처리 설치 가능한 onEdit 수정 즉발이라 중복 실행 방지 로직이 필요하다
    1시간마다 외부 API 폴링 시간 기반 (시간 단위 타이머) 실행 한도와 API 호출 단가를 먼저 확인한다

    각 트리거의 함정: 중복 실행, 실행 한도, 타임존

    시간 기반 트리거는 ‘매일 오전 6시’로 지정해도 6시 정각이 아니라 그 시간대 안에서 구글이 정한 시점에 돈다. 나는 cron 63개를 무인으로 돌리는데, 시간 지정을 하는 순간부터 ‘정시 보장이 없다’를 전제하고 설계한다. 중복 실행도 조심한다. 사람이 셀을 빠르게 여러 번 고치면 onEdit가 그 횟수만큼 발생한다. 그래서 스크립트 첫머리에 ‘같은 행을 최근에 처리했으면 건너뛰기’ 확인을 넣는다. 타임존은 파일 설정과 스크립트 설정이 따로 놀 때가 있다. Apps Script 프로젝트 설정에서 Asia/Seoul로 맞춰두지 않으면 날짜 경계가 어긋나서 새벽 배치가 전날 데이터를 가져간다.

    매크로 녹화에서 Apps Script 트리거로 넘어가는 시점

    매크로 녹화로 시작해도 된다. 녹화하면 내부적으로 Apps Script가 만들어지니까, 나중에 확장하기도 쉽다. 넘어갈 시점의 신호는 두 가지다. 녹화된 매크로를 조건에 따라 다르게 굴러가게 하고 싶어질 때, 그리고 자동 실행을 걸고 싶을 때다. 매크로는 트리거에 조건 분기 얹기가 어색하니, 그때 코드를 열어 녹화본을 고치는 식으로 넘어가면 된다.

    자동화가 실패했을 때: 복구 5단계와 재발 방지 세팅

    여기가 이 글의 심장이다. 자동화 실패는 대부분 소리 없이 온다. 나는 이 블로그의 글도 문체·사실성 자동 검사를 통과한 것만 공개하는 구조로 운영하는데, 검사를 통과 못 한 초안은 사람이 검토한다. 이 원칙을 만든 이유가 바로 무음 실패 때문이었다. 자동화가 잘못된 걸 스스로 알려주는 경우는 생각보다 드물다.

    데이터가 꼬였을 때 복구 순서 (버전 기록 활용)

    복구는 서두르면 망가진다. 순서를 지켜라. 첫 단계로 트리거를 일시 중지한다. 이걸 안 하고 고치는 사이 배치가 또 돌아서 꼬임이 두 배가 된다. 다음은 raw 탭이 온전한지 확인한다. 원천이 살아 있으면 정리 탭은 함수 다시 당기는 걸로 끝난다. raw까지 손댔다면 파일 > 버전 기록에서 망가지기 직전 시점으로 복사본을 만든다. 원본에 바로 복원하지 말고 사본에서 검증부터. 검증이 끝나면 복구본을 새 원본으로 삼고, 마지막으로 log 탭에 뭐가 어긋났는지 한 줄 적어둔다. 이 기록이 다음 사고를 줄인다.

    무음 실패를 잡는 실패 알림 세팅법

    실패 알림은 try-catch로 에러를 잡아 본인 메일이나 슬랙으로 쏘는 게 최소 구성이다. 성공 알림도 하나 남겨두라는 게 내 방식이다. ‘오늘 6시 배치 완료’라는 한 줄이 안 오면 그 자체가 실패 신호다. 에러만 알려주는 구조는 ‘에러 없이 안 돈 경우’를 못 잡는다. 권한 만료로 멈춘 배치가 정확히 그 경우였다. 실패 처리 코드는 짧게 이런 모양이다.

    function dailyJob() {
      try {
        // 본문 처리
        MailApp.sendEmail('[email protected]', '배치 완료', 'ok');
      } catch (e) {
        MailApp.sendEmail('[email protected]', '배치 실패', e.message);
      }
    }

    절대 자동화하면 안 되는 작업의 경계선

    경계선을 세 개 둔다. 원본 삭제·파기가 결과인 작업은 자동화하지 않는다. 돈이 실제로 움직이는 결제·환불 실행은 사람 확인 없이 돌리지 않는다. 그리고 ‘판단 기준을 글로 못 쓰겠다’는 작업은 애초에 자동화 대상이 아니다. 이 세 개를 넘는 자동화는 절약해 주는 시간보다 되돌리는 데 드는 시간이 커진다.

    정리: 1인 운영 루틴과 오늘 당장 시작하는 3단계

    이 블로그는 한 달 반 동안 43편을 발행했는데, 초안 생성에서 공개까지 기계가 하고 사람이 검수하는 구조다. 그걸 가능하게 한 건 화려한 기술이 아니라 점검 루틴이다. 자동화는 한 번 만드는 게 아니라 매주 쳐다보는 시스템이다.

    주문·문의 집계 자동화 사례와 매주 월요일 5분 점검

    1인 사업자에게 시트 자동화의 최대 수혜는 집계 시간이 아니라 ‘깜빡함’이 사라지는 거다. 주문 폼, 문의 폼, 재고 시트가 각자 쌓이고 리포트 탭이 알아서 갱신되면 아침에 확인 한 번으로 끝난다. 나의 월요일 루틴은 이렇다. 배치 성공 알림이 주간 분량대로 쌓였는지 본다. log 탭에서 지난주 에러 한 줄을 훑는다. 마지막으로 raw 탭 맨 아래행의 타임스탬프가 최근인지 확인한다. 셋 다 이상 없으면 점검 끝이다. 이 루틴으로 잡은 사고가 더러 있다. 그중 반은 권한 문제였다.

    자동화 확장 순서: 시트 → 폼 → 알림 → 외부 도구

    확장은 순서가 있다. 시트 함수로 정리를 붙잡고, 폼으로 입력을 규격화하고, 알림으로 무음 실패를 막은 다음에 외부 도구를 붙인다. 이 순서를 뒤집으면 외부 도구가 고장 났을 때 원인을 특정할 수가 없다. 나도 초반에 순서를 무시했다가 어디서부터 망가졌는지 몰라 전부 끊고 다시 쌓은 적이 있다.

    오늘 당장 시작하는 3단계 행동 플랜

    1단계는 복붙 작업 하나를 골라 원본 시트와 자동화 시트를 분리하는 것부터다. 2단계는 트리거 딱 하나만 걸고 사흘이 아니라 며칠간 지켜보는 것이다. 실행 기록 탭을 같이 만들어두면 지켜보는 게 훨씬 쉬워진다. 3단계는 성공·실패 알림을 붙이는 것. 여기까지 오면 진짜 무인 운영이다. 관련해서 Apps Script 타임존 설정 실패기, 무코드 자동화의 한계와 넘어설 시점, 무음 실패를 잡는 점검 루틴 글도 함께 보면 좋다.

    자주 묻는 질문

    코딩을 전혀 몰라도 자동화할 수 있나요? 시트 함수와 매크로 녹화 수준이면 코딩 없이 충분합니다. Apps Script는 필요해지면 그때 녹화본을 조금씩 고치는 방식으로 시작하면 됩니다.

    무료로 가능한가요? 요금은 언제 드나요? 구글 시트의 함수·트리거·메일 알림은 무료 구간에서 돌아갑니다. 외부 API를 매시간 부르는 구조로 가면 그때부터 호출 비용을 따져야 합니다. 내 경우 호출 단가를 27배 줄인 적이 있으니 설정을 먼저 점검하세요.

    트리거가 갑자기 멈추면 어떻게 확인하나요? Apps Script의 ‘내 실행’ 로그부터 보세요. 로그에 실행 기록 자체가 없으면 권한 만료나 트리거 삭제를 의심합니다. 성공 알림이 안 오는 경우도 같은 방향으로 확인하면 됩니다.


    글쓴이 정보

    제가 만든 AI 파이프라인이 초안을 쓰고, 저는 검사에 걸린 것만 손봅니다. 통과하지 못한 초안은 그냥 버립니다. 파이프라인은 여기에 정리해 두었습니다.

  • 광고 문구 AI에 시키기 전에 이것부터

    광고 문구 AI에 시키기 전에 이것부터

    문구 뽑아달라고 했더니 ‘혁신’만 돌아온 날

    광고 문구 AI로 만드는 법을 검색해서 들어온 사람이라면 대충 이 상황일 거다. 툴을 열고 “매출 관리 SaaS 광고 문구 20개 만들어줘”라고 붙여넣었다. 돌아온 건 ‘매출을 혁신하는’, ‘원스톱으로 관리하는’, ‘스마트한 비즈니스 파트너’ 같은 문장 나열. 붙여도 클릭이 안 나올 게 뻔한 문구들이다.

    작년에 내가 정확히 이걸 겪었다. 운영 중인 SaaS 홍보 문구를 AI에 통째로 맡겼는데, 초안 스무 개가 전부 비슷비슷한 수사로 도배돼 있었다. 그때 든 생각은 “이 툴이 별로구나”였는데, 판단이 틀렸다. 문제는 툴이 아니라 내가 준 입력이었다.

    이 글은 그때 이후로 내가 고정해 쓰는 입력 시트와 검수 기준을 정리한 운영 기록이다. 툴 비교가 궁금하면 다른 글을 보시고, 여기는 ‘어떤 조건에서 실제로 쓸 문구가 나오는가’만 다룬다.

    AI 광고 문구, 왜 붙여넣으면 뻔한 문장만 나오는가

    ‘누구나 쓰는 프롬프트’가 문제다

    “광고 문구 만들어줘”라는 입력에는 타깃도, 페인포인트도, 금지어도 없다. 모델은 이런 요청에서 가장 평균적인 답을 꺼낸다. 평균이라는 건 이미 시장에 널려 있다는 뜻이고, 널려 있는 문구는 클릭 이유가 되지 못한다.

    뻔한 문구의 특징

    내가 받아본 초안을 다시 들여다보니 패턴이 보였다. 형용사가 앞에 나오고 명사가 뒤따르는 구조(“스마트한 ○○”), 추상명사로 끝나는 구조(“○○의 혁신”), 그리고 아무 제품에나 갖다 붙일 수 있는 문장. 셋 중 하나에 걸리면 그 문구는 폐기 대상이었다.

    AI 광고 문구란 모델에게 입력한 타깃·페인·차별점의 조합을 문장으로 재배열한 결과물이다. 입력에 차별점이 없으면 재배열해도 차별점이 생기지 않는다.

    AI에 무엇을 입력해야 안 뻔한 문구가 나오는가

    입력 시트 5개 슬롯

    지금은 SaaS마다 입력 시트를 고정해 둔다. 슬롯은 타깃, 페인포인트, 차별점, 금지어, 톤 다섯 개다. 슬롯 하나가 빠지는 순간 초안 품질이 바닥으로 꺼지는 걸 여러 번 확인해서, 빈 슬롯이 있으면 아예 생성을 돌리지 않는 규칙으로 굳혔다.

    금지어 슬롯이 동질화 방지의 첫 단추다. 여기엔 ‘혁신, 스마트, 원스톱, 솔루션, 파트너’처럼 내 제품에서 이미 질린 표현과, 경쟁사 광고에서 자주 본 표현을 같이 넣는다. 이 목록이 길어질수록 초안이 달라진다.

    복사 가능한 프롬프트 예시

    타깃: 직접 수주 견적을 엑셀로 관리하는 1인 디자인 스튜디오. 페인포인트: 월말에 어떤 견적이 미결인지 찾느라 한 시간씩 씀. 차별점: 견적 상태를 카톡 알림으로만 보여줌, 입력 화면이 3칸. 금지어: 혁신, 스마트, 원스톱, 솔루션, 효율화. 톤: 과장 없이 건조하게, 숫자와 상황 위주로. 위 조건에서 클릭을 유도하는 광고 문구 10개. 각 문구 옆에 어떤 페인포인트를 썼는지 한 줄로 표기.

    마지막 줄이 은근히 중요하다. 문구마다 근거를 붙이게 하면 모델이 지어내는 걸 스스로 줄인다.

    입력이 부족할 때 나오는 신호

    타깃이 뭉뚱그려지면 초안에 ‘비즈니스 전문가’, ‘직장인 여러분’ 같은 부름이 섞인다. 차별점이 비면 문구 전체가 톤 메시지로만 도는 것도 신호다. 이런 초안을 다듬는 대신 입력 시트로 돌아가서 채우는 편이 빠르다.

    네이버·인스타·구글, 플랫폼별로 문구를 다르게 써야 하는가

    같은 문구를 돌렸다가 크게 벌어진 클릭률

    같은 초안 묶음을 여러 플랫폼에 그대로 돌렸다가 플랫폼 사이 클릭률 격차가 생각보다 컸던 적이 있다. 노출 환경이 다른데 같은 문장을 쓴 게 원인이었다. 지금은 초안을 하나 뽑고 플랫폼 조건만 바꿔 재생성한다.

    플랫폼별 조건

    네이버 파워링크는 노출 자릿수가 짧아 앞 열댓 자가 승부처다. 문장이 잘리는 지점까지 확인하고, 잘린 뒤가 궁금해지는 멈춤 패턴으로 다시 뽑는다. 인스타는 문구가 아니라 이미지와 헤드라인의 조합으로 움직인다. 계정 하나를 최근에 다시 봤더니 릴스와 피드의 조회수 중앙값 자체가 갈려서, 문구 배치도 포맷별로 따로 잡는다. 구글 검색광고는 키워드 정합성이 전부다. 헤드라인에 검색 키워드가 안 들어가면 그 초안은 폐기다.

    재요청 프롬프트는 이렇게 쓴다.

    위 초안 중 1, 4, 7번을 네이버 파워링크용으로 변형해줘. 조건: 앞 15자 안에 타깃 상황이 나올 것, 문장이 잘려도 앞부분만으로 의미가 통할 것, 물음표로 끝내지 말 것.

    플랫폼별 광고 문구란 노출 자릿수·경쟁 소재·사용자 상태가 다른 환경에 맞춰 같은 페인포인트를 다른 구조로 재작성한 결과물이다.

    AI가 뽑은 문구 중 실제로 쓸 문구를 고르는 기준

    3단 필터

    문구 20개를 받으면 필터를 세 번 통과시킨다. 첫 통과는 사실 확인이다. 문구에 들어간 숫자와 표현이 근거 있는지 원문으로 대조한다. 두 번째는 차별성이다. 경쟁사 문구에 갖다 붙여도 어색하지 않으면 탈락. 세 번째는 행동 유도다. 클릭해야 하는 이유가 문장 안에 없으면 남기지 않는다.

    사람과 기계로 검수를 나눈 이유

    이 블로그는 문체·사실성 자동 검사를 통과한 글만 공개되고, 걸린 초안은 사람이 본다. 광고 문구도 같은 구조로 돌린다. 자동 검사는 금지어와 구조 중복을 걸러주고, 최종 판단은 사람이 한다. 자동 생성 글의 AI 문체 지문을 재본 적이 있는데 손을 안 대면 1,000자당 10.1건이 나오다가 고치고 나면 1.4건으로 떨어졌다. 기계만으로는 안 잡히는 층위가 분명히 있다.

    A/B 테스트로 넘기는 법

    필터를 통과한 문구는 후보풀에 넣고 소재 두세 개씩 짝지어 돌린다. 한 짝에는 구조만 다른 문구를 넣어서 문구 자체의 영향을 분리한다. 여기서 ‘느낌이 좋은 문구’를 고르는 습관이 제일 비싸다. 클릭률은 느낌을 모른다.

    플랫폼별 광고 문구 선택 일러스트

    AI 문구가 다 똑같아 보일 때 피하는 법

    동질화가 생기는 이유

    문체 자동 검사가 유사 초안을 걸러내는 과정에서 반복 패턴이 눈에 밟혔다. 같은 입력 시트로 같은 구조를 요청하면 나오는 문구의 뼈대가 같았다. 모델이 아니라 내 요청이 같은 걸 만든 거였다.

    같은 맥락, 다른 구조로 뽑기

    지금은 네 가지 구조를 번갈아 요청한다. 질문형(“견적 미결 건 찾느라 한 시간 쓰나요?”), 시나리오형(“월말, 엑셀을 열고 47행을 내려다보는 중”), 숫자형(“입력 칸 3개, 알림 1통”), 부정형(“또 다른 관리 툴은 필요 없습니다”). 구조를 바꾸는 것만으로 초안의 겉모습이 달라진다.

    실제 고객 언어 섞기

    제일 잘 먹히는 방법은 후기와 문의 원문에서 문구를 가져오는 거였다. 고객이 쓴 표현을 입력 시트의 페인포인트 칸에 그대로 붙인다. “월말에 미결 견적 찾느라 한 시간씩 씀” 같은 문장은 내가 못 쓴다. 그 문장을 쓴 사람이 고객이기 때문이다.

    AI 문구 동질화란 입력 정보와 요청 구조가 같을 때 모델이 같은 뼈대의 문장을 반복 생성하는 현상이다. 구조와 어휘 출처를 바꾸지 않는 한 저절로 풀리지 않는다.

    광고 심의·과장 표현, AI는 모른다

    근거 없는 수치 사건

    한 번은 검토를 생략할 뻔한 초안에 근거 없는 수치가 박혀 있었다. “99%가 만족한” 같은 문장이었다. 우리 데이터에 그 숫자는 없었다. 이 일이 있고 나서 사람 검토 단계를 없애지 못했다. AI는 문구를 만들 뿐, 사실 여부를 보증하지 않는다.

    걸리기 쉬운 표현

    • 최대, 1위, 보장, 100% 같은 극단 표현. 근거 자료가 없으면 쓰지 않는다.
    • “완치”, “효능”, “체험 사례 보장” 같은 건강·의약 계열 표현. 해당 업종은 별도 심의 규정이 얹혀서 문구 수준에서 걸러지지 않는다.
    • 비교 표현. 경쟁사를 특정하지 않아도 우위를 암시하면 검토 대상이 된다.

    발행 전에는 3분 리스크 체크를 돌린다. 문구의 숫자에 근거 문서가 매칭되는지, 극단 표현이 남아 있는지, 업종 규제 표현이 섞였는지 순서로 본다. 법률 자문은 아니고, 실무에서 걸러지는 지점을 순서화한 것뿐이다. 애매하면 그 문구는 버린다. 아깝지 않다.

    정리: 광고 문구 AI에 시키기 전 3분 체크리스트

    입력 시트 점검

    타깃, 페인, 차별점, 금지어, 톤. 빈 슬롯이 있으면 생성하지 않는다. 페인포인트 칸에는 내 문장이 아니라 고객 원문이 들어가 있는지 본다.

    프롬프트 점검

    플랫폼 조건(자릿수, 키워드 정합성, 이미지 조합)을 요청에 명시했는지, 구조를 질문형·시나리오형·숫자형·부정형 중 바꿔 요청했는지 확인한다.

    검수 기준 점검

    사실 확인, 차별성, 행동 유도를 순서대로 통과시키고, 극단 표현과 근거 없는 수치를 걸러낸 뒤 후보를 A/B 짝지어 돌린다.

    이 흐름을 고정하고 나서 소재 제작에 쓰는 시간이 체감상 반 이하로 줄었다. 초안은 기계가 만들어도, 뭘 넣고 뭘 버릴지는 입력 시트를 만든 사람의 몫이다. 다음 글에서는 이렇게 뽑은 소재를 예약 발행까지 넘기는 파이프라인을 정리한다.

    근거로 삼은 문서


    글쓴이 정보

    초안을 쓰는 건 제가 만든 AI 파이프라인이고, 문체·사실성 자동 검사에 걸린 문장은 제가 직접 고친 뒤 공개합니다. 만드는 과정

    자주 나오는 질문

    AI 광고 문구가 계속 ‘혁신’, ‘스마트’ 같은 뻔한 표현만 내놓는 이유는?

    입력에 타깃, 페인포인트, 금지어가 없으면 모델은 가장 평균적인 답을 꺼냅니다. 평균은 이미 시장에 널려 있는 문장이고, 그건 클릭 이유가 되지 못합니다. ‘혁신, 스마트, 원스톱, 솔루션, 파트너’ 같은 표현을 아예 금지어 슬롯에 넣고 돌리면 초안이 달라집니다.

    AI 광고 문구 생성 시 프롬프트에 무엇을 넣어야 하나?

    타깃, 페인포인트, 차별점, 금지어, 톤 다섯 슬롯을 고정해서 씁니다. 하나라도 비면 초안 품질이 바닥으로 꺼지는 걸 여러 번 확인해서, 빈 슬롯이 있으면 생성을 아예 안 돌리는 규칙으로 굳히는 게 좋습니다. 마지막에 문구마다 어떤 페인포인트를 썼는지 표기하게 하면 지어내는 걸 줄일 수 있습니다.

    AI가 뽑은 광고 문구 중 실제로 쓸 문구는 어떻게 고르나?

    세 번의 필터를 통과시킵니다. 먼저 문구 속 숫자와 표현의 사실 확인, 다음은 경쟁사 문구에 갖다 붙여도 어색하지 않으면 탈락시키는 차별성 확인, 마지막으로 클릭 이유가 문장 안에 있는지 봅니다. 통과한 문구만 후보풀에 넣어 소재 두세 개씩 A/B 테스트로 넘깁니다.


  • 워드프레스 자동 포스팅, 1인 빌더의 3단계 루틴

    워드프레스 자동 포스팅, 1인 빌더의 3단계 루틴

    워드프레스 자동 포스팅, 왜 사람의 개입을 줄여야 하는가?

    AI 초안을 일일이 검토하는 1인 빌더의 딜레마

    혼자서 여러 SaaS를 굴리다 보면 콘텐츠 발행이 발목을 잡는다. 워드프레스 자동 포스팅을 도입해도 결국 사람이 초안을 검수해야 하는 한계에 부딪히기 때문이다. AI가 만든 글을 일일이 읽고 사실 관계를 확인하고 어색한 문구를 고치는 데 시간이 턱없이 부족하다. SaaS를 혼자 운영하는 입장에서 콘텐츠 검수에 하루 종일 시간을 쓸 수는 없다.

    유인 자동화가 오히려 효율을 갉아먹는 이유

    기계가 초안을 만들고 사람이 최종 승인을 누르는 방식은 안전해 보이지만 비효율적이다. 검수 대기열에 글이 쌓이면 발행 주기가 흐트러지고, 결국 블로그는 방치된다. 사람의 개입을 줄이지 않으면 자동화의 의미가 없다. 지난 한 달 반 동안 43편을 발행하면서 이 병목 현상을 뼈저리게 느꼈다.

    무인 발행 시스템의 필요성과 구글 SEO의 현실

    구글이 AI 콘텐츠 자체를 패널티 주는 것은 아니다. 다만 아무런 가치도 없이 기계로 찍어낸 글은 결국 색인에서 밀려난다. 무인 발행 시스템이란 사람의 수동 검수 없이 기계가 자체 품질 기준을 통과한 콘텐츠만 공개하는 자동화 파이프라인이다. 이 기준을 어떻게 세우느냐가 1인 빌더의 생존을 가른다.

    1단계: REST API vs 플러그인, 발행 자동화 세팅의 선택

    워드프레스 REST API로 자동 발행 환경 구축하기

    발행 자동화를 세팅할 때 플러그인을 쓸지 REST API를 쓸지 고민하게 된다. 처음에는 편의를 위해 자동 포스팅 플러그인을 여러 개 깔았다. 설정이 간단해서 당장은 편했지만, 사이트가 무거워지고 충돌이 잦아졌다. 결국 확장성과 제어력을 위해 REST API 방식으로 갈아탔다. 지금은 작업 폴더 183개, git 저장소 90개를 관리하는 파이프라인에서 API로 직접 쏴서 발행한다.

    자동 포스팅 플러그인의 한계와 보안상 위험

    플러그인 방식은 의존성이 높다. 업데이트가 멈추거나 취약점이 발견되면 사이트 전체가 노출된다. 1인 빌더가 모든 플러그인의 보안 패치를 쫓기는 현실적으로 불가능하다. 발행 로직을 내 코드베이스로 가져오면 이런 외부 의존성을 끊어낼 수 있다.

    가장 적합한 방법은 무엇인가: 1인 빌더의 운영 기준

    REST API로 직접 통신하는 편이 유지보수에서 압도적으로 유리하다. 워드프레스 설치 경로나 환경이 바뀌어도 헤더와 엔드포인트만 수정하면 그만이다. 기초적인 통신 코드는 의외로 단순하다.

    import requests
    import base64
    
    wp_url = "https://your-domain.com/wp-json/wp/v2/posts"
    user = "your_username"
    password = "your_app_password"
    credentials = base64.b64encode(f"{user}:{password}".encode()).decode()
    headers = {"Authorization": f"Basic {credentials}", "Content-Type": "application/json"}
    
    payload = {
        "title": "자동 발행 테스트",
        "content": "본문 내용",
        "status": "publish"
    }
    
    response = requests.post(wp_url, headers=headers, json=payload)
    

    애플리케이션 비밀번호를 발급받아 헤더에 넣고 JSON 페이로드를 쏘면 끝이다. 플러그인 UI에 얽매이지 않고 내가 원하는 형태로 발행 로직을 구성할 수 있다.

    2단계: 메타 태그와 슬러그, SEO 요소 자동화 처리

    발행 전 메타 태그 자동 매핑 로직 설계

    발행 자체는 API로 해결되지만, SEO 요소를 비워두면 검색 유입은 기대할 수 없다. 타이틀, 설명, 슬러그를 사람이 넣어주는 건 자동화가 아니다. AI가 초안을 만들 때 메타 데이터도 함께 뽑아서 페이로드에 매핑해야 한다.

    URL 슬러그 자동 최적화 방법

    슬러그 자동 최적화란 검색 엔진과 사용자 모두에게 유리한 URL 구조를 AI가 생성 시점에 분석하여 적용하는 과정이다. 한글 제목을 그대로 인코딩하면 URL이 지저분해지므로, 핵심 키워드를 영문으로 번역하고 불필요한 불용어를 제거하는 로직을 앞단에 둔다.

    카테고리와 태그 자동 분류의 기준

    메타 태그 매핑은 AI 프롬프트에서 JSON 형태로 값을 받아 처리한다. 프롬프트에서 구조화된 데이터를 강제하면 코드에서 파싱하기 편하다.

    {“title”: “제목”, “description”: “80자 이내 요약”, “slug”: “english-slug-only”, “category”: [“SaaS”], “tags”: [“자동화”, “워드프레스”]}

    이 결과값을 REST API 페이로드의 필드에 맞게 꽂아 넣으면 메타 데이터 입력 과정이 완전히 자동화된다.

    3단계: 구글 패널티를 피하는 기계의 품질 검사 기준

    구글 SEO 패널티를 유발하는 AI 문체의 특징

    무인 발행에서 가장 까다로운 부분은 품질 검사다. 기계가 쓴 글은 특유의 정형화된 패턴을 보인다. AI 문체 지문이란 특정 LLM이 반복적으로 사용하는 구문 패턴과 어휘 분포를 수치화한 데이터로, 구글의 패널티 대상이 되는 기계적 텍스트의 징후다. 자동 생성한 글의 AI 문체 지문을 재보니 1,000자당 10.1건이었다. 이대로 발행하면 패널티를 피하기 어렵다.

    사실성 및 중복 콘텐츠 자동 검증 로직

    지문을 낮추기 위해 문체 변환기를 거치고 다시 검사를 돌린다. 손으로 고친 뒤에는 1.4건으로 떨어지는 걸 확인했다. 이 기준을 통과해야 발행 대기열로 넘어간다. 사실성 검증과 중복 검사도 병행한다. 직접 만든 중복 검사 가드를 검증해 보니, 이미 발행된 글 35편끼리 비교했을 때 595쌍 중 73쌍(12.3%)을 중복이라고 잘못 판정했다. 민감도 조절이 필요한 숙제다.

    사람이 개입하지 않는 안전한 자동화 기준선

    통과하지 못한 초안은 발행되지 않는다. 기계가 기준을 통제하기 때문에 품질이 떨어지는 글이 노출될 일이 없다. 다만 중복 검사의 오탐지율을 그대로 두면 발행량이 급감하므로, 예외 처리 로직을 보완하는 중이다.

    자동 포스팅 품질 검사 일러스트

    자동화 파이프라인의 비용과 스케줄 관리

    헤드리스 LLM 호출 비용 최적화

    무인으로 시스템을 돌리면 비용이 걱정된다. 헤드리스로 LLM을 부를 때 기본 설정은 1회 호출당 $0.78이었다. 매일 글을 쓰고 검사하면 비용이 감당이 안 된다. 모델과 작업 디렉터리를 지정하고 불필요한 도구를 떼어내니 $0.028로 27배 줄었다. 기본 설정 그대로 쓰면 큰일 난다.

    크론 스케줄링과 병렬 처리

    지금은 cron 63개를 무인으로 돌리고 있다. 글 생성, 검사, 발행, 모니터링이 각각의 크론으로 분리되어 있다. 시간대를 잘 분산시키지 않으면 서버 리소스가 튀고 API 호출이 실패한다.

    1인 빌더의 리소스 한계 관리

    자동화가 늘어난다고 해서 사람의 피로도가 없어지는 건 아니다. 파이프라인이 꼬일 때마다 어디서 문제가 났는지 추적하는 게 일이다. 로그를 꼼꼼히 남기지 않으면 디버깅 자체가 불가능해진다.

    발행 이후: 무인 크론 루틴과 예외 처리 전략

    크론(Cron)으로 이어지는 1인 빌더의 발행 루틴

    글은 자동 파이프라인이 주 1~5편으로 불규칙하게 초안을 만든다. 불규칙적인 주기가 오히려 자연스러운 발행 패턴으로 보인다. 문체와 사실성 자동 검사를 통과한 글만 워드프레스에 공개된다. 이 루틴은 사람이 개입하지 않는다.

    검사에서 걸린 초안, 사람은 어떻게 후속 처리하는가

    검사에서 불합격한 초안은 사람이 검토한다. 자동화가 완벽할 수 없기 때문에, 기계가 판단하기 애매했던 글은 결국 내가 열어보게 된다. 주로 팩트 오류나 심하게 뒤틀린 문맥이 원인이다. 이때는 초안을 폐기하거나 프롬프트를 수정하여 처음부터 다시 돌린다.

    자동화 시스템의 한계와 모니터링 세팅

    시스템이 멈췄을 때 알 수 있어야 한다. 에러 로그를 슬랙으로 쏘게 세팅해 두지 않으면, 발행이 멈춘 지 일주일이 지나서야 알게 된다. 모니터링은 선택이 아니라 필수다.

    요약 및 1인 빌더를 위한 다음 액션

    워드프레스 자동 발행 시스템 3단계 루틴 요약

    REST API로 발행 파이프라인을 잡고, 메타 태그와 슬러그를 자동 매핑하며, 기계의 자체 품질 검사로 패널티를 방어하는 것이 핵심이다. 플러그인에 의존하지 않고 비용을 통제하는 것도 빠질 수 없는 과정이다.

    지금 바로 세팅해야 할 자동화 체크리스트

    1인 빌더라면 다음 항목을 점검해 보자.

    • REST API 애플리케이션 비밀번호 발급 및 테스트 발행
    • AI 초안 생성 시 메타 데이터 JSON 매핑 로직 추가
    • 발행 전 AI 문체 지문 및 중복 검사 스크립트 구현
    • 불합격 초안의 후속 처리 및 에러 모니터링 세팅

    SaaS 규모를 키우기 위한 콘텐츠 전략

    콘텐츠 발행이 기계화되면 1인 빌더는 제품 개발에 집중할 수 있다. 완벽한 자동화는 없지만, 한계를 인정하고 기계가 통제할 수 있는 영역을 넓히는 게 결국 SaaS를 키우는 길이다.

    참고한 공식 문서


    글쓴이 정보

    이 글의 초안도 운영자가 만든 AI 파이프라인이 씁니다. 문체·사실성 자동 검사를 통과한 글만 공개되고, 걸린 초안은 사람이 고쳐서 내보냅니다. 전체 구조는 포트폴리오에 적어 두었습니다.