DAY 1 · 4교시 · 60분

대본 구조화와 프롬프트 엔지니어링

📚1단계: 주요 개념 설명

이번 단원의 목표

구조화된 숏폼 프롬프트를 설계하고 JSON 출력 규격을 강제화한다.

🗂️강의 슬라이드
슬라이드 1 / 10

숏폼 맞춤형 시나리오 구성

첫 3초 '후킹'으로 이탈을 막는다0–3초 후킹강한 첫 문장장면 1장면 2장면 3시간 흐름 → 장면당 5~8초로 분할
  • 쇼츠는 첫 문장이 재미없으면 바로 넘겨질 수 있습니다.
  • 그래서 프롬프트에 '첫 문장은 강한 후킹으로 시작' 같은 조건을 넣습니다.
  • 장면을 나누면 자막, 이미지, 음성을 차례로 만들기 쉬워집니다.

🛠️2단계: 따라하기 실습

🛠 따라 만들기 · AI 바이브 코딩
대본을 '구조화된 JSON'으로 받기

3교시에서 만든 대본 생성기를 한 단계 키웁니다. 지금은 긴 줄글로 오는 대본을, 제목·후킹·장면으로 나뉜 JSON으로 받아 화면에 장면별 카드로 예쁘게 뿌립니다.

🎯 완성 결과: 대본이 장면별 카드로 깔끔하게 표시되는 생성기
1프롬프트에 JSON 형식 강제하기

AI가 정해진 JSON 구조로만 답하게 만듭니다.

🤖 AI에게 이렇게 시켜보세요

app/api/script/route.ts의 system 메시지를 고쳐줘. 대본을 title(제목), hook(첫 문장), scenes(장면 배열, 각 장면은 narration과 caption)로 나눈 JSON만 출력하고, 다른 설명은 절대 붙이지 말라고 지시해줘.

📄 AI가 만들어 줄 응답 형태 (JSON)
{
  "title": "쇼츠 제목",
  "hook": "강렬한 첫 문장",
  "scenes": [
    { "narration": "장면 대사", "caption": "화면 자막" }
  ]
}
💡 핵심 코드 설명
  • 줄글은 사람은 읽기 쉽지만 프로그램은 다루기 어렵습니다. JSON은 항목이 딱 나뉘어 있어 화면에 바로 꽂을 수 있습니다.
  • 'JSON만 출력하라'고 못 박는 것이 핵심입니다 — 사족이 붙으면 다음 단계(파싱)가 깨집니다.
2응답을 안전하게 파싱하기

AI가 형식을 살짝 어겨도 앱이 죽지 않게 합니다.

🤖 AI에게 이렇게 시켜보세요

route.ts에서 AI 응답을 JSON으로 변환(parse)하도록 바꿔줘. 혹시 응답 앞뒤에 코드블록 표시나 설명이 붙어도, 첫 '{' 부터 마지막 '}' 까지만 잘라서 안전하게 파싱하도록 해줘.

💡 핵심 코드 설명
  • AI는 가끔 코드블록 표시나 '네, 만들었습니다' 같은 말을 붙입니다. 중괄호 사이만 잘라내면 이런 경우에도 안전합니다.
  • 실패했을 때 빈 값이나 에러 메시지를 돌려주도록 하면 화면이 멈추지 않습니다.
3장면별 카드로 보여주기

구조화된 데이터의 이점을 화면에서 확인합니다.

🤖 AI에게 이렇게 시켜보세요

app/page.tsx에서 결과를 장면(scene)별 카드로 보여줘. 각 카드에 narration과 caption을 나눠서 표시하고, 맨 위에 title과 hook을 크게 보여줘.

💡 핵심 코드 설명
  • scenes 배열을 반복(map)하면 장면 수가 몇 개든 자동으로 카드가 만들어집니다.
  • 이것이 JSON으로 받은 진짜 이유입니다 — 데이터 구조가 곧 화면 구조가 됩니다.
실습 미션 체크리스트
1개념 직관

AI에게 그냥 부탁하면 줄글로 답할 수 있습니다. 웹서비스에서 바로 쓰려면 제목, 장면, 자막처럼 정해진 칸에 맞춰 답하게 해야 합니다.

2실습 미션

우측 레고 블록 모양의 프롬프트 토큰들을 클릭해 '역할', '스키마 조건', '주제 인자'들을 순서대로 적재하여 프롬프트 완성도 점수를 100점으로 달성해 보세요.

프롬프트 템플릿 빌더 예시
def build_prompt(topic, tone, scenes_count=4):
    return f"""너는 쇼츠 동영상 작가다.
주제: {topic}
영상 톤: {tone}

출력 규격:
반드시 다음 JSON 포맷으로 출력하고 다른 말은 절대 덧붙이지 마라.
{{
  "title": "쇼츠 제목",
  "scenes": [
    {{ "scene": 1, "narration": "대사", "image_prompt": "이미지 지시문" }}
  ]
}}"""

💡 코딩 중 막히나요? 모범 솔루션 코드

🧩3단계: 개념 검증 퀴즈

검증 챌린지 미션

하단에 출력된 프롬프트에 역할, 주제, 톤, 길이, JSON 출력 조건이 모두 들어갔는지 확인합니다.

📝 객관식 개념 확인 (2문항)

Q1. LLM이 프로그램에서 바로 쓰기 좋게 답하도록 강제하는 출력 형식은?

Q2. 쇼츠 대본에서 '후킹(Hook)'을 첫머리에 두는 이유는?

🔬 인터랙티브 체험 (선택)— 개념을 직접 조작하며 확인해 보세요

프롬프트에 포함할 조건 요소들을 아래에서 클릭해 조립해 보세요.

🧱 역할 지정 블록 (ROLE)
🧱 기획 데이터 주입 블록 (CHANNEL)
🧱 기획 데이터 주입 블록 (TOPIC)
프롬프트 완성도 점수50 / 100 점
보강할 점: 톤 또는 길이 조건 넣기 · JSON 형식으로만 답하라고 말하기
너는 유튜브 쇼츠 전문 작가다. 채널 주제: AI 기술 영상 주제: 로컬 LLM이란 무엇인가
다음 교시로 이동하기 (5교시: 브라우저 TTS 음성 합성 및 자막 낭독) ➡️