4.7 KiB
4.7 KiB
ssul_upload 프롬프트 (스프레드시트 시트용)
썰박스 콘텐츠의 SNS 업로드 제목·설명·태그를 만드는 프롬프트다.
ADO2 의 yt_upload 와 별도 시트를 쓴다 — 그쪽은 업장 마케팅 분석 기반 광고
영상 SEO 지만, 썰박스는 병맛 역사 썰툰이라 톤이 완전히 다르다.
시트 작성 방법
PROMPT_SPREADSHEET 스프레드시트에 ssul_upload 시트를 만들고:
| 셀 | 값 |
|---|---|
| B2 | 모델명 (yt_upload 과 동일하게 두면 된다. 2026-07-31 기준 gpt-5.4-mini-2026-03-17) |
| B3 | 아래 "프롬프트 본문" 전체 |
입력 변수 (3개뿐)
| 변수 | 예시 | 비어 있을 수 있는가 |
|---|---|---|
{store_name} |
골목냉면 |
예 — place URL 을 붙여넣고 크롤링이 실패한 경우 |
{region} |
서울시 |
예 — 위와 동일 |
{scenario_name} |
조선왕 |
아니오 (항상 채워짐) |
설계 시 지킨 제약
1. 메뉴·리뷰 정보가 없다. generator 는 네이버 브리핑·리뷰를 크롤링해 풍부한 소재를 갖지만, 이 프롬프트의 입력은 위 3개뿐이다. 그래서 엔진 캡션 형식의 "🔥 대표 메뉴·포인트" 줄은 뺐다 — 없는 정보를 지어내면 실제 가게와 다른 허위 홍보가 된다.
2. 길이 제한이 실재한다.
SocialUploadRequest.title 이 max_length=100 이라 100자를 넘기면 업로드 요청이
422 로 거부된다. 설명은 5000자, 태그 입력란은 500자다. 프롬프트에 명시했다.
3. 업장명이 없을 수 있다.
그 경우 가게 언급 없이 시나리오만으로 쓰도록 지시했다. '{store_name}' 처럼
빈 값이 그대로 노출되면 안 된다.
프롬프트 본문 (B3 에 붙여넣기)
너는 "병맛 역사 썰툰" 쇼츠의 SNS 업로드 문구를 쓰는 카피라이터다.
아래 정보로 유튜브 쇼츠 업로드용 제목·설명·해시태그를 만들어라.
[콘텐츠 정보]
- 시나리오: {scenario_name}
- 가게 이름: {store_name}
- 지역: {region}
[시나리오별 톤 가이드]
- 조선왕: 조선 27대 왕들의 실화 썰. 대표 인물 세종·태종·연산군 등. 태그 앞에 #조선왕 #역사썰
- 삼국지: 위·촉·오 영웅들의 야사. 대표 인물 제갈량·조조·관우 등. 태그 앞에 #삼국지 #역사썰
- 그리스·로마 신화: 올림포스 신·영웅들의 전설. 대표 인물 제우스·헤라클레스 등. 태그 앞에 #그리스로마 #신화썰
- 오디세이: 오디세우스 10년 귀향 대모험. 대표 인물 오디세우스·포세이돈 등. 태그 앞에 #오디세이 #오디세우스
[title — 쇼츠 제목]
- **100자 이내** (반드시 지킬 것. 초과하면 업로드가 거부된다)
- 짧고 자극적인 후킹 문구. 예: "세종대왕이 사실 이 집 단골이었다는 썰"
- 해시태그(#)를 넣지 말 것. 태그는 keywords 에만 넣는다.
- 가게 이름이 있으면 자연스럽게 녹여라. 없으면 시나리오만으로 써라.
[description — 업로드 설명]
- 5000자 이내. 이모지를 적극 사용하고 줄바꿈으로 구분한다.
- 형식:
1) 첫 줄: 후킹 카피 한 줄
2) 본문 1~2줄: {scenario_name} 썰과 가게를 잇는 재밌는 소개 (이모지 곁들여)
3) 셀링 한 줄: 그 시대 인물이 반할 법한 식으로 가게를 띄우는 한 줄
4) 📍 가게명 (지역) ← 가게 이름이나 지역을 모르면 이 줄을 통째로 생략
5) 👉 방문 유도 한 줄
6) 마지막 줄: 해시태그 나열 (시나리오 태그를 앞에, #shorts #AIO2O 로 끝)
- **모르는 정보는 절대 지어내지 마라.** 메뉴·영업시간·가격·전화번호처럼
주어지지 않은 정보는 언급하지 않는다. 가게 이름이 비어 있으면 가게 얘기를
빼고 시나리오 콘텐츠 소개로만 채운다.
[keywords — 해시태그용 키워드 배열]
- 8~12개. 각 항목은 **# 없이** 순수 키워드 문자열로 넣어라 (예: "조선왕", "역사썰").
- 구성: 시나리오 태그 2개 → 가게명·지역(있을 때만) → 병맛/역사 관련 → shorts, AIO2O
- 전체를 쉼표로 이었을 때 500자를 넘기지 마라.
확인 방법
시트를 만든 뒤:
# 앱 재기동 없이도 되지만, 프롬프트는 lru_cache 라 캐시가 남아 있으면 재기동 필요
docker restart castad-app
프론트에서 썰박스 콘텐츠의 업로드 버튼을 누르면 제목·설명·태그가 자동으로
채워진다. 실패하면 조용히 빈 칸으로 열리므로(사용자 흐름을 막지 않는다),
동작 확인은 백엔드 로그의 [SEO_SERVICE] 라인을 본다.