import { useState } from "react";
const SYSTEM_PROMPT = `너는 공주 밤 산지직송 쇼핑몰 에리카의 SNS 콘텐츠 작성 도우미야.
규칙:
- 밤(농산물) 관련 내용만 작성
- 바이럴 마케팅 개인 스토리(차 안에서 살았다 등) 절대 포함 금지
- 온라인사업·퍼널·마케팅 교육 내용 절대 포함 금지
- 오직 밤의 신선함, 산지직송, 무첨가, 가족 감성, 제철, 손 선별만 다룰 것
출력 형식:
① 헤드카피 10개 (훅 한 줄씩, 번호 붙여서)
② 스레드 글 5개 (짧은 줄바꿈, 감성 바이럴 구조)
③ 30초 녹음 스크립트 3개 (훅→본론→CTA 구조, 가장 강한 것 3개)
각 항목은 입력된 나이대·페르소나 감성에 정확히 맞게 작성할 것.`;
export default function App() {
const [age, setAge] = useState("");
const [persona, setPersona] = useState("");
const [platform, setPlatform] = useState("TikTok");
const [result, setResult] = useState("");
const [loading, setLoading] = useState(false);
const platforms = ["TikTok", "Instagram", "YouTube Shorts", "Threads", "전체 혼합"];
const generate = async () => {
if (!age || !persona) return;
setLoading(true);
setResult("");
const userMsg = `에리카의 공주 밤 산지직송 쇼핑몰 콘텐츠 작성해줘.
타깃 나이대: ${age}
페르소나: ${persona}
플랫폼: ${platform}
헤드카피 10개 + 스레드 글 5개 + 30초 녹음 스크립트 3개`;
try {
const res = await fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "claude-sonnet-4-20250514",
max_tokens: 1000,
system: SYSTEM_PROMPT,
messages: [{ role: "user", content: userMsg }],
}),
});
const data = await res.json();
const text = data.content?.map(b => b.text || "").join("") || "오류가 발생했어요.";
setResult(text);
} catch {
setResult("오류가 발생했어요. 다시 시도해주세요.");
}
setLoading(false);
};
return (
);
}
{/* Header */}
{/* Inputs */}
)}
ERICA × 공주 밤
🌰 오늘의 스크립트 생성기
나이대 + 페르소나 입력 → 헤드카피 10개 + 스레드 5개 + 녹음 스크립트 3개
{/* Age */}
{/* Persona */}
{/* Submit */}
{/* Result */}
{result && (
{["20대", "30대", "40대", "50대", "60대"].map(a => (
))}
setPersona(e.target.value)}
placeholder="예: 초등 자녀 부모 / 명절 선물 구매 / 클린이팅 MZ / 가족 건강 주부"
style={{
width: "100%", padding: "11px 14px", borderRadius: 8,
background: "#1a1a28", border: "1px solid #2a2a3e",
color: "#e4e4f0", fontSize: 13,
outline: "none", boxSizing: "border-box",
}}
/>
{/* Platform */}
{platforms.map(p => (
))}
📋 {age} · {persona} · {platform}
{result}