릴스 43편의 조회수를 다 합치면 79,946입니다. 그중 51,491이 한 편에서 나왔습니다.
하위 34편은 다 합쳐도 7.9%입니다. 상위 3편이 77.5%고요.
이 글은 그 43편을 만든 파이프라인과, 나온 숫자를 가리지 않고 전부 공개하는 기록입니다. 명령어까지 그대로 두었으니 필요하면 가져가세요.
먼저 분명히 해둘 게 있습니다. 이 파이프라인이 5만 조회를 만든 게 아닙니다. 같은 파이프라인으로 43편을 냈고 중앙값은 214였습니다. 파이프라인이 바꾼 건 결과가 아니라 시도 비용입니다.
성과 전량 — 43편
| 순위 | 조회 | 저장 | 편 |
|---|---|---|---|
| 1 | 51,491 | 787 | 클로드 데스크톱 + Ollama |
| 2 | 6,279 | 83 | 그래픽카드 없이 AI |
| 3 | 4,186 | 70 | 로컬 메모리 시스템 |
| 4 | 4,098 | 46 | 오픈모션 해부 |
| 5 | 2,112 | 13 | 폰 원격 스킬 |
| 6 | 1,670 | 23 | 챗GPT MCP 검증 |
| 7 | 1,343 | 19 | 스킬 트리거 튜닝 |
| 8 | 1,327 | 13 | Capafy 스킬 출시 |
| 9 | 1,090 | 11 | 클로드 코드 플러그인 5 |
| … | … | … | … |
| 41 | 42 | 0 | 무료 이미지 생성 4곳 |
| 42 | 36 | 0 | 클로드 코드 API 가격 |
| 43 | 7 | 0 | 구글 AI 스튜디오 |
| 지표 | 값 |
|---|---|
| 합계 조회 | 79,946 |
| 중앙값 | 214 |
| 1,000 넘은 편 | 9편 (21%) |
| 1위 한 편의 비중 | 64.4% |
| 상위 3편 비중 | 77.5% |
| 하위 34편 비중 합계 | 7.9% |
이 분포를 보고 나서 생각이 바뀌었습니다. 어느 편이 터질지 미리 못 고릅니다. 1위 편도 만들 때는 "설정 하나 바뀐 뉴스"였고, 공들여 만든 편들이 두 자리 조회로 끝났습니다.
고를 수 없다면 남는 방법은 하나입니다. 한 편을 싸게 만들어서 여러 번 내는 것. 편당 비용이 반나절이면 43번을 못 하고, 몇 분이면 할 수 있습니다.
이런 소식, 남들보다 먼저 받으실 분?
직접 돌려보고 되는 것만 골라 매주 보내드립니다. 광고성 하이프는 거릅니다.
파이프라인 — 사람이 치는 건 명령어 두 줄
영상 한 편을 만드는 명령은 이 두 줄이 전부입니다.
cd tools/shorts-pipeline
node draft-script.mjs <슬러그> # 블로그 글 → 11줄 대본 초안
node make-short.mjs <슬러그> # 대본 → mp4
draft-script.mjs는 studio/blog/<슬러그>/index.html을 읽어 11줄짜리 대본 초안을 만듭니다. 훅·반전·CTA 규칙이 프롬프트 안에 들어 있습니다. 초안이지 완성본이 아닙니다 — 여기서 반드시 사람이 읽고 고칩니다. 이 글의 릴스도 초안을 통째로 다시 썼습니다.
make-short.mjs는 그다음을 알아서 합니다.
| 단계 | 하는 일 | 실측 |
|---|---|---|
| 음성 | Gemini TTS · 목표 길이에 맞춰 배속 자동 | 29.15초 |
| 자막 싱크 | Gemini 2패스 — 시각 따로, 문장 따로 받아 합침 | 낱말 64개 |
| 화면 | 카드뉴스 위에 자막 · HyperFrames 렌더 | 903프레임 |
| 출력 | 1080×1920 mp4 | 1분 24초 · 9.8MB |
렌더가 1분 24초입니다. 대본을 읽고 고치는 시간까지 더해도 한 편에 십몇 분입니다. 43편이 가능했던 이유가 이겁니다.
막혔던 곳도 적어둡니다
- 자막 싱크: 커스텀 사전과 타임스탬프를 같이 못 씁니다(
custom_vocabulary is incompatible with timestamps). 그래서 두 번 부릅니다 — A패스로 시각, B패스로 문장. - 무료 한도: Gemini TTS가 하루 10회입니다. 하루 10편이 상한이고 넘으면 429가 뜹니다.
- 대본과 음성이 어긋나면 막힙니다: 렌더 전에 음성을 다시 받아쓰기해서 대본과 대조하고, 일치율이 낮으면 중단합니다. 대본만 고치고 음성을 안 다시 만들면 여기서 걸립니다(오늘도 걸렸습니다).
- CTA 키워드: 대본 마지막 줄의 댓글 키워드가 캡션·DM과 다르면 렌더 전에 멈춥니다. 다르면 자동 DM이 안 걸리니까요.
카드뉴스와 게시도 같은 방식입니다
# 카드뉴스 HTML → PNG 10장 + 갤러리 webp
node tools/export-cards.mjs <카드뉴스.html>
node tools/check-card-contrast.mjs <슬러그>
node tools/update-gallery-webp.mjs <슬러그>
# 채널 문구 · 게시
node tools/channel-publisher/lib/gen-publish-json.mjs <폴더>
node --env-file=.env server.mjs # :3791 대시보드
게시 대시보드가 인스타(릴스·캐러셀)·틱톡(영상·사진)·유튜브·스레드·블루스카이로 내보냅니다. 틱톡은 API 제약으로 초안함까지만 가고, 마지막 게시 버튼은 앱에서 사람이 누릅니다.
그럼 무엇이 5만을 만들었나
파이프라인이 아니었습니다. 훅이었습니다. 43편의 조회수를 훅 문장과 대조해봤습니다.
훅에 아는 이름 있음 10편 중앙값 658 최고 43,564
훅에 아는 이름 없음 13편 중앙값 221 최고 1,295
중앙값 3배, 최고값 33.6배입니다. 1위 편의 훅에는 이름이 둘 들어 있었습니다.
클로드를 켰는데 라마가 뛰고 있습니다
반대로 하위권 훅에는 아는 이름이 하나도 없습니다. "무료 그림 사이트 4곳 같은 프롬프트로 돌려봤습니다"는 42회였습니다. n=23이라 방향만 읽지만, 하위권에 이름이 전혀 없다는 건 뚜렷합니다.
그리고 0초
페이드인으로 0.5초 뒤에 뜨는 게 아니라 첫 프레임부터 전문이 보입니다. 피드에서 0.5초는 이미 지나간 시간입니다. 그리고 정보가 두 겹입니다 — 자막(훅)과 카드 제목이 같이 읽힙니다.
이 글의 릴스를 만들면서도 같은 데서 걸렸습니다. 강조 숫자를 0에서 굴려 올리는 연출이 첫 줄에도 걸려 있어서, 0초 프레임이 "이틀 만에 0만 조회"로 떠 있었습니다. 규칙을 세워놓고도 어긴 겁니다. 첫 줄은 안 굴리게 고쳤습니다.
첫 프레임은 반드시 뽑아서 눈으로 봅니다. 코드를 고쳐도 다른 연출이 또 덮습니다.
그런데 5만이 남긴 건 1이었습니다
여기까지가 좋은 소식이고, 하나 더 적어야 정직합니다. 1위 편의 인사이트를 끝까지 열어봤습니다.
4만 명이 봤고, 133명이 프로필까지 왔고, 링크를 누른 사람은 한 명이었습니다. 조회 대비 0.0024%입니다.
파이프라인이 잘 돌아서 43편을 냈고 한 편이 5만을 냈는데, 그게 어디에도 착지하지 않았습니다. 만드는 쪽은 자동화했는데 받는 쪽을 안 만들어둔 것입니다. 지금 고치는 중이고, 고친 뒤 같은 자리를 다시 재서 올리겠습니다.
가져가실 것
파이프라인 코드 자체는 저희 폴더 구조에 묶여 있어서 그대로 복사해 쓰긴 어렵습니다. 대신 구조와 규칙은 도구가 뭐든 그대로 옮겨집니다.
── 만들기 ──────────────────────────────
글 → 대본 초안(AI) → 사람이 고침 → TTS → 자막 싱크 → 렌더 → 게시
· 사람은 "대본 고치기" 한 자리에만 들어간다
· 렌더 전 자동 검사: 대본↔음성 일치 / CTA 키워드 일치 / 대비 / 정지구간
── 훅 규칙 (43편 실측) ─────────────────
1. 아는 이름을 최소 하나, 가능하면 둘 (클로드·라마·챗GPT)
2. 0초 프레임에 훅 전문이 보이게 (페이드인 금지)
3. 개수를 박는다 ("정리했습니다" ✗ / "3개입니다" ✓)
4. 정보를 두 겹으로 (자막 + 화면 안의 제목)
── 재는 법 ─────────────────────────────
인스타 릴스 → 인사이트 → 참여 탭 → 조회 후 행동
"소개 링크 누름" 을 조회수 옆에 나란히 둔다
만드는 법 자체를 더 보고 싶으시면 숏폼 자막 자동화 파이프라인에 단계별로 적어뒀고, 1위가 된 그 편은 클로드 데스크톱 + Ollama에 있습니다.
카드뉴스로도 정리했습니다
인스타그램에 올린 10장입니다. 위에 나온 숫자와 화면이 그대로 들어 있습니다.