Skip to content

이식 기능 PRD

Release date: 03/19/2026 Status: Released created: March 12, 2026 5:35 PM 앱/웹/스튜디오: 스튜디오

1. 목표 및 배경

목표

타 캐릭터챗 서비스(크랙, 캐릭터AI 등)에서 작품을 운영하던 디렉터가 프론티아로 작품을 이전할 때의 진입 장벽을 최소화한다. 기존에 작성한 통 프롬프트를 붙여넣으면 LLM이 자동으로 파싱하여 프론티아 에피소드 초안을 생성해주는 "딸-깍 임포트" 기능을 제공한다.

배경

프론티아로의 디렉터 유입을 늘리기 위해 크랙 등 타 플랫폼 디렉터의 전환을 적극 유도하고 있다. 그러나 기존 디렉터들이 이미 공들여 작성한 프롬프트(세계관, 캐릭터, 상태값, 이미지 규칙 등)를 프론티아 형식에 맞춰 일일이 재입력하는 것은 큰 전환 비용이 된다. 이 전환 비용을 줄여야 디렉터 이탈 없이 온보딩할 수 있다.

핵심 가설

기존 프롬프트를 붙여넣기만 하면 에피소드 초안이 자동 생성되면, 디렉터의 프론티아 작품 등록 전환율이 유의미하게 높아질 것이다.

2. 타깃 사용자

Primary: 타 캐릭터챗 플랫폼 디렉터 (크리에이터)

  • 크랙 등에서 이미 통 프롬프트를 작성해본 경험이 있는 사용자
  • 세계관, 캐릭터 설정, 상태값 시스템, 이미지 출력 규칙 등이 포함된 프롬프트를 보유
  • 프론티아로 플랫폼을 이전하거나 여러 플랫폼을 동시에 운영하려는 의사가 있는 사용자

Secondary: 프론티아 기존 디렉터

  • 다른 곳에서 프롬프트를 먼저 작성한 뒤 프론티아에 등록하려는 기존 디렉터

3. 핵심 기능 요구사항 및 사용자 플로우

3.1 전체 사용자 플로우

Step 1. 진입

  • 프론티아 스튜디오에서 [+새 에피소드] 버튼 클릭
  • 팝업 표시: "새로운 에피소드를 만들까요?"
  • 선택지: [새로 만들기] / [이미 작성된 프롬프트가 있어요]
  • [새로 만들기] → 기존 에피소드 생성 플로우 (변경 없음)
  • [이미 작성된 프롬프트가 있어요] → Step 2로 진행

Step 2. 제목, 프롬프트, 프롤로그 입력

  • 안내 문구: "기존에 사용하시던 프롬프트를 붙여넣어 주세요. 프론티아가 자동으로 분석해서 초안을 만들어 드릴게요."
  1. 제목(필수): 최대 20글자
  2. 프롬프트(필수): 텍스트 입력 화면 표시. 최소 500자, 최대 7,000자
    • 대용량 텍스트 입력이 가능한 텍스트 에어리어 제공
  3. 프롤로그(선택): 최대 4,000자
  • [초안 만들기] 버튼 클릭 → Step 3으로 진행

Step 3. LLM 파싱 (로딩)

  • 로딩 화면 표시: "프롬프트를 분석하고 있어요..."
  • 백엔드에서 Gemini Flash + 파싱 시스템 프롬프트를 사용하여 통 프롬프트를 JSON으로 변환
  • 파싱 결과 JSON 구조: system info, character info, status value (player/character), images, 삭제
  • 파싱 완료 시 Step 4로 진행
  • 파싱 실패/부분 실패 시에도 가능한 만큼의 결과를 보여주고 Step 4로 진행
  • Step3 완료 시점 = 에피소드 생성 시점
    • Step3(파싱)까지 완료되고 이탈하는 경우에도 에피소드가 생성되어 있음

Step 4. 초안 확인 및 수정

  • 파싱된 결과를 프론티아 에피소드 필드에 매핑하여 초안 확인/수정 UI 표시
  • 수정 가능한 항목: 세계관(system info), 캐릭터 정보(character info), 상태값 — 플레이어(player status), 상태값 — 캐릭터(character status), 캐릭터 이미지 이름 및 status1/status2
  • 각 항목은 텍스트 편집이 가능한 형태로 제공
  • 파싱이 부분적으로만 성공한 경우, 빈 필드로 표시하여 유저가 직접 채울 수 있도록 함
  • 만약 각 컴포넌트의 최대 글자 수를 넘어선 경우, 다 넣어주고 글자 수를 줄여달라고 안내 (글자수 초과됐다는 것을 알려주는 에러알림 필요)
  • 상태값 혹은 캐릭터 상태(status1, status2) 등 입력 가능한 개수를 넘어간 경우 저장이 안되며 저장이 안되는 컴포넌트를 따로 표시해서 알려줌. 저장이 안되는 컴포넌트는 수정 불가. 참고만 가능하며, 저장된 컴포넌트에 수정하도록 유도
  • [확인] 버튼 클릭 → Step 5로 진행

Step 5. 이미지 타입 선택

  • "캐릭터 이미지를 어떤 형태로 연출할까요?" 팝업 표시
  • 선택지: [가로형] / [세로형]
    • 이미지 예시(캐릭터 연출 방법에 있는거)도 같이 보여줌
    • 각 선택에 맞는 캐릭터 이미지 연출방법과 플레이 뷰로 기본 설정해준다는 안내
  • 선택한 값이 해당 에피소드의 캐릭터 이미지 연출법 default 값으로 설정됨
    • 가로형: 가로형 이미지(캐릭터 연출 방법), 스크롤 뷰(스크롤 뷰 추가 되기 전까진 페이지 뷰)
    • 세로형: 세로형 이미지(캐릭터 연출 방법), 페이지 뷰

Step 6. 에피소드 수정 페이지 진입

  • 이미지 타입 선택 완료 → 바로 에피소드 수정 페이지로 진입
  • 초안 데이터가 각 필드에 pre-fill 된 상태로 에디터 열림
  • 디렉터는 여기서 추가 수정/보완 후 저장

3.2 파싱 결과 → 프론티아 에피소드 필드 매핑

파싱 JSON 필드프론티아 에피소드 필드비고
system info시스템 프롬프트 (세계관/지침)세계관, 응답 규칙, 톤앤매너 등
character info[].name캐릭터 이름캐릭터별 개별 생성
character info[].info캐릭터 설정 (프로필)성격, 말투, 배경 등
status value.player status플레이어 상태값name, change rule, initial value
status value.character status캐릭터 상태값name, change rule, initial value
images.character images.name캐릭터 이미지 이름 목록
images.character images.status1캐릭터 이미지 상태1 목록
images.character images.status2캐릭터 이미지 상태2 목록optional
images.situation images상황 이미지 목록
images.background images배경 이미지 목록
삭제매핑하지 않음 (이미지 출력 규칙, INFO 상태창 형식 등)

⚠️ 매핑 상세 스펙은 백엔드 개발 시 확정 필요. 프론티아 에피소드 데이터 모델에 맞춰 필드 매핑 테이블을 최종 확정한다.

4. 기술 요구사항 및 성능 지표

4.1 LLM 파싱 시스템

  • 사용 모델: Gemini 3 Flash
  • Temperature: 0.55
  • 시스템 프롬프트: 딸-깍 임포트 문서에 정의된 파싱 프롬프트 사용 (세계관/캐릭터/상태값/이미지/삭제 분류)
  • 출력 포맷: JSON (system info, character info, status value, images, 삭제)
  • 참고 문서: 딸-깍 임포트

4.2 백엔드 요구사항

  • 파싱 API 엔드포인트: 통 프롬프트 텍스트를 받아 파싱된 JSON 반환
  • 에피소드 생성 API: 파싱된 JSON을 프론티아 에피소드 필드에 매핑하여 에피소드 초안 생성
  • 이미지 타입(가로/세로) 저장: 에피소드 캐릭터 이미지 연출법 default 값으로 저장

4.3 비용

  • Gemini Flash API 호출 비용 (1회 파싱당 input/output 토큰 비용)
  • 향후 LLM 외 경량 파싱 모델로 전환 가능성 검토 (비용 최적화)

5. 에러 처리 및 예외 상황

5.1 파싱 실패/부분 실패

  • 파싱이 완전히 실패한 경우 (JSON 생성 불가): "프롬프트를 분석하지 못했어요. 내용을 확인하고 다시 시도해 주세요." 에러 메시지 + 입력 화면으로 복귀
  • 파싱이 부분적으로만 성공한 경우: 파싱된 항목만 채워서 초안 확인 UI 표시. 빈 필드는 유저가 직접 입력 가능. 상단에 "일부 항목을 자동으로 채우지 못했어요. 직접 확인하고 수정해 주세요." 안내 표시

5.2 입력 관련 예외

  • 빈 텍스트로 제출 시: [초안 만들기] 버튼 비활성화
  • 입력 최소/최대 글자 수
    • 최소: 50초0자
    • 최대: 7,000자

6. 데이터 분석

6.1 로깅 이벤트

이벤트 명트리거 시점수집 속성
view_new_episode[+새 에피소드] 클릭 시 팝업 노출
click_episode_import_mode[이미 작성된 프롬프트가 있어요] 클릭
click_new_episode_mode[새로 만들기] 클릭episode_id
click_import_episode[초안 만들기] 클릭
import_parsing_completed파싱 완료 시episode_id
click_confirm_import_draft초안 확인 후 [확인] 클릭episode_id