SaaS APIAI 검수 (셀프 요청)
POST /ai/influence/contents/ai-review/script/import-pdf
스크립트 PDF 자동변환 (가이드라인 장면 구조로 초안 저장)
스크립트 PDF 자동변환
크리에이터가 다른 곳에서 작성해 PDF로 제출한 영상 스크립트를, 캠페인 v4 가이드라인의 장면(shots) 구조에 맞춰 씬별 스크립트(editorState)로 자동 재구성한 뒤, 해당 검수 회차의 SCRIPT_VIDEO 초안으로 저장합니다.
변환된 초안은 그대로 스크립트 에디터에서 수정한 뒤 제출하거나, AI 스크립트 검수 요청의 입력으로 사용됩니다.
비동기성 · 소요 시간. 내부적으로 PDF를 S3에 업로드한 뒤 Python AI(gemini-2.5-flash)로 변환하므로 평균 15~40초 걸립니다. 응답이 올 때까지 대기하는 동기 호출입니다.
본인 신청 건만 가능. reviewId가 가리키는 검수 회차의 신청 소유자 본인만 호출할 수 있습니다(소유권 검증). 타인의 회차에 import 시 403.
HTTP 요청
POST /ai/influence/contents/ai-review/script/import-pdf
Authorization: Bearer {access_token}
Content-Type: multipart/form-dataRequest Parts
multipart/form-data 로 전송합니다.
| 파트 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
reviewId | form field | long | 예 | 검수 회차 ID |
document | file part | file (PDF) | 예 | 크리에이터가 제출한 스크립트 PDF |
동작 순서
reviewId→ 검수 회차 → 캠페인(collab) 조회 + 소유권 검증- PDF를 S3에 업로드해
pdf_url확보 - 해당 캠페인의 v4 가이드라인(
shots) 조회 - Python 자동변환 API 호출 → 장면별
editorState수신 (reviewId, scriptIndex)기준 upsert 로SCRIPT_VIDEO초안(isSubmitted=false) 저장 (재업로드 시 기존 장면 덮어쓰기)
변환 원칙. 가이드라인 장면 수만큼 슬롯을 생성하며, PDF에 해당 내용이 없으면 그 필드는 빈칸으로 둡니다(없는 정보를 지어내지 않음). 출력 언어는 PDF 언어를 따릅니다. 현재 SCRIPT_VIDEO 타입만 지원합니다.
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "스크립트 PDF 자동변환 완료",
"data": {
"reviewId": 910,
"collabNo": 1234,
"savedCount": 5
}
}응답 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
reviewId | long | 검수 회차 ID |
collabNo | int | 캠페인 번호 |
savedCount | int | 저장된 장면(초안) 수 |
변환 결과 본문(씬별 editorState)은 응답에 직접 담기지 않고 초안으로 저장됩니다. 저장된 내용은 제출물 조회 API로 확인하세요. editorState 는 SCRIPT_VIDEO 3분할(videoScene / subtitle / narration) Lexical JSON 구조입니다.
에러 응답
| 상태 코드 | 설명 |
|---|---|
400 | document(PDF)가 비어 있거나 누락 |
403 | 본인 신청 건이 아님 (소유권 검증 실패) |
404 | reviewId에 해당하는 검수 회차 없음 |
500 | PDF S3 업로드 실패 또는 Python 변환 실패 |