신규 프로젝트를 처음부터 만들 때 AI를 어떻게 활용하면 효과적인지 보여주는 사례다. 이번에는 사주 데이터로 쇼츠 비디오를 생성하는 ShortsMaker 프로젝트를 GPT-5 Codex로 부트스트랩했다. 4번의 커밋으로 5,800줄 코드와 완전한 아키텍처를 구축한 과정에서 발견한 구조화 프롬프팅 패턴을 정리한다.
배경: 무엇을 만들고 있는가
사주 분석 결과를 받아서 자동으로 숏폼 비디오를 생성하는 파이프라인이다. Python으로 데이터 처리와 작업 관리를 하고, TypeScript + Remotion으로 비디오를 렌더링한다.
목표는 단순하다. 사주 JSON 하나를 입력하면 TikTok/YouTube Shorts 형태의 완성된 비디오 파일이 나와야 한다. 하지만 이걸 처음부터 구축하려면 CLI 설계, 작업 큐 관리, 렌더링 파이프라인, 에러 핸들링까지 고려할 게 많다.
AI 없이 했다면 최소 2-3주는 걸렸을 작업을 4번의 커밋으로 끝냈다. 핵심은 프롬프팅을 어떻게 구조화했느냐다.
프로젝트 부트스트랩 프롬프팅 전략
새 프로젝트를 AI에게 맡길 때 가장 중요한 건 단계적 확장이다. 한 번에 "전체 프로젝트 만들어줘"라고 하면 반드시 망한다. 대신 이런 순서로 접근한다.
1단계: 워크스페이스 설정
"Python 프로젝트 구조를 만들어줘. pyproject.toml 기반이고, CLI 진입점이 있어야 한다. src 레이아웃으로 하고, 테스트 디렉토리도 포함해."
이 단계에서는 디렉토리 구조, 의존성 관리, 기본 설정 파일만 만든다. 비즈니스 로직은 아직 터치하지 않는다.
2단계: 핵심 모델 정의
"사주 데이터를 받아서 비디오를 생성하는 작업을 관리할 모델을 만들어줘. Pydantic 기반으로 하고, 작업 상태(pending, processing, completed, failed)를 관리해야 한다."
데이터 구조를 먼저 명확하게 한다. 이게 정해져야 나머지 코드가 일관성 있게 나온다.
3단계: CLI와 작업 파이프라인
"CLI에서 사주 JSON 파일을 받아서 비디오 생성 작업을 만들고, 렌더링까지 처리하는 파이프라인을 구현해줘. 작업은 JSON 파일로 저장하고, 상태를 추적할 수 있게 해."
이제 실제 동작하는 코드를 만든다. 하지만 여전히 한 번에 모든 걸 요구하지 않는다.
4단계: 렌더링 시스템
"TypeScript + Remotion으로 사주 데이터를 받아서 세로형 비디오를 생성하는 컴포넌트를 만들어줘. 한국어 폰트 지원하고, 9:16 비율로 출력해."
마지막에 렌더링 부분을 추가한다. 이때는 앞에서 정의한 데이터 구조를 참조하라고 명시한다.
GPT-5 Codex 활용법
GPT-5 Codex는 일반 ChatGPT와 다른 특별한 기능들이 있다. 프로젝트 부트스트랩에 특히 유용한 것들을 정리한다.
멀티 파일 생성 명령
일반 모델은 파일 하나씩 만들어달라고 해야 한다. Codex는 한 번에 여러 파일을 만들 수 있다.
"Python 패키지 구조를 만들어줘:
__init__.py,cli.py,models.py,job.py. 각 파일의 역할을 명확히 분리해서."
실제로 이 프롬프트 하나로 4개 파일이 한 번에 나왔다. 파일 간 import도 제대로 연결되어 있다.
프로젝트 컨텍스트 유지
Codex는 현재 작업 중인 프로젝트의 구조를 계속 기억한다. 나중에 "CLI에 새 명령어 추가해줘"라고 하면 기존 코드 스타일과 아키텍처를 유지해서 만든다.
의존성 자동 관리
새 기능을 추가할 때 필요한 라이브러리를 pyproject.toml에 자동으로 추가한다. 이번 프로젝트에서 click, pydantic, rich 같은 패키지들이 필요에 따라 자동 추가됐다.
테스트 코드 동시 생성
"작업 생성과 상태 변경 로직을 구현하고, 해당 기능에 대한 pytest 테스트도 함께 만들어줘."
비즈니스 로직과 테스트 코드를 동시에 만든다. TDD는 아니지만 최소한의 테스트 커버리지는 확보한다.
복합 기술 스택 관리 패턴
이 프로젝트는 Python + TypeScript + Remotion + FFmpeg 등 여러 기술이 섞여 있다. AI에게 이런 복합 시스템을 만들게 할 때는 경계를 명확히 해야 한다.
언어별 책임 분리
Python 부분을 먼저 완성하고, 그 다음에 TypeScript 부분을 만든다. 두 언어가 소통하는 지점(JSON 파일, CLI 호출)을 먼저 정의한다.
"Python에서는 작업 관리만 한다. 실제 렌더링은 TypeScript로 구현된 별도 스크립트를 호출해서 처리한다. 두 시스템 간에는 JSON 파일로 데이터를 주고받는다."
이렇게 하면 각 언어의 전문 영역에서 최적화된 코드가 나온다.
의존성 충돌 방지
복합 프로젝트에서 가장 까다로운 게 의존성 관리다. Python은 pyproject.toml, Node.js는 package.json을 따로 관리해야 한다.
"Python 의존성과 Node.js 의존성을 분리해서 관리해. Python은 CLI와 작업 관리만, Node.js는 Remotion 렌더링만 담당한다."
환경 설정 통합
.env.example 파일 하나로 전체 시스템의 설정을 관리한다. Python에서도, Node.js에서도 같은 환경 변수를 참조한다.
작업 단위 쪼개기의 기술
5,800줄짜리 프로젝트를 4번의 커밋으로 만든 비결은 의미 있는 단위로 쪼개기다. 각 커밋이 독립적으로 테스트 가능한 상태가 되도록 한다.
커밋 1: 워크스페이스 부트스트랩
- 프로젝트 구조, 설정 파일, 기본 모듈 틀
- 아직 동작하지 않지만 다음 작업의 기반은 완성
커밋 2: 핵심 파이프라인 구축
- 작업 생성, 상태 관리, CLI 명령어
- 실제로 작업을 만들고 추적할 수 있는 상태
커밋 3: 렌더링 시스템 추가
- TypeScript + Remotion 컴포넌트
- Python에서 호출할 수 있는 렌더링 스크립트
커밋 4: 검증과 로깅
- 에러 핸들링, 로그 시스템, 샘플 데이터
- 전체 파이프라인이 end-to-end로 동작
각 단계에서 AI에게 명확한 완료 조건을 준다.
"이번 커밋이 끝나면
shortsmaker create sample.json명령어가 작업을 생성하고,shortsmaker status명령어로 상태를 확인할 수 있어야 한다."
더 나은 방법은 없을까
이번에 사용한 방식도 좋지만, 더 효율적인 접근법들이 있다.
Claude Projects + Artifacts 활용
GPT-5 Codex 대신 Claude Projects를 쓴다면 더 나은 코드 품질을 얻을 수 있다. 특히 Python 코드의 타입 힌팅과 에러 핸들링 부분에서 Claude가 더 우수하다. Artifacts 기능으로 실시간 코드 프리뷰도 가능하다.
Cursor + AI 페어 프로그래밍
처음부터 IDE에서 AI와 함께 작업하는 방식도 효과적이다. 특히 복합 기술 스택에서는 파일 간 네비게이션과 실시간 디버깅이 중요한데, Cursor의 AI 어시스턴트가 이 부분을 잘 지원한다.
MCP 서버로 프로젝트 템플릿 관리
자주 사용하는 프로젝트 구조는 MCP 서버로 템플릿화할 수 있다. Python + TypeScript + Docker 조합 같은 건 매번 처음부터 만들 필요가 없다.
GitHub Copilot Workspace 활용
GitHub의 Copilot Workspace는 이슈에서 시작해서 전체 프로젝트를 생성하는 워크플로우를 지원한다. 기획 → 설계 → 구현까지 일관된 컨텍스트로 진행할 수 있다.
비용 최적화
GPT-5 Codex는 비싸다. 같은 작업을 GPT-4o나 Claude 3.5 Sonnet으로도 충분히 할 수 있다. 특히 보일러플레이트 코드 생성은 저렴한 모델로도 품질이 좋다.
정리
- 프로젝트 부트스트랩은 단계적 확장으로 접근한다. 한 번에 모든 걸 요구하지 않는다
- 복합 기술 스택에서는 언어별 책임을 명확히 분리하고 소통 지점을 먼저 정의한다
- 각 커밋이 독립적으로 테스트 가능한 의미 있는 단위가 되도록 작업을 쪼갠다
- AI에게 명확한 완료 조건과 제약 사항을 제시해야 일관성 있는 코드가 나온다
이번 작업의 커밋 로그
6cc0e4f — gpt-5-codex: log sample short validation
d6e1582 — gpt-5-codex: fix repo-relative cli paths
07e6f61 — gpt-5-codex: build saju shorts pipeline
65f233a — gpt-5-codex: bootstrap project workspace
Top comments (0)