트리거
발동 조건 — 일반적인 정지 포스터 브리핑: "<브랜드> 포스터 만들어 줘", "드롭 포스터", "랜딩 페이지 포스터", "전단지", "키 아트", "홍보 그래픽", "앨범 커버 스타일 정지 이미지", "머치 드롭 공지 이미지". 모든 주제, 모든 미적 스타일 — 이 스킬은 주제와 스타일에 구애받지 않습니다.
발동하지 않는 경우:
- 사용자가 특정 포스터 하나를 지목하여 재현하려는 경우 (
@template:<slug>, "이거 리믹스 해 줘", 슬러그를 언급) → 이것은 리믹스 경로입니다.docs/skills-vs-templates.md를 참조하세요. - 사용자가 움직이는 동영상을 원하는 경우 (워드마크가 애니메이션 되거나 히어로가 말함) → 비디오 형식/템플릿과 일치시키고, 해당 비디오 제작 오버레이 스킬(
ugc-*)을 로드한 후 편집기 플레이북을 사용하세요. 이 스킬을 사용하지 마세요. - 사용자가 이 포스터가 속한 레지스터에 대해
@guideline:<slug>를 붙여넣은 경우 (사진 실제 인간, AI 쓰레기 방지) → 먼저ralphy guideline show <slug>를 실행하고 그 규칙을 히어로 사진 슬롯에 통합하세요.
이 스킬의 목적
일반화된 레이아웃 오버레이이지, 완성된 포스터가 아닙니다. 브랜드, 히어로, 팔레트를 지정하지 않습니다. 아트 디렉터에게 이 유형의 포스터가 어떻게 구성되는지 알려주어 사용자가 홍보하는 모든 것에 대해 훌륭한 포스터가 만들어지도록 합니다. ralphy generate image를 통해 실행되며, 참조 이미지 필요 게이트나 품질 게이트를 우회하지 않습니다.
고정 불변 사항
- 모든 생성은
ralphy generate image를 통해 이루어집니다 (원시 API 사용 금지). 모델 ID를 지정하기 전에MODELS.md를 읽으십시오. 아래 스택은 기본값일 뿐이며 하드코딩된 것이 아닙니다. - 실제 명명된 개체가 히어로 또는 제품 슬롯에 있는 경우(실제 인물, 식별 가능한 브랜드 제품, 지적 재산권) 참조 이미지 필요 게이트가 여전히 작동합니다. 가상 브랜드 + 독창적인 글리프 + 일반 제품은 참조 이미지 없이 진행됩니다. 모델이 상표권이 있는 마크로 표류하지 않도록 프롬프트에서 브랜드 글리프를 명시적으로 "독창적인" 것으로 만드십시오("기존 브랜드가 아님").
- 품질 게이트는 경고가 아닌 거부를 합니다.
scoreImage가 두 번 연속 실패하면 중단하고 옵션을 보고합니다. - 실제 브랜드 사전 점검: 프롬프트 전 사이트 근거 확인. 포스터가 실제 브랜드(사용자 자신의 스타트업, 고객 사이트, 주어진 모든 URL)를 대상으로 하는 경우, 브랜드 DNA나 프롬프트를 작성하기 전에 Playwright 하위 에이전트를 파견하여 홈 페이지,
/docs,/pricing,/features,/examples를 크롤링하십시오. 홈 페이지의 WebFetch 결과만 보지 말고artifacts/refs/research.md(하위 에이전트의 요약본)를 읽으십시오. 모든{{palette}}헥스 코드는artifacts/refs/tokens.json에 추적 가능해야 하며, 본문 복사본이나 코드 크리에이티브 슬롯에 있는 모든 명명된 API 기호는research.md의 "문서화된 API 표면"에 추적 가능해야 합니다. 전체 규율 및 하위 에이전트 프롬프트 템플릿:.agents/skills/researcher/references/site-grounding.md. 이 단계를 건너뛰면sotaocr-fb-001의 비용은 $1.20이었고 5/32개의 환각된 SDK 크리에이티브가 발생했습니다.
핵심 개념 (한 단락 요약)
포스터-랜딩 페이지의 성패는 하나의 거대하고 읽기 쉬운 워드마크와 눈 또는 거의 눈을 마주치는 단일 캐릭터가 DIY 스티커 콜라주 에너지로 결합되는 데 달려 있습니다. 시선은 단어에, 그다음 얼굴에, 그리고 2-3개의 스티커 악센트를 돌아다닌 후 카피를 읽어야 합니다. 선명한 타이포그래피가 전부입니다. 번진 워드마크는 포스터를 즉시 망칩니다. 이러한 이유로 모델 선택은 일관성보다 타이포그래피를 우선시합니다.
고정 아키텍처 (재구성 금지 — 슬롯만 채우기)
위에서 아래로, 이 분야의 모든 포스터는 이 스택을 유지합니다:
| 밴드 | 고정 역할 | 채울 슬롯 |
|---|---|---|
| 1. 상단 배너 | 작은 대문자 트래킹 소개 줄 | {{tagline}}, 악센트 색상 |
| 2. 워드마크 | 거대한 덩어리진 세리프체, 3D 베벨 그림자, 글자당 크롬 하이라이트, 약간의 장난기 있는 기울기 + 불완전한 터미널 | {{exclamation}} (짧고 임팩트 있는 단어: 붐 / 악 / 아이쿠 / 와우 / 이런) |
| 3. 히어로 사진 (~60% 높이) | 영화 같은 가슴까지 오는 초상화, 위를 응시, 캐주얼-쿨, 가슴에 독창적인 블롭 글리프, 입 높이에 든 제품, 부드러운 림 라이트, 필름 그레인 | {{hero}}, {{product}}, {{blob_glyph}} |
| 4. 스티커 콜라주 | 비닐 스티커 3개 (얇은 흰색 테두리 + 부드러운 드롭 섀도우 + 테이프 모서리), 장난기 있는 각도로 흩어짐 | 제품 매크로가 있는 별 · 블롭 얼굴이 있는 별 · "NEW DROP" 유형 레이블이 있는 작은 별 |
| 5. 카피 블록 | 좁은 대문자 헤드라인 + 이탤릭체 본문 4줄 + 채워진 CTA 필 | {{headline}}, {{body_copy}}, {{cta}} |
| 6. 하단 스트립 | 매우 얇은 전체 너비 트래킹 대문자 | {{brand}} · 설립 연도 · <프로세스 태그라인> · WWW.<domain> |
마감 레이어 (항상 적용): 미묘한 필름 그레인 + 약간의 비네트 + 희미한 CRT 온기 + 빈티지 스크린 인쇄 느낌.
슬롯 (포스터마다 유일하게 변경되는 부분)
{{brand}}+{{tagline}}+{{domain}}— 가상 (또는 사용자 소유) 레이블.{{exclamation}}— 워드마크 단어. 하나의 짧고 외칠 수 있는 토큰.{{hero}}— 인물 + 의상 + 표정. 연령/성별/스타일을 자유롭게 다양화하세요.{{product}}— 입 높이에 든 소품 (막대 사탕, 아이스크림, 탄산음료 캔, 마이크 등). 사용자가 소유한 브랜드가 아니면 일반/무브랜드로 유지하세요.{{palette}}— 전체 오버플로 배경 그라데이션 (헥스 코드 2개) + 악센트 색상 (워드마크/헤드라인) + 베벨 그림자 색상 + 크림 본문 색상 + 선화 숯 색상 + 제품 색상. 항상 명시적인 헥스 코드를 지정하세요.{{blob_glyph}}— 독창적인 손으로 휘갈겨 쓴 친근한 생명체 (스마일리 블롭, 외눈박이 구름, 삐뚤어진 별). 내부에 소문자 브랜드 단어가 적혀 있습니다. "기존 브랜드가 아님"이라고 명시하세요.{{aesthetic}}— 레지스터 (Y2K 스케이트-서핑 스트리트웨어가 검증된 기본값; 베이퍼웨이브, 그런지 진, 깔끔한 DTC, 90년대 아케이드 모두 동일한 프레임워크에서 작동).
모델 스택 (실행할 때마다 MODELS.md와 대조 확인)
- 기본값 —
openai/gpt-5.4-image-2. 프리미엄 타이포그래피 / 레이블 정확도: 베벨 워드마크, 작은 하단 스트립, 4줄의 본문이 모두 선명하게 읽힙니다. 이것이 포스터에서 일관성 우선 기본값을 능가하는 전체 이유입니다. 동시 1개로 제한됨 — 배치 직렬화(--concurrency 1), 이 모델에서 포스터 생성을 병렬로 실행하지 마십시오. - 대체 모델 —
google/gemini-3-pro-image-preview. 약 절반의 지연 시간과 더 저렴하며, ≥4 동시성을 허용하지만 작은 내장 타이포그래피를 번지게 합니다 (플리퍼 사후 분석; loud-kids-poster-001에서 다시 확인됨 — 4줄 본문이 흐릿해짐). 빠른 팔레트/구성 탐색에만 사용하고, 선택된 변형은 gpt-image에서 마무리하세요.
종횡비 — 해결됨, --size 사용
gpt-5.4-image-2는 역사적으로 --size에 관계없이 1024²를 반환했습니다. loud-kids-poster-001 세션 이후로 ralphy generate image는 image_config.aspect_ratio(--size에서 파생)를 OpenRouter로 전달하며, gpt-image는 이를 존중합니다: --size 1080x1920 → 실제 9:16 세로 이미지 (720×1280 네이티브 버킷). 세로 랜딩 포스터에는 --size 1080x1920을, 정사각형 소셜 게시물에는 --size 1080x1080을 전달하세요. 출력은 픽셀 단위가 아닌 가장 가까운 네이티브 버킷에 위치합니다. 정확한 프레임이 필요한 경우 다운스트림에서 패딩/크기 조정하세요.
실패 모드
- gpt-image 병렬 생성 →
403 "키 제한 초과". 직렬화하세요 (1 동시성 제한). 각 생성은 약 2.5-4분 실행됩니다. - Gemini가 본문 및 하단 스트립을 번지게 합니다. 타이포그래피가 중요한 포스터를 gemini에서 마무리하지 마세요.
- 글리프가 실제 상표권으로 표류합니다 (스마일리 브랜드 등) — "독창적인, 기존 브랜드가 아님"이라고 말하지 않으면 발생합니다. 항상 해당 문구를 포함하세요.
- 스티커가 너무 많음 → 시선이 머물 곳이 없습니다. 3개로 제한하고 히어로 가장자리에 유지하세요.
- 워드마크 + 헤드라인이 복잡한 배경과 동일한 색상 → 가독성이 사라집니다. 워드마크 악센트는 그라데이션과 강하게 대비되어야 합니다.
작업 예제 (2026-05-27 확인됨)
.ralphy/workspaces/<ws>/projects/loud-kids-poster-001/에는 이 정확한 프레임워크(BOOM/로열 블루+막대 사탕, DANG/코랄 자두+아이스크림, YIKES/라임 포레스트+탄산음료) 위에 구축된 세 가지 팔레트/히어로/제품 변형과 9:16 A/B(gpt-image 대 gemini)가 있습니다. 세 가지 프롬프트 파일(prompt-v1-boom.txt ...)은 표준 채워진 슬롯 참조입니다. 새 포스터 프롬프트를 작성하기 전에 하나를 읽으십시오.
CLI 사용법
# 기본 포스터, 세로 9:16, 선명한 타이포그래피
ralphy generate image --project <id> --slot poster-01 \
--model openai/gpt-5.4-image-2 --size 1080x1920 --prompt "<채워진 프레임워크>"
# 빠른 팔레트/구성 탐색 (gpt-image에서 선택된 변형 마무리)
ralphy generate image --project <id> --slot poster-explore --variants 3 \
--model google/gemini-3-pro-image-preview --size 1080x1920 --prompt "<...>"
# 동일한 포스터의 정사각형 소셜 게시물 컷
ralphy generate image --project <id> --slot poster-01-sq \
--model openai/gpt-5.4-image-2 --size 1080x1080 --prompt "<채워진 프레임워크>"
긴 프롬프트: 채워진 프레임워크를 프로젝트 디렉토리의 .txt 파일에 작성하고 --prompt "$(cat file.txt)"를 전달하세요. 본문 복사본의 아포스트로피는 인라인 작은따옴표 셸 문자열을 깨뜨립니다.