판매용 PDF: 홍보 문구(상단)
“딸깍 출판”, “AI가 책을 대신 써준다”, “결과물 대리 생산”이 아니라, “재현 가능한 출판 시스템”을 만들 수 있는 가이드를 전달해 드립니다.
- 초보자도 Google Antigravity IDE 만으로도 구축할 수 있는 저비용 출판 시스템
- 실제 파일 구조, 설정 파일, 실행 흐름이 포함된 실전형 가이드
- HTML, PDF, EPUB까지 연결되는 출판 지향 워크플로우
저품질 딸깍 출판의 원인들은 보통 다음과 같습니다.
- AI가 만든 초고를 사실 검증 없이 유지한다.
- 목차를 먼저 확정하지 않고 장을 마구 쓴다.
- 삽화 방식을 중간에 바꾼다.
- 초반 챕터를 수정했는데 뒤 챕터를 다시 점검하지 않는다.
- “잘 써줘” 같은 추상적 프롬프트만 반복한다.
- 마감 직전에 처음으로 전체 빌드를 해본다.
이 가이드로 구축한 시스템은 집필·출판 생산성을 크게 올릴 수 있습니다. 그러나 아래는 끝까지 사람 책임입니다.
- 사실 검증
- 인용 및 저작권 검토
- 민감한 주장에 대한 법적 리스크 판단
- 독자 난이도 조절
- 최종 문장 품질
AI는 속도를 높여주지만, 책의 신뢰도는 여전히 사람의 검토에서 나옵니다.
최소 준비물
- Google Antigravity IDE 또는 동급의 파일 기반 AI 작업 환경
- Python 3.10+
- Quarto
- 기본적인 마크다운 편집 능력
- 결과물을 직접 읽고 수정할 시간
판매용 PDF: 본문(가이드)
이 문서는 “원고를 대신 써주는 대행 서비스” 구축 가이드가 아니라, 원고 생산을 안정적으로 반복하기 위한 출판 시스템 구축 가이드입니다.
구축하게 되는 시스템의 핵심 원리 4가지
- 긴 책은 채팅창이 아니라 파일로 관리한다.
- 집필은 한 번에 몰아서 하지 않고 배치로 끊는다.
- 삽화 방식은 초기에 고정한다.
- 출판 품질은 마지막이 아니라 매 배치마다 관리한다.
프로젝트 구조(최종 형태)
workspace/
├── GEMINI.md
├── _quarto.yml
├── TOC.json
├── workflow_manager.py
├── requirements.txt
├── index.qmd
├── chapters/
├── images/
├── docs/
└── logs/핵심 파일 1: GEMINI.md (에이전트 규칙 + 생성 스펙)
의도: 사용자가 TOC.json과 _quarto.yml을 따로 설계/관리하지 않아도 되도록, “생성 스펙”을 GEMINI.md 안에 함께 넣고 agent-leader가 이를 근거로 파일을 생성하게 만든다.
아래 템플릿을 그대로 복사해 workspace/GEMINI.md로 저장합니다.
# Role: AI-Assisted Non-fiction Book Factory
목표: AI의 초고 생산 속도를 활용하되, 사람이 품질을 통제하는 비문학 출판 공정을 만든다.
산출물: Quarto book 프로젝트(.qmd)로, HTML/PDF/EPUB까지 빌드 가능해야 한다.
# Team Structure
## agent-leader (System Architect)
- 사용자로부터 Topic/Target/Impact/Art Mode를 확정한다.
- 아래 "TOC.json 스펙"을 기준으로 TOC.json을 생성한다.
- 아래 "_quarto.yml 예시"를 기준으로 _quarto.yml을 생성/업데이트한다.
- workflow_manager.py의 실행 규칙을 정의한다(아래 기준을 코드로 구현).
- 입력: TOC.json, chapters/ 폴더, (선택) 직전 챕터 파일
- 목표: “다음에 처리할 챕터 1개”만 골라 초고/삽화를 생성하고 상태를 갱신한다.
- 선택 규칙:
1) status=todo 중 가장 앞(id가 가장 작은) 챕터 1개를 선택
2) 해당 챕터를 drafted로 변경(잠금 역할: 한 번에 1개만 진행)
3) agent-writer 호출 → chapters/<file> 초고 생성/업데이트
4) 초고에 FIGURE: 가 있으면 agent-illustrator 호출(모드에 맞게)
5) agent-illustrator가 새 패키지를 썼으면 requirements.txt 업데이트
6) 결과 로그를 logs/Run_Log.md에 남김(선택된 챕터, 생성된 파일, VERIFY/FIGURE 카운트)
- 종료 조건: todo 챕터가 없으면 “할 일 없음” 메시지 출력
## agent-writer (Content Engineer)
- 입력: TOC.json의 현재 챕터 브리프 + 직전 챕터 파일
- 출력: 해당 챕터 .qmd 초고
- 규칙:
- 서술 프레임: 문제-해결-근거
- 검증이 필요한 주장/수치/사례는 단정하지 말고 VERIFY: 로 표시
- 삽화 필요 지점은 FIGURE: 한 줄 설명 플레이스홀더로 남김
## agent-illustrator (Visual Specialist)
- Rendered Code 모드: .qmd 내부에 Python 코드(그래프/도식) 삽입
- Rasterized Image 모드: 이미지 프롬프트를 만들고 images/에 PNG 저장
- 규칙: 삽화 1개는 주장 1개만 보강한다(과다 정보 금지)
- 추가 규칙(의존성 기록): Rendered Code 모드에서 새로운 Python 패키지를 import/사용했다면 requirements.txt에 즉시 반영한다.
## agent-auditor (Quality Controller)
- 전체 원고를 분할 검토하여 아래를 점검한다.
- 논리 모순, 용어 불일치, 난이도 이탈, VERIFY: 미해결 항목
- 결과는 logs/Review_Log.md에 High/Medium/Low로 기록한다.
# Constraints
1. 한국어 중심, 핵심 용어 첫 등장 시 영어 병기
2. 수식은 LaTeX 문법 준수
3. 사실처럼 보일 수 있는 내용은 임의로 지어내지 않기
4. 각 챕터 말미에 요약/미검증/다음 장 연결을 3줄로 남기기
# TOC.json 스펙 (agent-leader가 이 구조로 생성)
- 상태는 3단계: todo → drafted → reviewed
TOC.json 예시:
{
"project": {
"topic": "경제학 원론",
"target_reader": "고등학생 수준의 일반인",
"impact": "경제학적 사고방식의 습득",
"art_mode": "rasterized_image"
},
"chapters": [
{"id": "01", "title": "왜 경제학을 배워야 하는가", "file": "chapters/01_intro.qmd", "status": "todo"},
{"id": "02", "title": "희소성과 선택", "file": "chapters/02_scarcity.qmd", "status": "todo"}
]
}
# _quarto.yml 예시 (agent-leader가 이 형태로 생성/업데이트)
_quarto.yml 예시:
project:
type: book
output-dir: docs
book:
title: "<YOUR TITLE>"
author: "<YOUR NAME>"
chapters:
- index.qmd
- part: "Main Content"
chapters:
- chapters/01_intro.qmd
- chapters/02_scarcity.qmd
format:
html:
theme: cosmo
code-fold: true
toc: true
number-sections: false
pdf:
number-sections: false
pdf-engine: xelatex
documentclass: scrreprt
mainfont: "Noto Sans CJK KR"
sansfont: "Noto Sans CJK KR"
monofont: "Noto Sans Mono CJK KR"
epub:
cover-image: images/cover.png핵심 파일 2: TOC.json
사용자는 스키마를 외우지 않아도 됩니다. GEMINI.md에 포함된 "TOC.json 스펙"을 근거로 agent-leader가 생성합니다.
핵심 파일 3: _quarto.yml
사용자는 빌드 설정을 직접 작성하지 않아도 됩니다. GEMINI.md에 포함된 "_quarto.yml 예시"를 근거로 agent-leader가 생성/업데이트합니다.
requirements.txt (자동 생성)
- 원칙:
agent-illustrator가 실제로 사용한 패키지를 기준으로requirements.txt를 기록/업데이트합니다. - 사용자는 최종 빌드 단계에서 아래 명령 1개로 설치만 하면 됩니다.
pip install -r requirements.txt실행 가이드
[Step 1] 초기화(Scaffolding)
Antigravity IDE 채팅에서 아래처럼 요청합니다.
주제: 경제학 원론
대상 독자: 고등학생 수준 일반인
기대 효과: 경제학적 사고방식 함양
삽화 방식: Rasterized Image
GEMINI.md 규칙을 준수해서 아래를 생성해줘.
- TOC.json(챕터 8개 내외)
- chapters/ 이하 파일명 목록
- _quarto.yml(빌드 설정)
- workflow_manager.py 뼈대
- requirements.txt(필요 시 agent-illustrator가 업데이트)[Step 2] 챕터별 사람 검토 배치형 집필(Batch Writing)
원칙: 챕터 1개씩 AI가 초고를 생성하고, 사람이 검토 후 상태를 업데이트하는 배치 루프입니다.
- TOC.json에서 status=todo인 챕터는 여러 개일 수 있습니다.
- 그중 딱 1개만 drafted로 바꾸고 시작합니다(동시에 여러 장 진행 금지).
선택 규칙(권장):
status=todo인 챕터 중 id가 가장 작은 1개를 선택- 그 챕터만
drafted로 변경
터미널에서 실행:
python3 workflow_manager.pyworkflow_manager.py가 해야 하는 일(요약):
drafted상태인 챕터 1개를 찾아 그 파일만 생성/업데이트- 직전 챕터 파일을 읽고(연결성 확보) 현재 챕터 초고를 작성
- 초고에 아래 플레이스홀더를 남김
FIGURE:가 있으면agent-illustrator를 호출해 삽화 생성까지 진행(선택: 구현에 따라 “프롬프트만 생성”으로도 운영 가능)- 삽화 생성 과정에서 새 패키지를 import/사용했다면
requirements.txt를 업데이트 - 실행 결과를
logs/Run_Log.md에 남김(선택된 챕터, 생성 파일, VERIFY/FIGURE 개수)
중요:
workflow_manager.py는VERIFY:의 진위를 판단하지 않는다. 검증은 사람이 한다.
- 생성된 챕터 파일(
chapters/xx_*.qmd)을 열고 문장/논리/난이도를 수정한다. VERIFY:항목을 “근거 추가/수정/삭제” 중 하나로 반드시 처리한다.FIGURE:가 남아 있다면 실제 그림/코드 출력으로 대체되었는지 확인한다.- 검토가 끝나면
TOC.json에서 해당 챕터 상태를reviewed로 변경한다.
주의:
drafted상태가 2개 이상이면 작업이 분산되어 품질이 급격히 떨어집니다. 항상 1개만 유지하세요.
[Step 3] 품질 감사(Audit)
- 사실 검증, 인용/저작권 확인, 민감한 주장에 대한 법적 판단은 사용자 책임입니다.
- 본 가이드는 출판 품질을 올리기 위한 “공정 시스템 구축 방법”을 제공하며, 구축된 시스템이 출력한 결과물의 진실성/적합성을 보증하지 않습니다.
agent-auditor를 호출해서 전체 원고를 분할 검토해줘.
logs/Review_Log.md에 High/Medium/Low로 정리해줘.
특히 VERIFY: 항목을 최우선으로 모아줘.[Step 4] 최종 빌드(Build)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
quarto render(선택) 유통 준비 요약
이 섹션은 “출판 시스템”의 바깥 단계(유통/식별자/서점 등록)까지 한 번에 끝내기 위한 체크리스트입니다.
DOI (디지털 객체 식별자)
DOI는 학술적 인용, 영구 링크, 버전 관리가 필요한 경우에 유용합니다. 대중 단행본 판매만 목표라면 필수는 아닙니다.
- 추천 경로: GitHub + Zenodo
ISBN (국제표준도서번호)
ISBN은 한국 내 온/오프라인 유통(서점 판매, POD/전자책 유통)을 위한 사실상 필수 식별자입니다.
- 권장 절차(한국)
GitHub Pages를 이용한 온라인 도서 배포 (무료 호스팅)
소스코드뿐만 아니라, 빌드된 결과물(HTML 책)을 인터넷에 무료로 공개하는 방법입니다. GitHub Pages는 docs/ 폴더를 웹사이트로 인식하므로 이를 활용합니다.
1. 사전 준비 (경로 수정 및 .nojekyll)
GitHub Pages가 Quarto의 특수한 파일들을 무시하지 않도록 설정이 필요합니다.
# 1. 빌드 결과물이 docs/ 폴더에 생성되도록 설정 (이미 _quarto.yml에서 수정됨)
# 2. GitHub Pages 엔진(Jekyll)이 파일을 건드리지 못하게 빈 파일 생성
touch docs/.nojekyll2. 제외 파일 설정 (.gitignore)
소스코드는 올리되, 실행 캐시 등은 제외하고 **docs/(빌드 결과물)**는 반드시 포함되도록 설정합니다.
cat <<EOF > .gitignore
# Quarto execution & cache
.quarto/
_freeze/
# Python environment
.venv/
__pycache__/
*.pyc
# IDE and OS files
.vscode/
.DS_Store
.ipynb_checkpoints/
EOF3. 로컬 Git 초기화 및 GitHub 연결
# 1. Git 초기화 및 메인 브랜치 설정
git init
git checkout -b main
# 2. GitHub 로그인
gh auth login
# 3. GitHub 레포지토리 생성 (book-sample 이름)
gh repo create book-sample --public --source=. --remote=origin
# 4. 파일 업로드 (Commit & Push)
git add .
git commit -m "Build: GitHub Pages 배포를 위한 docs 폴더 포함 업로드"
git push -u origin main4. GitHub 대시보드 설정 (중요)
파일을 올린 후, GitHub 웹사이트에서 클릭 몇 번으로 실제 웹페이지를 활성화해야 합니다.
- 레포지토리 접속:
https://github.com/username/book-sample로 이동합니다. - Settings 클릭: 상단 탭의 가장 오른쪽 Settings 메뉴를 클릭합니다.
- Pages 메뉴 이동: 왼쪽 사이드바에서 Code and automation > Pages를 선택합니다.
- Build and deployment 설정:
- Save 클릭: 저장 후 약 1~2분 뒤 상단에 "Your site is live at..." 링크가 나타납니다.
이제 전 세계 어디서든 링크만으로 여러분의 책을 읽을 수 있게 되었습니다!