docs: record project operation and verification guidance

This commit is contained in:
NINI
2026-10-08 01:17:53 +09:00
parent 656b9344b1
commit ff066aacb5
18 changed files with 390 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
# 구성과 데이터 흐름
ShortVideoGenerator는 개인용 Codex 작업 지침으로 구성된다. 서비스·데이터베이스·실행 프로그램이 아니라 역할 TOML, 작업별 SKILL.md, JSON 양식·스키마를 함께 사용하는 구조다.
`.codex/agents/`의 8개 역할은 `.agents/skills/`의 담당 작업을 사용한다. 스킬은 `templates/`의 빈 양식과 `contracts/`의 전달 구조를 읽고, 제작별 `projects/<project_id>/`에 결과 버전과 사람용 검토를 남긴다. 총괄만 공유 진행 기록을 관리한다. 참고 자료는 이야기 구성·그림체의 입력이고 다른 제작의 상태·승인을 가져오는 저장소가 아니다.
주제와 언어 요청은 총괄→주제·조사→작가→내레이션→장면→비주얼→영상·편집→검수 순으로 전달된다. 주제, 대본·제목, 장면, 완성본의 사용자 검토가 다음 구간을 연다. 검토를 기다리는 동안 경계를 넘는 새 후속 작업을 실행하지 않는다.
음성 요청은 기존 conda qwen3-tts 환경의 Qwen3-TTS로, 기준·컷 이미지 요청은 gpt-image-2.5-sunburst로 전달하도록 지정했다. 실제 요청 실행 프로그램은 아직 없다. 모델·화자·지원 언어·결과 파일은 실제 제작 환경에서 확인해야 하며 설치 여부가 추론 성공을 뜻하지 않는다.
영상·합성 경계에는 시작/끝 이미지·움직임·컷 길이 또는 클립·음성·자막의 요청과 실제 결과 파일 정보가 오간다. 엔진·API 파라미터·인증정보는 전달 계약에 고정하지 않는다. 외부 결과가 없으면 진행이 멈추며 예상이나 모의 데이터를 실제 결과로 승격하지 않는다.
대표적인 재개 요청은 기존 입력·포인터·승인·파일을 읽고 가장 앞선 미해결 단계에 배정된다. 결과가 갱신되면 실제 inputs 관계로 종속 결과를 다시 확인한다. 제목만 수정한 경우 새 제목은 합성과 검수에 전달되며 기존 음성·이미지는 유지된다.
+25
View File
@@ -0,0 +1,25 @@
# 제작 규칙
제작은 주제·언어에서 시작한다. 둘 다 공백만인 값은 사용할 수 없다. 같은 주제의 새 제작은 새 식별자를 쓰고 기존 제작의 재개는 기존 기록을 잇는다. 선택한 각도는 입력 주제 안에 있어야 한다. 언어 이름·코드의 의미를 확인하고 원래 입력을 보존한다.
대본·제목·내레이션·자막은 입력 언어를 따른다. 초등학생도 이해할 수 있는 표현은 난이도 기준이며 대상 시청자를 어린이로 제한하지 않는다. 전체 영상은 세로 9:16·180000ms 이내, 컷은 0ms 초과 5000ms 이하다. 최대 길이를 채우기 위해 내용을 늘리지 않는다.
주장은 출처와 연결한다. 확인한 출처가 하나 이상인 검증된 주장만 대본에서 사실처럼 쓴다. 불확실한 주장은 조사·수정 대상으로 남기며 그림에 넣는 구조·수치도 같은 검증이 필요하다. 참고 영상의 구성 분석은 소재 사실의 확인을 대신하지 않는다.
대본 블록은 이야기의 의미 단위, TTS 단위는 발화·호흡 단위, 컷은 실제 통합 음성의 시간 구간이다. 셋은 일대일이 아니다. 표시 텍스트와 발화 텍스트의 차이는 발음 처리이지 의미를 바꾸는 허용이 아니다.
컷은 0부터 통합 음성 끝까지 이어져야 한다. 각 컷의 길이는 end_ms-start_ms이며 빈 구간·중복을 허용하지 않는다. 자막은 여러 컷에 걸칠 수 있고 음성 범위·순서를 보존한다. 실제 음성이 180000ms를 넘으면 대본 수정과 재승인으로 돌아가며 임의 삭제·과도한 속도 변경으로 숨기지 않는다.
장면은 각 컷의 시작·끝·카메라를 정하고 인접 컷의 이어짐 또는 전환 이유를 기록한다. 이어지는 컷은 인물·배경·행동·카메라 상태가 맞아야 한다. 반복 인물·배경의 고정 특징은 유지하고 이야기상 변화는 명시한다. 모든 영상의 고정 인물로 승격하지 않는다.
이미지는 사용자 기준의 그림체를 따르며 캠핑 소재·상표를 의무로 복제하지 않는다. 각 컷에 start/end가 하나씩 필요하다. 같은 실제 이미지를 재사용해도 두 위치의 참조 기록은 남긴다. 영상은 그 사이의 설명에 필요한 움직임을 표현한다.
결과 파일은 실제 존재·형식·메타데이터를 확인해야 한다. 요청·예상·설명용 예제는 검증 결과가 아니다. 파일 부재·부분 결과는 기다리는 상태이고 전체 완료로 처리할 수 없다. 설치 확인만으로 모델 로딩·추론을 확인했다고 쓰지 않는다.
사용자 검토는 topic(01 뒤), story(02 근거와 03·04 뒤), scenes(07–09 뒤), final(13·14 뒤)다. 실제 응답과 검토한 버전이 일치해야 하며 침묵·담당 추천은 승인으로 바꾸지 않는다. 승인 전에는 02·05·10의 새 작업 또는 제작 완료 선언을 하지 않는다. 같은 검토 묶음 안의 준비된 결과로 묶음을 완성하는 것은 가능하다.
단계 상태는 pending, draft, awaiting_input, awaiting_review, complete, stale, failed다. 시작은 draft, 자료 부재는 awaiting_input, 사용자 결정 대기는 awaiting_review, 필요한 확인과 승인 충족은 complete다. 변경 요청·실패 복구는 새 버전을 작성하고 선행 변경은 관련 결과를 stale로 만든다. 설명되지 않는 전이는 문제로 보고한다.
이전 결과와 검토는 보존한다. 제목만 바뀌면 실제 종속 결과인 합성·검수와 story/final 검토를 갱신하고 관계없는 음성·이미지는 유지한다. 언어·대본·음성 변경은 영향을 받는 후속 결과를 확인한다. 오래된 버전이나 다른 제작물의 결과를 최신 결과처럼 섞지 않는다.
최종 검수는 이야기·화면·음성·자막·시간·일관성 여섯 영역의 실제 근거를 기록한다. 미확인은 not_checked, 실제 완성본 부재는 incomplete다. 모두 pass이고 blocking 발견이 없어야 pass를 추천할 수 있으며 사용자의 final 승인이 있어야 제작 완료다.
+35
View File
@@ -0,0 +1,35 @@
# 사용자와 생성 도구의 전달 형식
사용자는 저장소 루트의 Codex에서 `$short-video-workflow`와 주제·언어로 새 제작을 요청한다. 개별 `$short-video-<작업>` 호출에는 기존 제작과 사용할 선행 결과를 지정한다. 별도 HTTP 인증·응답 코드는 없고 로컬 JSON·검토 문서가 전달 표면이다. 누락·미확인·실패는 문제 기록과 준비 상태로 반환한다.
## 공통 출력
진행 기록은 schema_version="1.0", project_id, brief={topic,language}, settings, stages, reviews다. stages의 항목은 {stage_id,status,revision,artifact_path,issues}, issues는 {code,message,blocking}다. reviews의 항목은 {review_id,decision,artifact_refs,feedback}이며 artifact_refs는 {stage_id,revision} 배열이다.
단계 출력은 {schema_version,project_id,stage_id,revision,inputs,payload}다. revision은 1부터 시작하고 inputs는 실제 사용한 선행 버전 배열이다. project_id는 유일한 소문자 영숫자·하이픈이고, 경로는 저장소 루트 기준 상대 경로다. 이전 결과는 보존하며 review.md는 같은 JSON을 사람이 읽는 요약이다. 공통·단계별 필드 타입은 [진행 스키마](../contracts/project.schema.json)와 [단계 스키마](../contracts/artifact.schema.json), 시작 형태는 [양식](../templates/)에 있다.
단계는 01-topic, 02-research, 03-script, 04-title, 05-tts-split, 06-tts, 07-cuts, 08-scenes, 09-entities, 10-references, 11-images, 12-motion, 13-compose, 14-review다. 상태는 pending/draft/awaiting_input/awaiting_review/complete/stale/failed, 검토는 topic/story/scenes/final, 결정은 pending/approved/changes_requested/stale다.
## 외부 결과 제출
| 단계 | 요청 | 결과 |
|---|---|---|
| 06 | engine, conda_env, language, units | engine, model, voice, files, narration, unit_ranges |
| 10 | model, style_reference, items | items |
| 11 | model, frames | frames |
| 12 | clips | clips |
| 13 | timeline, narration_path, captions, title | video, captions_path |
06 units는 {id,block_ids,display_text,spoken_text,pronunciation_notes}, files는 {unit_id,media}, narration은 media, unit_ranges는 {unit_id,start_ms,end_ms}다. 요청 engine은 Qwen3-TTS, conda_env는 qwen3-tts이며 model·voice는 실제 사용값을 결과에 기록한다.
10 요청 items는 {id,kind,entity_id,prompt}, 결과 items는 {reference_id,media}다. kind는 style/character/background이며 스타일만 entity_id=null이다. model은 gpt-image-2.5-sunburst, style_reference는 references/1.png다. 11 요청 frames는 {id,cut_id,position,prompt,reference_ids}, 결과 frames는 {frame_id,media}다. position은 start/end이고 컷마다 둘 다 하나씩 필요하다.
12 요청 clips는 {cut_id,start_frame_id,end_frame_id,duration_ms,motion_prompt}, 결과 clips는 {cut_id,media}다. 13 timeline은 {cut_id,video_path,start_ms,end_ms}, captions는 {id,start_ms,end_ms,text} 배열이다. video는 media이고 captions_path는 실제 SRT 경로다. 특정 영상·합성 엔진이나 API 파라미터는 계약에 고정하지 않는다.
media는 {path,kind,verified,duration_ms,width,height}다. kind는 audio/image/video, 미확인 값은 null, verified는 불리언이다. 검증된 음성은 WAV·길이·width/height=null, 이미지는 PNG·크기·duration_ms=null, 영상은 MP4·길이·크기가 필요하다. 시간은 ms 정수이며 완료한 길이는 양수다. 결과의 ID는 요청에 존재해야 한다.
## 대기와 오류
request만 있으면 result=null이고 실제 배정된 외부 단계는 awaiting_input이다. 부분 결과는 보존하되 완료가 아니다. 없는 파일·지원하지 않는 언어·시간 불일치는 issues의 원인·blocking 여부와 돌아갈 단계를 보고한다. 키·인증정보는 이 형식에 포함하지 않는다.
14 checks는 {area,verdict,evidence}, findings는 {severity,description,stage_id,cut_id}, recommendation은 pass/revise/incomplete다. area는 story/visual/audio/captions/timing/consistency, verdict는 pass/fail/not_checked, severity는 blocking/minor다. 특정 컷이 아니면 cut_id=null이다. 실제 완성본 부재는 incomplete이며 여섯 영역의 통과와 blocking 없음이 확인되어야 pass를 추천한다. 실제 final 사용자 승인과는 별개다.
+21
View File
@@ -0,0 +1,21 @@
# 반복 작업에서 확인할 점
## Windows에서 스킬 검증이 디코딩 오류로 멈출 때
검증기가 기본 시스템 인코딩으로 한국어 SKILL.md를 읽으면 UnicodeDecodeError가 날 수 있다. 파일 오류와 구분하고 `python -X utf8`로 같은 검증을 다시 실행해 종료코드 0을 확인한다. 이 문제를 해결하려고 전역 Python·conda 설정을 바꾸지 않는다.
## 상대 경로가 제작 폴더에서 다른 파일을 가리킬 때
JSON의 경로는 저장소 루트 기준인데 Markdown 링크는 그 파일의 폴더 기준이다. review.md 양식을 깊은 제작 폴더로 복사하면 원래 문서 링크는 그대로 쓸 수 없다. JSON 데이터 경로는 유지하고 문서 링크만 실제 위치에서 해석해 파일이 존재하는지 확인한다.
## 제목 수정 뒤 음성 재생성을 요구할 때
전체 단계 순서만 따라 무효화하면 제목을 읽지 않는 음성·이미지까지 다시 만들게 된다. 각 artifact의 실제 inputs 관계를 따라 영향만 계산한다. 현재 전달 관계에서 04 제목은 13 합성과 14 검수에 영향을 주며 05–12는 제목만 바뀌면 보존할 수 있다. story/final의 승인 버전은 다시 확인한다.
## 설명용 컷을 실제 시간처럼 사용할 때
예제의 32000ms·4000ms는 계약 설명을 위한 가정이다. 실제 통합 WAV가 없으면 정렬·길이 근거가 없으므로 컷을 완료로 확정할 수 없다. 예제의 timing_evidence와 진행 기록의 현재 포인터를 확인하고, 실제 WAV·통합 단위 구간을 받은 뒤 컷을 새로 작성한다.
## 새로운 역할이나 스킬이 목록에 보이지 않을 때
TOML·YAML 파싱 성공은 현재 세션이 파일을 탐색했다는 증거가 아니다. 프로젝트 루트에서 새 Codex 세션으로 목록을 확인한다. 임시로 지침 파일을 직접 읽어 담당 작업을 수행할 수 있지만 이를 자동 탐색 검증으로 기록하지 않는다.
+72
View File
@@ -0,0 +1,72 @@
# 사용과 검증
## 제작 시작과 재개
이 저장소를 작업 폴더로 연 Codex가 필요하다. 프로젝트 스킬·역할 목록에 새 파일이 보이는지 확인하고, 보이지 않으면 프로젝트 루트에서 새 세션을 연다. 새 제작은 아래 두 입력으로 시작한다.
```text
$short-video-workflow
주제: 다룰 이야기
언어: 제작 언어
```
주제·각도 검토를 먼저 마치고 대본·제목, 실측 장면, 실제 완성본 검토 순으로 진행한다. 재개는 같은 스킬에 기존 제작 ID 또는 기록 위치를 전달한다. 전체 스킬 대신 개별 스킬을 불러도 필요한 선행 결과·승인은 유지한다.
요청서를 실행하는 프로그램은 현재 제공하지 않는다. 실제 음성은 기존 qwen3-tts conda 환경에서 생성·확인한 WAV와 통합 단위 구간을 제출하고, 이미지는 지정 모델의 PNG와 요청 ID를 연결해 제출한다. 영상·합성 결과도 MP4·SRT와 실측 정보를 제출한다. 파일 부재·지원하지 않는 언어·시간 불일치는 문제를 보고하고 결과를 기다린다.
## 파일 형식 검사
아래 명령은 Windows PowerShell에서 저장소 루트 기준이다. Python 3.11 이상은 TOML 파싱에 필요하다. 스키마 검증 도구는 임시 폴더에 설치하며 전역 환경을 변경하지 않는다. 실제 네트워크·설치가 실패하면 검증을 통과했다고 기록하지 않는다.
```powershell
@'
from pathlib import Path
import sys, tempfile, subprocess, os
check_code="""
from pathlib import Path
import json, tomllib
from jsonschema import Draft202012Validator, FormatChecker
validators={}
for name in ['project','artifact']:
schema=json.loads(Path('contracts/'+name+'.schema.json').read_text(encoding='utf-8'))
Draft202012Validator.check_schema(schema)
validators[name]=Draft202012Validator(schema,format_checker=FormatChecker())
for folder in ['templates','examples']:
for path in Path(folder).rglob('*.json'):
data=json.loads(path.read_text(encoding='utf-8'))
if path.name=='verification-cases.json':
continue
validators['artifact' if 'stage_id' in data else 'project'].validate(data)
agents=list(Path('.codex/agents').glob('*.toml'))
assert len(agents)==8
for path in agents:
data=tomllib.loads(path.read_text(encoding='utf-8'))
assert set(data)=={'name','description','developer_instructions'}
print('JSON schemas, templates, examples and 8 TOML files verified.')
"""
with tempfile.TemporaryDirectory(prefix='short-video-verify-') as tools_dir:
subprocess.run([sys.executable,'-m','pip','install','--target',tools_dir,'jsonschema'],check=True)
check_env=dict(os.environ, PYTHONPATH=tools_dir)
subprocess.run([sys.executable,'-X','utf8','-'],input=check_code,text=True,env=check_env,check=True)
'@ | python -X utf8 -
if ($LASTEXITCODE -ne 0) { throw '형식 검증 실패' }
```
Codex의 skill-creator가 설치되어 있다면 해당 검증기로 머리말·이름·미완성 내용을 추가 확인한다. 설치 위치가 다르면 실제 위치의 검증기를 사용한다. 현재 사용자 설치 위치를 찾는 명령은 다음과 같다.
```powershell
$skillValidator = Join-Path $env:USERPROFILE '.codex/skills/.system/skill-creator/scripts/quick_validate.py'
if (!(Test-Path -LiteralPath $skillValidator)) { throw 'skill-creator 검증기 위치 확인 필요' }
Get-ChildItem -LiteralPath '.agents/skills' -Directory | ForEach-Object {
python -X utf8 $skillValidator $_.FullName
if ($LASTEXITCODE -ne 0) { throw "스킬 검증 실패: $($_.Name)" }
}
```
프로젝트 사용 자체는 이 검증기의 전역 경로에 의존하지 않는다. 검사 결과와 관계없이 스킬의 입력·완료·승인 경계, 파일 참조, 예제의 가상 시간과 실제 결과 구분도 확인해야 한다. 형식 검사는 실제 음성·영상의 청취·관찰을 대신하지 않는다.
## 실제 제작 확인
06의 통합 WAV를 먼저 확인한 뒤 07 시간을 정한다. 글자 수 추정으로 컷·자막을 실측처럼 확정하지 않는다. 08·09 사용자 승인 뒤 기준·컷 이미지로 진행한다. 모든 클립을 받은 뒤 합성 요청을 완성하고 실제 MP4·SRT의 시간·언어·화면을 확인한다.
파일·메타데이터가 없는 외부 결과는 result=null, 부분 결과는 미완료다. 실제 최종 영상이 없으면 검수 결과는 incomplete이며 사용자 승인 없이는 완료를 선언하지 않는다. 서비스 실행·배포·업로드 명령은 현재 구성에 없다.
+11
View File
@@ -0,0 +1,11 @@
# 접근과 기록
한 사용자가 로컬 Codex 작업 폴더에서 파일을 관리한다. 별도 계정·서버 인증·다중 사용자 권한 시스템은 현재 구성에 없다. 접근은 사용자의 작업 공간·도구 권한을 따르며 역할 지침이 운영체제의 파일 접근 제어를 구현한 것은 아니다.
총괄은 공유 진행·현재 포인터·승인을 관리하고 담당 역할은 배정된 결과·검토만 제출한다. 실제 사용자 응답 없이 approved를 기록하거나 담당이 공유 상태를 바꾸는 것은 허용하지 않는다. 승인 대상 버전·피드백과 이전 결과를 남겨 변경의 근거를 확인할 수 있게 한다.
키·토큰·인증정보·외부 실행파일 절대 경로를 양식·예제·결과에 넣지 않는다. 실제 도구 연결이 추가될 때 인증은 해당 실행 환경에서 공급하고 미디어 전달 계약과 분리한다. 현재 구성은 외부 서비스의 인증·요청 실행을 구현하지 않는다.
원본 스타일 이미지와 사용자 결과를 삭제하거나 다른 제작물에 섞어 쓰지 않는다. 실제 미디어의 존재·형식·메타데이터와 검토 응답을 확인하며 요청서·가상 파일을 검증 자료로 취급하지 않는다. 확인하지 않은 근거를 확인한 것처럼 기록하면 후속 장면과 검수가 잘못 완료되므로 즉시 수정 위치를 보고한다.
지원하지 않는 언어·모델·도구는 문제를 보고하고 입력·해결을 기다린다. 전역 환경 재설치나 다른 모델로 무단 대체하지 않는다. 업로드·배포·사용자 대신 메시지 전송은 제작 지침의 암묵적 권한이 아니다.
+17
View File
@@ -0,0 +1,17 @@
# 작성과 확인 기준
역할은 저장소의 독립 TOML에 name·description·developer_instructions를 두고, 스킬은 작업별 폴더의 SKILL.md에 YAML name·description을 둔다. 역할별 모델·권한은 부모 설정을 상속한다. 전역 설치·설정 변경이나 불필요한 등록 파일을 추가하지 않는다.
공통 구조는 JSON 스키마·빈 양식을 기준으로 연결한다. 필드·열거값을 역할마다 새로 정의하지 않는다. 새로운 의미의 필드가 필요하면 전달 구조·양식·관련 지침·예제를 함께 검토한다. 빈 문자열·배열·null은 미작성이지 완료가 아니다.
프로젝트 식별자는 소문자 영숫자·하이픈이며 제작마다 유일하다. 데이터 경로는 저장소 루트 기준 상대 경로다. 문서 링크는 실제 Markdown 위치 기준이다. 같은 단계·버전은 한 작성자만 작업하고 이전 버전을 덮어쓰지 않는다.
지침·검토 설명은 한국어, 제작 내용은 입력 언어다. 필요한 상세 문서만 읽고 공통 계약·근거·양식에 연결한다. 도해·비유가 사실의 범위를 바꾸거나 실제 근거 없는 수치·구조를 추가하면 수정한다.
실제 완료는 구조 검사 외에 선행 버전·선택 ID·주장 출처·배열 식별자·파일·실측·사용자 승인을 확인해야 한다. request만 있거나 verified=false 미디어를 필수 결과로 쓰는 완료 처리는 오류다. 미검수 영역을 pass로 기록하는 것도 오류다.
공통 설정은 주제·언어 입력, 세로 9:16, 전체 180000ms 이내, 각 컷 0ms 초과 5000ms 이하, 사용자 그림체, Qwen3-TTS 기존 환경과 gpt-image-2.5-sunburst다. 실제 지원 여부는 제작 환경에서 확인하며 확인하지 않은 API 파라미터를 고정하지 않는다.
가정·중요한 미확정 의도를 먼저 밝히고 필요한 최소 변경을 한다. 관련 없는 코드·주석·서식·기존 불필요한 코드를 정리하지 않는다. 이번 변경이 새로 불필요하게 만든 항목만 제거한다. 동작을 바꾸는 변경은 해당 성공·실패 조건을 실제로 검증하고, 문서·양식은 형식·참조·예제 흐름을 확인한다.
검증 보고는 실행한 명령·종료코드·대상·한계를 남긴다. 형식 확인과 Codex 실제 탐색, 패키지 설치와 추론 성공, 모의 시간과 실제 정렬은 서로 다른 확인이다. 생성·합성 프로그램이 추가되면 실행 환경과 실제 결과의 검증을 함께 정의한다.
@@ -0,0 +1,9 @@
# 로컬 지침과 JSON 전달
사용자는 혼자 Codex에서 주제·언어를 입력해 제작하고 네 곳에서 내용을 확인한다. 현재 필요는 역할·스킬 지침과 입출력 양식이다.
역할은 전문성별 8개, 스킬은 전체 진행과 14단계로 나누고 저장소 내부에서 사용한다. 전달·재개 기준은 버전별 JSON, 사용자 검토는 같은 결과의 Markdown으로 둔다. 총괄만 현재 상태·승인을 기록한다.
서비스·데이터베이스·자동 실행 스케줄러는 현재 사용자 수와 요청 범위에 맞지 않아 선택하지 않았다. Markdown만 전달하면 상태·식별자·선행 버전을 형식 검사하기 어려워 JSON을 함께 사용한다. 전역 설치는 프로젝트 밖의 다른 작업에 지침을 노출하므로 저장소 범위로 한정했다.
이 선택은 외부 생성 결과를 기다릴 때도 기록·검토를 보존하게 한다. 반면 현재 구성만으로 실제 미디어를 생성하거나 병렬 잠금·자동 재시도·업로드를 수행할 수는 없다. 실제 도구 연결은 별도 실행 기능으로 추가하며 사용자 검토와 버전 참조를 계속 보존한다.
+3
View File
@@ -0,0 +1,3 @@
# 결정 기록
- [로컬 지침과 JSON 전달](0001-local-instructions.md): 개인용 Codex 사용과 네 사용자 검토에 맞춘 역할·기록 구성.
+3
View File
@@ -0,0 +1,3 @@
# 미해결 문제
현재 지침·양식 구현 범위에서 확인된 미해결 문제는 없다.
+24
View File
@@ -0,0 +1,24 @@
# 현재 제작 기반
## 만들어진 기능
- 제작 총괄을 포함한 역할 8개와 전체 진행·14단계 작업 스킬 15개.
- 주제·언어 입력, 네 사용자 검토, 버전 보존과 수정·재개 기준.
- 진행 기록·단계 결과 스키마 2개, 진행·단계 JSON 양식 15개와 사용자 검토 양식.
- 참고 영상 네 편의 내용·구성 분석을 사용하는 대본·제목·장면·검수 지침.
- 물순환 주제의 연결 예제와 승인·부재·시간·변경을 다루는 검토 사례 15개.
## 확인한 범위
JSON·TOML·스킬 형식과 링크·단계 참조를 실제 명령으로 확인했다. 예제의 컷·자막·프레임 연결과 제목·대본 수정의 종속 관계도 확인했다. 예제의 현재 기록은 topic 승인 전이고 외부 결과·실제 미디어는 없다. 스키마 검사와 예제 검토는 지침·형식의 확인이며, 자동 실행 프로그램의 동작 시험이 아니다.
Codex CLI의 존재·버전은 확인했지만 새 세션에서 사용자 지정 역할·스킬의 자동 탐색은 아직 확인하지 않았다. Qwen3-TTS 환경·패키지의 설치 위치는 확인했으며 모델 로딩·화자·GPU·실제 추론은 미확인이다. 이미지·영상·합성 호출과 실제 영상 청취·검수도 미실행이다.
## 다음 구현
1. 기존 Qwen3-TTS 환경의 모델·화자·언어와 실측 구간을 확인하고 실제 요청·결과 연결을 만든다.
2. 지정 이미지 모델의 사용 가능 여부·세로 출력·참조 방식과 실제 PNG 결과 연결을 확인한다.
3. 영상 생성·합성 엔진을 선택하고 컷·음성·자막의 실제 파일·시간 계약에 연결한다.
4. 실제 제작 결과로 전체 과정과 네 검토를 확인한 뒤 분야별 전문 지침을 추가한다.
현재 지침·양식 구현에서 진행을 막는 미해결 문제는 없다. 실제 생성 지원 여부는 위 후속 작업의 확인 대상이다.
+19
View File
@@ -0,0 +1,19 @@
# 검사 기록
검사일: 2026-10-08. 저장소 루트의 Windows PowerShell에서 실행했다. 지침·양식·예제의 검사는 실제 생성 도구 실행과 구분한다.
| 실제 실행 | 종료 코드 | 확인한 내용 |
| --- | --- | --- |
| operations.md의 첫 번째 PowerShell 명령 | 0 | 임시 설치와 별도 Python 프로세스로 두 스키마, 모든 양식·예제, 역할 TOML 8개 검사 |
| operations.md의 두 번째 PowerShell 명령 | 0 | skill-creator로 스킬 15개 검사, 각각 유효 결과 확인 |
| `python -X utf8 - --all`에 임시 검사 본문 입력 | 0 | JSON 34개 파싱·스키마 검사, 역할 8개·스킬 15개, 로컬 링크 134개, 동일한 루트 지침·영역 지침 4개·공통 문서 확인 |
| 같은 임시 검사의 참조·수치·상태 확인 | 0 | 잘못된 상태·중복 단계·미확인 pass 거부, 5초 초과·빈 컷·틈·겹침·3분 초과 검출, 컷을 넘는 자막·프레임 연결·수정 영향 확인 |
| `git diff --check` | 0 | 변경한 추적 파일의 공백 오류 없음 |
| `codex --version` | 0 | 로컬 CLI 0.160.1 확인 |
| `codex --help` | 0 | 로컬 CLI 진입 명령 확인 |
JSON 34개 중 데이터 양식·예제 30개는 해당 스키마로 검증했고, 검토 사례·참고 영상 목록 2개는 각 목록과 항목을 확인했다. 나머지 2개는 스키마 정의 자체의 유효성을 검사했다. 제목만 수정했을 때 음성·이미지를 다시 만들지 않는 관계, 대본 수정의 후속 영향, 주제 승인 전 예제 기록, 가상 컷·자막·프레임 연결도 확인했다. 이 검사는 예제의 참조와 수치 관계를 평가하며 실제 작업자의 지침 준수나 자동 실행 성공을 보장하지 않는다.
실제 Codex 세션의 새 역할·스킬 탐색, Qwen3-TTS 모델·화자 로딩과 추론, 지정 이미지 모델의 사용 가능 여부·호출, 영상 생성·합성·청취 검수는 실행하지 않았다. 예제의 외부 result는 null이고 최종 검수는 incomplete다. 서버 구성은 없으므로 서버 구동 검사는 적용되지 않는다.
참고 영상 분석은 공개 메타데이터·한국어 자동 자막·4초 간격의 이미지 표본 117장을 확인한 결과다. 음성 청취, 정확한 컷 경계, 소재 사실의 독립 검증, 시청 유지율은 확인하지 않았다.