광고
사용자가 이미 보유한 제품에 대한 단계별 광고 제작: 사실, 스크립트, 샷 목록, 승인된 키프레임, 클립, 음성, 조립, QA. 두 가지 핵심 규칙. 제품 충실도: 물리적 제품을 보여주는 모든 프레임은 사용자의 사진에서 편집 엔드포인트를 통해 시작되며, 텍스트로부터 재상상되지 않습니다. 소프트웨어는 사용자의 실제 캡처 및 화면 녹화를 통해서만 표시되며, 합성되어 생성 모델을 거치지 않습니다(references/software-route.md). 클레임 규율: 스크립트나 화면의 모든 주장, 인용, 숫자 및 가격은 사용자가 제공한 내용에 기반하며, 발명되지 않습니다.
0단계 — 사전 점검
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
blockers가 비어 있지 않거나, CLI가 없거나 0.7.0보다 오래된 경우 →/genmedia-skills:setup. 키가 없는 경우 → 사용자가genmedia setup을 실행하거나FAL_KEY를 직접 내보냅니다. 기다리세요. 키를 읽거나, 출력하거나, 요청하거나, 입력하지 마세요.config.announce_above_usd및config.confirm_above_usd(기본값 0.50 및 2)를 비용 게이트에 유지하고,ffmpeg.found를 조립 경로에 유지합니다.- 먼저 재개:
.genmedia/projects/*/plan.md를 글로브합니다. 이 광고에 대한 계획이 존재하는 경우 → 읽고,python3 "${CLAUDE_SKILL_DIR}/scripts/pipeline.py" urls --label <slug>를 실행한 후, 완료되지 않은 첫 번째 단계부터 계속합니다. 원장 항목이 있는 프로젝트를 다시 시작하지 마세요. 동일한 제품에 대한product-photoshoot계획이 있는 경우 → 해당 제품의 PRODUCT LOCK 및 승인된 스틸을 키프레임 참조로 재사용합니다.
UX 규칙
- 사용자의 언어로 응답합니다(터키어 입력 → 터키어 출력). 모델 프롬프트는 영어이며, 대사, 캡션 및 이미지 내 카피는 대상 언어로 유지되며 따옴표 안에 정확히 승인된 대로 표시됩니다.
- 채팅에 JSON, 요청 ID 또는 도구 설명을 표시하지 마세요. 조용히 기다리며, 배치당 최대 한 줄의 상태만 표시합니다.
- 질문 예산: 계획 전 3개, 한 번에 하나씩, 레이블이 지정된 옵션으로 제공(가능한 경우 AskUserQuestion 사용), 각각 사용자가 건너뛸 때 사용할 기본값이 있음. 순서:
- 제품: 사진(또는 소프트웨어의 경우 실제 캡처 및 화면 녹화)과 그것이 무엇이며 무엇이 사실인지. 아무것도 첨부되지 않은 경우 → 요청하세요. 이것이 기본값이 없는 유일한 질문입니다. 사진은 있지만 사실이 없는 경우 → 팩에 인쇄되어 있고 사진에 보이는 것만 사용하고, 나머지는 생략됨(Left out) 아래에 나열합니다.
- 발표자 및 음성. 기본값: 대상에 맞게 생성된 합성 발표자, 대상 언어로 된 음성(달리 명시되지 않는 한 사용자가 작성하는 언어). 옵션: 생성됨 ·
@handle· 내 사진(동의 필요) · 발표자 없음. - 모드 및 플랫폼. 기본값: 발표자 대화 UGC, 15초, 9:16(숏폼 피드용). "정적" → 헤드라인 형식, 4:5 및 1:1. 요청이 이미 답변한 모든 질문은 건너뜁니다. 가장 모호한 요청("이것에 대한 광고 만들어 줘") → 모든 기본값을 계획 카드의 가정(Assumptions) 아래에 나열합니다. 동의, 계획 승인 및 체크포인트는 예산 밖입니다.
- 하드 스톱: 계획 카드(비디오의 경우 항상, 정적의 경우 게이트가 확인하라고 할 때), 클립 전 키프레임, 음악, 캡션 및 조립 전 클립 및 음성. 침묵이나 성공적인 작업은 승인이 아닙니다. 크리에이티브 선택(후크, 발표자, 테이크)은 사용자에게 속합니다.
- 모든 변형을 포함한 전체 계획에 대한 비용 게이트: announce 미만 → 실행; announce와 confirm 사이 → 한 줄 견적을 제공하고 실행; confirm 이상 → 예/아니오를 기다립니다. 사용자가 지정한 모델을 절대 교체하지 않으며, 더 저렴한 경로를 계획 카드 한 줄로 제안합니다.
- 제한된 수리: 단계당 3회 시도, 매번 무언가 변경되며, 정책 거절을 수정 없이 다시 보내지 않습니다. 요청 ID가 있는 작업은 재개되며, 다시 제출되지 않습니다. 자체적으로 confirm 임계값 이상의 비용이 드는 수리 또는 재시도(Seedance 말하는 테이크 하나)는 누계와 함께 새로운 예/아니오가 필요합니다. 실패한 작업은 이미 청구되었을 수 있습니다.
- 안전, 협상 불가: 허위 사용후기, 고객, 리뷰, 평점, 사용자 수, 수상, 의료, 재정 또는 소득 주장, 가짜 긴박감 또는 발명된 가격을 생성하지 마세요. 실제 사람의 얼굴이나 목소리는 사용자의 동의 확인이 필요합니다. 생성된 발표자는 합성 인물입니다: 전달 시 이를 명시하고 사용자에게 플랫폼 및 일부 법률에서 공개를 요구할 수 있음을 알리며, 고객으로 설명하지 마세요. 경쟁사 이름, 로고 또는 팩을 포함하지 마세요. 업로드 및 결과는 공개 URL에 있습니다: 출시되지 않은 제품이나 사람 사진을 업로드하기 전에 한 번 말합니다. 규칙 및 표현:
references/scripts-and-claims.md.
발견 가드레일
references/routing-video.md, references/routing-audio.md, references/routing-image.md 및 references/routing-utility.md는 날짜가 있는 캐시입니다(2026-09-19 확인). 계획의 모든 개별 엔드포인트는 계획 카드가 표시되기 전에 확인됩니다:
genmedia models --endpoint_id <id1>,<id2>,<id3> --status all --limit 50 --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>
- 모든 ID가 반환되고
active여야 합니다(--limit없이 호출은 최대 20행을 반환하므로, 누락된 행은 비활성 ID를 증명하지 않으며, 해당 ID에 대해 다시 요청하세요). 그렇지 않으면 라우팅 참조에서 해당 작업의 다음 티어를 사용하고, 그렇지 않으면genmedia models "<name>" --no-classify --limit 10 --json을 사용하여 가장 최신의 활성 일치 항목을 찾고 어떤 모델이 실행되었는지 말합니다. - 필드 이름, 열거형 및 제한은 스키마에서 가져오며, 메모리에서 가져오지 않습니다. 패밀리 간에 전달되지 않습니다(
promptvstext,image_urlvsstart_image_url,"5"vs5). - ID나 필드를 절대 발명하지 마세요. 엔드포인트 ID 없이
genmedia run을 실행하지 마세요. 새 릴리스는 공급업체 네임스페이스(bytedance/,creatify/,openai/,minimax/,veed/) 아래에 있으며,fal-ai/만 있는 것은 아닙니다.
라우팅
제품 유형. 앱, SaaS, 개발자 도구, 확장 또는 인터페이스가 제품인 모든 것 → 소프트웨어 경로: 계획 수립 전에 references/software-route.md를 읽습니다. 이는 아래의 키프레임 및 정적 규칙을 대체합니다(캡처 편집 없음, 모델에 의해 구워진 카피 없음). 스크립트, 클레임, 음성, 음악, 캡션, 조립, 비용 게이트 및 체크포인트는 여기에 작성된 대로 유지됩니다.
산출물. 정적 단어("görsel", "banner", "static", "carousel", 주어진 헤드라인) → 정적 형식, references/static-formats.md. 동작 또는 음성 단어, 또는 언급 없음 → 비디오, references/ad-modes.md의 모드: presenter(기본값), how-to, unboxing, showcase, problem-solution, testimonial(사용자가 제공하는 실제 인용문이 있는 경우에만), tv-spot.
비디오 제작 경로(첫 번째 일치가 우선):
| 상황 | 경로 |
|---|---|
| 화면 내 음성 없음: 쇼케이스, TV 스팟 또는 내레이션이 있는 하우투 | B: 발표자 없이 B-roll + 내레이션 + 음악 |
| 사용 언어가 영어가 아님 | B. 터키어는 Wan 3.0에서만 경로 A 가능, Seedance는 절대 안 됨: 네이티브 청취(references/platform.md 섹션 10)에서 Wan이 정확했지만, 모든 Seedance 버전이 잘못 발음했습니다(ş를 s로, "merhala"). Veo 3.1 Lite는 완벽했지만 fal에 더 이상 없음. 사용자가 청취 확인을 통과한 프로브 클립 후에만 경로 A 사용 |
| 표현이 정확해야 함(브랜드명, 가격, 법적 문구), 고정된 브랜드 음성, 또는 변형 간 동일한 음성 | B: TTS가 텍스트를 정확히 말함; 네이티브 오디오 모델은 의역하고 잘못 발음함 |
| 15초 초과, 또는 발표자와 B-roll 컷어웨이 | B |
| 영어, 6~15초의 연속 테이크, 발표자가 카메라를 보며 말함 | A |
- 경로 A: 한 번 생성이 대사를 말합니다. 승인된 키프레임(실제 제품과 함께 있는 발표자) → 네이티브 오디오 이미지-투-비디오.
- 경로 B: 블록별 TTS(화면 내 블록, 내레이션 블록) → 화면 내 블록에 대해서만 토킹 헤드 → 승인된 키프레임에서 B-roll → 조립. 음성이 먼저: 측정된 길이가 모든 클립 지속 시간을 설정합니다.
역할 기본값(2026-09-19 활성; 가격 단어는 날짜가 있는 힌트이며, gm.py price가 결정)
| 역할 | 엔드포인트 | 이유 | 가격 힌트 |
|---|---|---|---|
| 키프레임, 발표자 또는 제품이 있는 장면 | bytedance/seedream/v5/pro/edit | 최대 10개 참조로 제품 및 발표자 유지 | ~USD 0.07/이미지 + 참조당 USD 0.0045 |
| 엔드 카드, 정적 광고, 정확한 카피가 있는 모든 프레임 | openai/gpt-image-2.5/flare/edit | 가장 강력한 텍스트 충실도, 최대 16개 참조 | ~USD 0.06/이미지, quality: "high" |
| 생성된 발표자 판(사람만, 제품 절대 안 됨) | bytedance/seedream/v5/pro/text-to-image | 사람에 대한 기본 품질 | ~USD 0.07/이미지 |
| A: 말하는 클립, 품질 | bytedance/seedance-2.5/us/image-to-video | 립싱크 네이티브 음성 분야 1위; 4~30초 | ~USD 0.57/초(720p), ~USD 0.26/초(480p) |
| A: 말하는 클립, 터키어 | alibaba/wan-3.0/image-to-video (start_image_url) | 터키어가 네이티브 청취를 통과한 유일한 등재된 네이티브 오디오 모델(2026-09-21); 정수 duration, resolution 설정 | ~USD 0.05/초(480p), ~USD 0.10/초(720p) |
| A: 말하는 클립, 드래프트 또는 예산, 영어 | creatify/boreal | 광고용으로 제작됨; [VISUAL] [SPEECH] [SOUNDS] 프롬프트; 모델 페이지에서 영어를 검증된 언어로 명명함; 선택적 가시적 AI 라벨 | ~USD 0.01/초(720p) |
| B: 음성, 영어 | fal-ai/elevenlabs/tts/eleven-v3 | 기본 TTS | ~USD 0.10 / 1000자 |
| B: 음성, 터키어 및 기타 등재 언어 | fal-ai/gemini-3.1-flash-tts | language_code 열거에 "Turkish (Turkey)" 포함; style_instructions | ~USD 0.05 / 1000자 |
| B: 토킹 헤드 | fal-ai/bytedance/omnihuman/v1.5 | 이미지 + 오디오; 720p에서 60초 미만 | ~USD 0.16/오디오 초 |
| B: 토킹 헤드, 드래프트 | veed/fabric-1.0(480p) | 절반 가격; resolution 필수 | ~USD 0.08/초 |
| B-roll, 품질 | bytedance/seedance-2.5/us/image-to-video | 공개를 위한 선택적 end_image_url | ~USD 0.57/초(720p) |
| B-roll, 드래프트 또는 예산 | minimax/h3-max-turbo/image-to-video | 클립당 몇 센트 | ~USD 0.04/초(768P, 2026-09-30 출시 할인 종료) |
| 음악 배경 | elevenlabs/music/v2.5 | music_length_ms를 통한 정확한 길이 | ~USD 0.60 / 시작된 분 |
| 캡션 | fal-ai/workflow-utilities/auto-subtitle; 정확한 텍스트(모든 언어): veed/subtitles | 로컬 drawtext 없이 자막 내장 | ~USD 0.03/분; veed ~USD 0.10/분, 1분 최소 |
| concat, mux, scale, 엔드 카드 클립 | 로컬 ffmpeg, 또는 references/routing-utility.md | ffmpeg.found일 때 무료 및 정확 | 센트 |
동점자 해결 규칙:
- 사용자가 모델을 지정한 경우 → 실시간 확인 후 사용; 기본값을 한 줄로 언급하고, 조용히 교체하지 마세요.
- 품질 경로가 confirm 임계값을 초과하는 경우(15초 Seedance 2.5 테이크 720p는 약 USD 8.50) → 계획 카드에 품질 가격과 드래프트 티어 가격을 나란히 표시합니다. 사용자가 선택합니다. 조용히 저렴한 것을 선택하지 마세요.
@handle→/genmedia-skills:character가 이를 참조 URL 및 앵커 텍스트로 해석합니다. 키프레임 작업에서 발표자 참조로 사용합니다. 프롬프트에@handle을 남기지 마세요.- 제품 사진 없음 → 요청하세요(소프트웨어: 캡처). 존재하지 않음 → 개념 전용:
/genmedia-skills:image로 넘기고 실제 제품이 아니라고 말합니다. 캡처 없는 소프트웨어는 스크립트와 캡처 목록을 받고, 발명된 인터페이스는 받지 않습니다. - 스토어 리스팅 스크린샷, 링크 카드 또는 Product Hunt 이미지 및 Apple Ads "creative"(Apple은 제품 페이지에서 광고를 빌드함) →
/genmedia-skills:launch-graphics. 텍스트 없는 제품 스틸만 필요한 경우 →/genmedia-skills:product-photoshoot. 스크립트 없는 단일 클립 →/genmedia-skills:video. 광고 의도 없는 오가닉 숏 →/genmedia-skills:short-video. 내레이션이 있는 설명 영상 →/genmedia-skills:video-explainer. 마켓플레이스 리스팅 카드 →/genmedia-skills:marketplace-cards. 썸네일 또는 커버 →/genmedia-skills:youtube-thumbnail.
명명된 함정:
- 재상상된 제품. 텍스트-투-비디오 또는 텍스트-투-이미지는 유사품을 그립니다. 모든 제품 프레임은 사용자 사진의 편집이며, 모든 제품 클립은 승인된 키프레임에서 시작됩니다.
- 생성된 인터페이스. 캡처를 건드리는 편집, 텍스트-투-이미지 또는 비디오 작업은 철자가 틀리고 발명된 UI를 반환하며, 플랫폼은 앱이 부족한 기능을 보여주는 광고를 거부합니다. UI 픽셀은
launch-graphics페이지와 녹화에서 비롯되며, 모션은 녹화 또는 로컬 푸시에서 비롯됩니다. - 비디오 모델의 텍스트. 비디오 모델의 헤드라인, 가격, 로고, 캡션 및 법적 문구는 깨져서 나옵니다. 키프레임에 네거티브 스페이스를 남기세요. 카피는 엔드 카드(타이포그래피 모델), 내장 캡션 또는 사용자 편집기에서 도착합니다.
- Kling 음성. Kling v3는 중국어 또는 영어만 말하며 다른 모든 언어를 영어로 자동 번역합니다. 터키어 대화를 거기에 절대 라우팅하지 마세요.
- Flashtalk 캔버스.
fal-ai/flashtalk의 스키마는 고정된 768x448 가로 출력을 문서화합니다: 9:16 광고에는 쓸모가 없습니다. 드래프트 헤드는veed/fabric-1.0으로 보냅니다. - Mux는 더 짧은 입력에 맞춥니다.
fal-ai/ffmpeg-api/merge-audio-video는 그림과 소리 중 더 짧은 쪽의 길이로 맞춰집니다(긴 음성은 끝을 잃고, 짧은 음성은 그림을 자릅니다) 그리고 클립 자체 오디오를 대체합니다. 항상 동일한 길이로 맞추세요. - **Seedance의
duration: "auto"**는 비용을 알 수 없게 만듭니다. 항상 설정하세요. Boreal 및 MiniMax는 숫자를, Seedance는 문자열을 받습니다. - OmniHuman 기본값.
resolution은 기본적으로1080p입니다(오디오 30초 미만). 사용자가 1080p를 요청하지 않는 한"720p"를 보내세요. - 합성 고객. 생성된 얼굴이 "8킬로 빠졌어요"라고 말하는 것은 프롬프트가 무엇으로 부르든 허위 사용후기입니다.
references/scripts-and-claims.md를 참조하세요.
워크플로우
- 접수 질문 예산 내에서. 슬러그 선택(
serum-ugc): 배치label, 원장 필터,genmedia-output/<slug>/및.genmedia/projects/<slug>/입니다. 자연어 레이블도 가능하며, 도우미는 터키어 문자를 음역합니다. 플랫폼 → 비율 및 길이:references/ad-modes.md(플랫폼 테이블, 해당 플랫폼의 현재 광고 사양 확인). - Read 도구로 모든 제품 사진을 봅니다. HEIC, AVIF, TIFF 또는 CMYK → 먼저 PNG 또는 sRGB JPEG로 변환합니다(
references/troubleshooting-ads.md). PRODUCT LOCK을.genmedia/projects/<slug>/plan.md에 작성합니다: 형태, 비율, 재질, 색상, 라벨 텍스트(그대로), 절대 변경되어서는 안 되는 것, 보이지 않는 측면. - 사실 시트. 제품에 대해 사실인 것과 각 사실의 출처를 나열합니다: 사용자 메시지, 브랜드 노트, 팩 자체 또는 제품 페이지(사용자가 제공한 경우). 허위를 발명하지 마세요. 증거와 함께 제공되지 않은 모든 클레임(예: "1등" 또는 "베스트셀러")은 생략됨에 나열됩니다.
- 계획 카드. 사용자 동의를 위한 마크다운 표: 형식, 길이, 경로, 모델 예산, 예상 비용, 변형. 하드 스톱: 동의 전에는 어떤 생성 모델도 실행되지 않습니다. 사용자가 변형을 원하는 경우 -> 각각에 대한 별도 계획.
- 키프레임 제작. 각 장면(키프레임)에 대한 승인된 샷. 물리적 제품: 참조로 제품 사진을 사용한
bytedance/seedream/v5/pro/edit. 텍스트가 있는 엔드 카드:openai/gpt-image-2.5/flare/edit. 정적 광고: 엔드 카드와 동일. 사용자 승인을 위해 각 키프레임을 표시합니다. - 클립 제작. 경로에 따라: A(네이티브 오디오 이미지-투-비디오) 또는 B(TTS + 토킹 헤드 + B-roll). 각 클립의 지속 시간은 음성에 의해 결정됩니다(경로 B에서는 음성 먼저). 정적 광고는 클립이 없으며, 바로 조립으로 이동합니다.
- 조립. 클립 연결, 오디오 믹싱, 엔드 카드 오버레이, 캡션 추가, 크기 조정 및 내보내기. 품질 점검: 체크포인트.
- 전달. 광고 출력 및 매니페스트를
genmedia-output/<slug>/에 기록하고, 매니페스트 URL을 사용자와 공유합니다. 사용자가 동영상 파일 자체를 요청하는 경우에만 다운로드합니다.
매니페스트 출력
모든 광고 작업은 .genmedia/projects/<slug>/manifest.json을 생성합니다:
label: 슬러그product: 제품 이름 또는 식별자type: "video" 또는 "static"format: "portrait", "square", "landscape"duration: 초 단위(비디오의 경우)files: 생성된 파일 목록(URL)cost: 예상 총 비용(USD)claims: 사용된 클레임 목록(출처 포함)assumptions: 기본값으로 사용된 가정 목록
문제 해결
일반적인 문제 및 해결 방법은 references/troubleshooting-ads.md를 참조하세요.
이미지 형식 문제
- HEIC → PNG 변환:
magick input.heic output.png - CMYK → sRGB:
magick input.tiff -colorspace sRGB output.jpg
모델 오류
- 모델이 응답하지 않거나 오류 반환 → 다른 엔드포인트 재시도(라우팅 테이블의 다음 티어)
- 잘못된 필드 이름 → 스키마 확인(
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <endpoint_id>)
비용 오해
- 예상 비용은 대략적이며, 실제 비용은 다를 수 있습니다.
- 게이트가 실시간 추정치를 사용하기 전에 항상
gm.py price를 실행하세요.
참조 파일
references/ad-modes.md: 비디오 광고 모드 및 형식references/static-formats.md: 정적 광고 형식references/scripts-and-claims.md: 스크립트 및 클레임 규칙references/software-route.md: 소프트웨어 광고 경로references/routing-video.md,references/routing-audio.md,references/routing-image.md,references/routing-utility.md: 엔드포인트 라우팅 정보references/troubleshooting-ads.md: 일반적인 문제 해결references/platform.md: 플랫폼별 참고 사항