Summary
Content Studio 파이프라인을 개선하여, post ID 수동 입력 대신 검색/인기순 선택 → 키워드 추출 → 마케팅 프롬프트 생성 → 3종 채널별 썸네일 자동 생성까지 하나의 플로우로 완성한다.
Motivation
- 현재 post ID를 직접 입력하는 UX가 불편하고 오류 유발 (500 에러 포함)
- Firecrawl 기반 Research는 post 내부 데이터로 충분히 대체 가능 → 불필요한 외부 의존성 제거
- 마케팅 콘텐츠(YouTube/Instagram/X) 제작 파이프라인 자동화 필요
Spec (Grill 결과)
1. Post 선택 UX 개선
- UI: Modal/Drawer 방식 (기존 레이아웃 변경 최소화)
- 검색: Meilisearch (이미 한글 검색 지원 구축됨)
- 초기 리스트: Supabase에서 view_count/like_count 기준 인기순
2. Packet ID 500 에러 수정
- 원인:
packet_${postId} prefix가 UUID 컬럼에 들어감 → invalid input syntax for type uuid
- 수정:
crypto.randomUUID() 순수 UUID 생성 (post_id FK가 이미 unique constraint)
3. 키워드 + 프롬프트 + Variant 텍스트 통합 생성
- 방식: 단일 OpenAI structured output 호출
- 입력: 규칙 기반 키워드 (brand, artist, solution category) + post 전체 데이터
- 출력:
{ keywords, imagePrompts: { youtube, instagram, x }, variants: { youtube: { title, body, hashtags }, ... } }
- Variant 텍스트는 동시 생성 후 어드민이 수정 가능 (draft 상태)
4. 3종 채널별 썸네일 생성
- 모델:
gpt-image-2 edit 모드 (post 원본 이미지 변환)
- 실행: Web 서버 직접 호출,
Promise.all 병렬
- 사이즈: YouTube/X: 1536×1024, IG 피드: 1024×1024, IG 스토리: 1024×1536
- 저장: Supabase Storage (
content-studio/{packetId}/)
5. Research/Firecrawl 전체 제거
research/ 디렉토리 (firecrawl-client, domain-policy, normalization, recommendations, query-suggestions)
ResearchPanel 컴포넌트
POST /api/v1/content/research API
- 스키마:
externalEvidence, researchProvenance, claims 필드
- Governance: research 관련 규칙만 제거, 나머지 유지 (celebrity risk, disclosure 등)
파이프라인 플로우
[Modal/Drawer] Meilisearch 검색 + 인기순 리스트 → Post 선택
↓
[Packet 생성] crypto.randomUUID() + post 데이터 수집
↓
[단일 OpenAI 호출] 규칙 키워드 + LLM structured output
→ { keywords, imagePrompts (YT/IG/X), variants (title/body/hashtags) }
↓
[썸네일 생성] Promise.all 병렬, gpt-image-2 edit 모드
→ post 원본 이미지 + 채널별 프롬프트
↓
[저장] Supabase Storage (content-studio/{packetId}/)
↓
[Governance] celebrity risk, disclosure 등 체크 (research 규칙 제외)
↓
[어드민 리뷰] 썸네일 + 텍스트 확인/수정 → approve/reject
Out of Scope (별도 이슈)
Technical Notes
- 기존
assets/openai-client.ts 확장하여 이미지 생성
llm-schemas.ts에 통합 structured output 스키마 추가
- Meilisearch post 인덱스 기존 활용
- 환경변수:
OPENAI_API_KEY, CONTENT_STUDIO_LLM_ENABLED, CONTENT_STUDIO_MODEL
🤖 Generated with Claude Code
Summary
Content Studio 파이프라인을 개선하여, post ID 수동 입력 대신 검색/인기순 선택 → 키워드 추출 → 마케팅 프롬프트 생성 → 3종 채널별 썸네일 자동 생성까지 하나의 플로우로 완성한다.
Motivation
Spec (Grill 결과)
1. Post 선택 UX 개선
2. Packet ID 500 에러 수정
packet_${postId}prefix가 UUID 컬럼에 들어감 →invalid input syntax for type uuidcrypto.randomUUID()순수 UUID 생성 (post_idFK가 이미 unique constraint)3. 키워드 + 프롬프트 + Variant 텍스트 통합 생성
{ keywords, imagePrompts: { youtube, instagram, x }, variants: { youtube: { title, body, hashtags }, ... } }4. 3종 채널별 썸네일 생성
gpt-image-2edit 모드 (post 원본 이미지 변환)Promise.all병렬content-studio/{packetId}/)5. Research/Firecrawl 전체 제거
research/디렉토리 (firecrawl-client, domain-policy, normalization, recommendations, query-suggestions)ResearchPanel컴포넌트POST /api/v1/content/researchAPIexternalEvidence,researchProvenance,claims필드파이프라인 플로우
Out of Scope (별도 이슈)
Technical Notes
assets/openai-client.ts확장하여 이미지 생성llm-schemas.ts에 통합 structured output 스키마 추가OPENAI_API_KEY,CONTENT_STUDIO_LLM_ENABLED,CONTENT_STUDIO_MODEL🤖 Generated with Claude Code