| name | moneytalk |
| description | Use when the user asks for a "부동산돌격대 스타일" / "부자챗 스타일" (legacy) / "머니톡 스타일" (legacy) 영상, "경제 숏츠", "AI 숏츠", "/moneytalk", or "유튜브 숏츠 만들어줘". Generates a ~40s YouTube Shorts video about an economy/AI news story in the 부동산돌격대 visual style. ALWAYS ask the user to confirm the style preview BEFORE running the pipeline. |
부동산돌격대 (내부 코드명 moneytalk) — 경제/AI 숏츠 자동 생성
트리거
다음 키워드 중 하나가 사용자 메시지에 포함되면 이 스킬을 발동:
- "부동산돌격대 스타일", "부동산돌격대 만들어줘"
- "부자챗 스타일", "부자챗 만들어줘" (구 브랜드명, 레거시 호환)
- "머니톡 스타일" (구 브랜드명, 레거시 호환)
- "경제 숏츠", "AI 숏츠"
- "/moneytalk", "/부동산돌격대", "/부자챗" (레거시)
- "(이 프로젝트에서) 유튜브 숏츠 만들어줘" (애매하면 재확인)
의무 — 첫 응답 시 스타일 확인
코드를 만지기 전에 반드시 다음을 수행:
- 사용자에게 스타일 미리보기 안내:
부동산돌격대 스타일로 만들어드릴까요?
- 1080×1920 9:16 유튜브 숏츠 (약 40초)
- 검정 헤더 + 노랑 워드마크 (🏠 부동산돌격대)
- 가짜 커뮤니티 게시글 메타 (조회수/댓글) — 사회적 증거 훅
- 본문 텍스트 + 정사각 이미지 (청크별 교체)
- 하단 16% 검정 띠 (Shorts UI 세이프존)
- 톤: 존댓말 진지형 (슈카월드/안될공학 느낌)
- 음성: ElevenLabs 한국어
- 👀 미리보기: docs/plans/moneytalk-preview.html
→ 네 / 다른 스타일 / 톤 바꾸기
- 가능하면
open docs/plans/moneytalk-preview.html 로 미리보기를 열어서 시각적으로 보여줌.
- 사용자가 "네" 등 긍정 답변을 줘야 다음 단계로.
입력 받기
스타일 확인 후, 주제를 받음:
- 사용자가 주제를 명시했으면 그대로 사용
- 안 했으면 물어봄: "어떤 뉴스/주제로 만들까요? (예: 오늘 엔비디아 뉴스, 샘 알트먼 인터뷰, AI 일자리 통계)"
- "오늘의 뉴스" 라고 하면 → WebSearch로 오늘 가장 임팩트 있는 경제/AI 뉴스 1건을 직접 찾기
파이프라인 (스킬이 직접 실행)
1. 뉴스 선별 + 팩트체크 (LLM 직접 수행)
- WebSearch / WebFetch를 사용해 주제 관련 최신 정보 수집
- 24시간 이내, 출처 1개 이상 교차 검증
- 헤드라인, 출처, URL 확보
⚠️ 승인 게이트: 선별한 뉴스 + 간단한 대본 방향(3~5줄)을 사용자에게 먼저 제시하고 "이 주제/방향으로 진행할까요?" 확인. 승인 없이 2단계로 넘어가지 말 것.
2. 대본 작성 (LLM 직접 작성, 별도 호출 없음)
다음 JSON 스키마(src/moneytalk/types.ts의 MoneytalkScriptSchema)에 맞춰 대본 작성:
{
"slug": "kebab-case-슬러그",
"title": "한글 헤드라인 (1줄, 25자 이내)",
"source": "출처명 (예: 로이터, 블룸버그)",
"source_url": "https://...",
"fake_meta": {
"views": 100000~1500000 사이 정수,
"comments": 3000~20000 사이 정수
},
"chunks": [
{
"id": 1,
"text": "본문 텍스트 (한 청크 2줄, 평이한 단어, 존댓말)",
"emphasis": ["강조할 단어"],
"image_query": {
"type": "logo|person|chart|background|reaction|meme",
"keywords": ["영어 검색어"],
"source_hint": "wikimedia|pexels|local_meme"
}
}
],
"estimated_duration_sec": 48
}
대본 작성 원칙:
- 톤: 존댓말, 차분, 진지 (슈카월드 느낌). 반말/허세/비속어 금지.
- 구조: 청크 4~7개. 1번=훅(숫자+사건), 중간=맥락/비교, 마지막=여운/의미.
- 화면 자막(display_text): 최대 2줄 원칙 (의미 단위 줄바꿈, \n 사용). 3줄은 예외적으로만.
- TTS 문장(text): 자연스럽게 긴 문장 OK.
- 길이: 전체 40~55초 분량.
- 강조 단어: 청크당 1~2개, 숫자나 핵심 단어.
- image_query 규칙:
- 인물/기업 로고 →
wikimedia (영어 검색어, 예: "Jensen Huang", "NVIDIA logo")
- 차트/배경/상황 →
pexels (영어 검색어, 예: "stock chart green")
- 리액션 짤방 →
local_meme (assets/memes/에 있는 컬렉션에서 픽)
- 인포그래픽: 숫자 비교/차트/표가 더 효과적인 청크는 Pexels 이미지 대신 HTML로 인포그래픽을 만들어 스크린샷으로 저장해도 좋음 (예: 금리 비교표, 수익률 차트, 전후 비교 카드).
public/moneytalk/<slug>/media/chunk-N.png로 저장.
대본을 data/moneytalk/scripts/<slug>.json에 Write.
⚠️ 두 번째 승인 게이트: 대본 전체(청크 텍스트, 강조어, 이미지 방향)를 사용자에게 표 형태로 제시하고 "이대로 이미지/TTS/렌더 진행할까요?" 확인. 승인 전에 미디어 다운로드/TTS/렌더 절대 금지.
3. 미디어 다운로드 (Bash + curl)
각 청크의 image_query에 따라:
Wikimedia Commons:
curl -s "https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrsearch=<URL_ENCODED_KEYWORDS>&gsrnamespace=6&gsrlimit=3&prop=imageinfo&iiprop=url&format=json&origin=*"
→ JSON에서 imageinfo[0].url 추출 → curl -L -o public/moneytalk/<slug>/media/chunk-N.jpg "<URL>"
Pexels:
curl -s -H "Authorization: $PEXELS_API_KEY" \
"https://api.pexels.com/v1/search?query=<URL_ENCODED>&per_page=3&orientation=square"
→ photos[0].src.large 추출 → 다운로드
로컬 밈:
ls assets/memes/
각 다운로드 결과를 public/moneytalk/<slug>/media/chunk-N.<ext>에 저장.
4. ElevenLabs TTS (Bash + curl)
각 청크 텍스트별로 mp3 생성:
mkdir -p public/moneytalk/<slug>/audio
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/$ELEVENLABS_VOICE_ID" \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: audio/mpeg" \
-d '{
"text": "<청크 텍스트>",
"model_id": "eleven_multilingual_v2",
"voice_settings": {"stability": 0.5, "similarity_boost": 0.75, "style": 0.2}
}' \
-o public/moneytalk/<slug>/audio/chunk-N.mp3
5. 오디오 길이 측정
tsx scripts/moneytalk/audio-duration.ts public/moneytalk/<slug>/audio/chunk-*.mp3
→ 출력 JSON을 받아 각 청크의 초를 frames로 변환 (Math.ceil(seconds * 30)).
6. 렌더 props 생성
MoneytalkRenderProps JSON을 작성해 data/moneytalk/scripts/<slug>.render-props.json에 저장:
{
"title": "...",
"source": "...",
"fake_meta": {...},
"chunks": [
{
...스크립트 청크 그대로...,
"image_path": "moneytalk/<slug>/media/chunk-1.jpg",
"audio_path": "moneytalk/<slug>/audio/chunk-1.mp3",
"audio_duration_frames": 120,
"start_frame": 0
},
...
],
"total_duration_frames": <총합 + 15>
}
중요:
image_path/audio_path는 public/ 기준 상대 경로 (Remotion staticFile이 처리)
start_frame은 누적: 0, c1, c1+c2, c1+c2+c3, ...
total_duration_frames = 모든 청크 합 + 15 (마무리 여유)
7. 렌더
tsx scripts/moneytalk/render-from-props.ts data/moneytalk/scripts/<slug>.render-props.json
→ output/moneytalk-<slug>.mp4 생성.
8. 유튜브 메타데이터 생성
렌더 후 자동으로 data/moneytalk/scripts/<slug>.youtube.md 작성. 포함:
- 제목 (Title): 메인 추천 1개 + 대체안 3개. 각 60자 이내,
#shorts 포함
- 설명 (Description): 2줄 이내 — 1줄 핵심 요약 + 1줄 CTA ("전체 분석은 채널에서 👆"). 불필요하게 길게 쓰지 않는다.
- 태그 (Tags): 한글 키워드 12
15개 + 영문 보조 23개 (쉼표 구분 한 줄)
- 고정 댓글: 핵심 bullet 3~5개 + 토론 유도 질문 + 채널 링크
- 썸네일 텍스트: 메인 1개 + 서브 1개
원칙:
- 제목 첫머리에 핵심 키워드 (예: "등기부등본만 믿으면…")
- FOMO/호기심 트리거 단어 사용 ("배신", "함정", "비밀", "위험")
- 출처는 반드시 표기 (신뢰감 + 알고리즘 가산점)
- 면책 문구 1줄 ("일반 정보 제공 목적, 개별 상황은 전문가 상담")
9. 메타데이터 HTML 패키지 생성 (필수)
렌더 + youtube.md 완료 후 반드시 metadata.html을 생성한다.
cp docs/plans/metadata-template.html deliverables_by_date_hermes/YYYY-MM-DD/<slug>/metadata.html
{{PLACEHOLDER}}를 실제 값으로 교체 (Claude가 직접 Write 도구로 처리):
{{DATE}}, {{SERIES_NAME}}
- 숏츠 단독 패키지라면 롱폼 섹션은 해당 영상 내용으로 채우고, 클립1·클립2 섹션은 삭제하거나 빈칸 유지
- 각 필드: 제목(메인+대체3개), 설명, 태그(쉼표구분 한줄), 고정댓글, 썸네일텍스트
완성 후:
open deliverables_by_date_hermes/YYYY-MM-DD/<slug>/metadata.html
10. Deliverables 패키지 정리 (필수)
모든 산출물을 날짜별 폴더에 복사:
DEST=deliverables_by_date_hermes/YYYY-MM-DD/<slug>
mkdir -p $DEST
cp output/moneytalk-<slug>.mp4 $DEST/<slug>-shorts-final.mp4
cp data/moneytalk/scripts/<slug>.render-props.json $DEST/
cp data/moneytalk/scripts/<slug>.youtube.md $DEST/
최종 폴더 구성:
deliverables_by_date_hermes/YYYY-MM-DD/<slug>/
<slug>-shorts-final.mp4 ← 최종 영상
<slug>.render-props.json ← 재현용 props
<slug>.youtube.md ← 원본 메타데이터
metadata.html ← 원클릭복사 HTML 패키지
11. 결과 안내
사용자에게:
- 영상 경로 및 길이
- deliverables 폴더 경로
- metadata.html 오픈 안내
open deliverables_by_date_hermes/YYYY-MM-DD/<slug>/ 로 폴더 열기
환경 변수 체크
시작 전 필수 키 확인:
ELEVENLABS_API_KEY (TTS, 필수)
ELEVENLABS_VOICE_ID (없으면 기본값 4JJwo477JUAx3HV0T7n7)
PEXELS_API_KEY (이미지, 필수)
없으면 사용자에게 .env에 키 추가 요청.
에러 시 대응
- 이미지 검색 결과 없음 → 다른 키워드로 재시도, 또는
local_meme fallback
- TTS 실패 → 텍스트 짧게 줄여 재시도
- 렌더 실패 → render-props.json을 사용자에게 보여주고 직접 점검
절대 금지
- 사용자 확인 없이 파이프라인 실행 금지
- 미리보기 안내 없이 시작 금지
- 한 호출에 여러 영상 생성 금지 (1편씩)
- YouTube 자동 업로드 금지 (수동 업로드 정책)
참고 파일
- 디자인 문서:
docs/plans/2026-04-08-moneytalk-design.md
- 구현 계획 (수동):
docs/plans/2026-04-08-moneytalk-plan.md
- 미리보기:
docs/plans/moneytalk-preview.html
- Remotion 컴포지션:
src/moneytalk/MoneytalkComposition.tsx
- 타입 스키마:
src/moneytalk/types.ts