논문 일러스트레이션: 다단계 Claude 감독 그림 생성
다단계 워크플로우와 엄격한 감독자/검토자 역할의 Claude를 사용하여 출판 품질의 일러스트레이션을 생성합니다.
핵심 설계 철학
┌──────────────────────────────────────────────────────────────────────────┐
│ 다단계 반복 워크플로우 │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 사용자 요청 │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── 1단계: 요청 분석, 초기 프롬프트 생성 │
│ │ (계획자) │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Gemini │ ◄─── 2단계: 레이아웃 설명 최적화 │
│ │ (gemini-3-pro)│ - 컴포넌트 위치 지정 개선 │
│ │ 레이아웃 │ - 간격 및 그룹화 최적화 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Gemini │ ◄─── 3단계: CVPR/NeurIPS 스타일 검증 │
│ │ (gemini-3-pro)│ - 색상 팔레트 규정 준수 확인 │
│ │ 스타일 │ - 화살표 및 글꼴 표준 확인 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Paperbanana │ ◄─── 4단계: 최종 이미지 렌더링 │
│ │ (gemini-3- │ - 고품질 이미지 생성 │
│ │ pro-image) │ - 내부 코드명: 나노 바나나 프로 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── 5단계: 엄격한 시각적 검토 + 점수(1-10) │
│ │ (검토자) │ - 모든 화살표 방향 확인 │
│ │ 엄격! │ - 모든 블록 내용 확인 │
│ └──────┬──────┘ - 미적 매력 및 시각적 호소도 확인 │
│ │ │
│ ▼ │
│ 점수 ≥ 9? ──예──► 승인 및 출력 │
│ │ │
│ 아니오 │
│ │ │
│ ▼ │
│ 구체적인 개선 피드백 생성 ──► 2단계로 루프백 │
│ │
└──────────────────────────────────────────────────────────────────────────┘
상수
- IMAGE_MODEL =
gemini-3-pro-image-preview— 이미지 렌더링용 Paperbanana (나노 바나나 프로) - REASONING_MODEL =
gemini-3-pro-preview— 레이아웃 최적화 및 스타일 검사용 Gemini - MAX_ITERATIONS = 5 — 최대 개선 라운드 수
- TARGET_SCORE = 9 — 허용 가능한 최소 점수 (1-10) — 품질 향상을 위해 상향 조정됨
- OUTPUT_DIR =
figures/ai_generated/— 출력 디렉토리 - API_KEY_ENV =
GEMINI_API_KEY— 환경 변수
선택 사항: 스타일 참조 (— style-ref: <source>, 옵트인)
사용자가 참조 논문의 구조적 그림 규칙(캡션 길이, 패널 수 분포, 상위 논문의 그림 대 테이블 비율)을 따를 수 있도록 합니다. 기본값은 OFF — 사용자가 $ARGUMENTS에 — style-ref를 전달하지 않으면 이전과 동일하게 작동합니다.
$ARGUMENTS에 — style-ref: <source>가 있는 경우에만, 프롬프트를 생성하기 전에 먼저 헬퍼를 실행합니다:
# $STYLE_HELPER를 표준 엄격-안전 체인을 통해 확인합니다 (참조:
# shared-references/integration-contract.md §2). 정책 A — 게이트:
# 해결되지 않은 헬퍼는 --style-ref를 충족할 수 없음을 의미하므로 중단합니다.
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
fi
STYLE_HELPER=".aris/tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || STYLE_HELPER="tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && STYLE_HELPER="$ARIS_REPO/tools/extract_paper_style.py"; }
[ -f "$STYLE_HELPER" ] || {
echo "ERROR: .aris/tools/, tools/, \$ARIS_REPO/tools/, 또는 ~/.aris/repo를 통해 extract_paper_style.py를 확인할 수 없습니다." >&2
echo " 해결 방법: bash tools/install_aris.sh 또는 smart_update.sh를 다시 실행하거나(~/.aris/repo 새로 고침), ARIS_REPO를 내보내거나, 헬퍼를 tools/에 복사하십시오." >&2
echo " --style-ref를 충족할 수 없습니다. 중단합니다." >&2
exit 1
}
STYLE_STATUS=0
CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$?
case "$STYLE_STATUS" in
0) ;; # $CACHE/style_profile.md를 구조적 지침으로 사용
2) echo "경고: style-ref를 건너뜁니다(선택적 종속성 누락)" >&2 ;;
3) echo "오류: --style-ref 소스 실패; 일러스트레이션을 중단합니다" >&2 ; exit 1 ;;
*) echo "오류: 헬퍼가 예기치 않게 실패했습니다; 일러스트레이션을 중단합니다" >&2 ; exit 1 ;;
esac
허용되는 소스: 로컬 TeX 디렉토리/파일, 로컬 PDF, arXiv ID, http(s) URL. Overleaf URL/ID는 거부됩니다 — 먼저 /overleaf-sync setup <id>를 통해 복제하고 로컬 복제 경로를 전달하세요.
엄격한 규칙 (tools/extract_paper_style.py 독스트링의 전체 계약 참조):
style_profile.md를 사용하여 캡션 길이와 그림 밀도를 참조 논문에 맞춥니다. 위의 CVPR/ICLR/NeurIPS 시각적 표준은 여전히 우선합니다.--style-ref는 길이 및 밀도 경향만 미세 조정하며, 이미지 콘텐츠는 절대 변경하지 않습니다.- 캐시를 통해 접근 가능한 모든 항목에서 그림 콘텐츠, 색상 팔레트 또는 특정 디자인 요소를 절대 복사하지 마십시오. 시각적 디자인은 참조가 아닌 사용자의 프롬프트에서 비롯됩니다.
- 생성된 이미지 점수를 매길 때 Claude 비전 검사기/Gemini 추론 검사기 하위 에이전트에
— style-ref(또는 캐시 콘텐츠)를 절대 전달하지 마십시오. 이미지는 자체 장점으로 판단되어야 합니다.
CVPR/ICLR/NeurIPS 최상위 학회 스타일 가이드
"CVPR 스타일"이 실제로 의미하는 것:
시각적 표준
- 깔끔한 흰색 배경 — 장식적인 패턴이나 그라데이션 없음 (미묘한 경우 제외)
- 산세리프 글꼴 — Arial, Helvetica 또는 Computer Modern; 최소 14pt
- 미묘한 색상 팔레트 — 무지개 색상이 아님; 3-5개의 조화로운 색상 사용
- 인쇄 친화적 — 회색조로도 읽을 수 있어야 함 (많은 리뷰어가 논문을 인쇄함)
- 전문적인 테두리 — 얇은(2-3px), 단색, 화려하지 않음
레이아웃 표준
- 수평 흐름 — 왼쪽에서 오른쪽이 파이프라인의 표준
- 명확한 그룹화 — 미묘한 배경 상자를 사용하여 관련 모듈 그룹화
- 일관된 크기 — 유사한 구성 요소는 유사한 크기를 가져야 함
- 균형 잡힌 여백 — 비좁지도 않고 듬성듬성하지도 않음
화살표 표준 (가장 중요)
- 두꺼운 선 — 최소 4-6px (가는 화살표는 인쇄 시 사라짐)
- 명확한 화살촉 — 크고 채워진 삼각형 머리
- 어두운 색상 — 검정색 또는 진회색(#333333); 유색 화살표 지양
- 라벨 필수 — 모든 화살표는 이를 통해 흐르는 데이터를 표시해야 함
- 교차 금지 — 화살표 교차를 피하기 위해 레이아웃 재구성
- 올바른 방향 — 화살표는 올바른 대상을 가리켜야 함!
시각적 매력 (科研风格 - 전문 학술 스타일)
목표: 보수적이지도 않고 화려하지도 않은, 균형 잡힌 디자인
✅ 권장 시각적 요소:
- 미묘한 그라데이션 채우기 — 우아한 그라데이션 채우기(같은 색 계열의 연한 것에서 진한 것으로), 화려하지 않음
- 둥근 모서리 — 둥근 사각형(6-10px 반경), 현대적이지만 과장되지 않음
- 명확한 시각적 위계 — 크기와 색상 깊이를 통해 계층 구분
- 일관된 색상 코딩 — 통일된 색 구성표(3-4가지 주요 색상)
- 내부 구조 — 큰 모듈 내부에 하위 구성 요소 표시(예: Encoder 내부의 레이어 구조)
- 전문적인 타이포그래피 — 명확한 레이블, 적절한 글꼴 크기 계층
✅ 색상 제안 (학술 전문):
- 입력: 부드러운 녹색 계열 (#10B981 / #34D399)
- 인코더: 전문적인 파란색 계열 (#2563EB / #3B82F6)
- 퓨전: 우아한 보라색 계열 (#7C3AED / #8B5CF6)
- 출력: 따뜻한 주황색 계열 (#EA580C / #F97316)
- 화살표: 검정색 또는 진회색 (#333333 / #1F2937)
- 배경: 순백색 (#FFFFFF), 무늬 없음
❌ 피해야 할 과도한 장식:
- ❌ 무지개 색 구성 (Rainbow color schemes)
- ❌ 무거운 그림자 효과 (Heavy drop shadows)
- ❌ 3D 효과 / 원근감 (3D effects / perspective)
- ❌ 과도한 그라데이션 (Excessive gradients)
- ❌ 클립 아트 / 만화 아이콘 (Clip art / cartoon icons)
- ❌ 배경의 장식 패턴 (Decorative patterns in background)
- ❌ 발광 효과 (Glowing effects)
- ❌ 너무 많은 작은 아이콘 (Too many small icons)
✓ 이상적인 시각 효과:
- 한눈에 전문적이고 명확해 보임
- 적절한 시각적 매력을 갖지만 주의를 산만하게 하지 않음
- CVPR/NeurIPS 논문의 미적 표준에 부합
- 인쇄 친화적 (회색조 모드에서도 명확하게 식별 가능)
- 정교하게 디자인된 학술 다이어그램처럼 보이며, PPT 템플릿처럼 보이지 않음
피해야 할 사항 (매우 중요)
- ❌ 무지개 색 구성 (너무 많은 색상)
- ❌ 가늘고 실처럼 얇은 화살표 (화살표는 두꺼워야 함)
- ❌ 레이블이 없는 연결
- ❌ 평범하고 지루한 사각형 (약간의 시각적 흥미 추가)
- ❌ 그림자/광원/아이콘으로 과도하게 장식 (너무 화려함)
- ❌ 인쇄 시 읽을 수 없는 작은 텍스트
- ❌ 잘못된 화살표 방향 — 용납할 수 없음!
범위
| 그림 유형 | 품질 | 예시 |
|---|---|---|
| 아키텍처 다이어그램 | 우수 | 모델 아키텍처, 파이프라인, 인코더-디코더 |
| 방법론 설명도 | 우수 | 개념도, 알고리즘 순서도 |
| 개념도 | 좋음 | 비교 다이어그램, 분류 트리 |
다음 용도에는 적합하지 않음: 통계 플롯 (/paper-figure 사용), 실사 이미지
워크플로우: 모든 단계를 반드시 실행
0단계: 사전 점검
# API 키 확인
if [ -z "$GEMINI_API_KEY" ]; then
echo "오류: GEMINI_API_KEY가 설정되지 않음"
echo "키 받기: https://aistudio.google.com/app/apikey"
echo "설정: export GEMINI_API_KEY='your-key'"
exit 1
fi
# 출력 디렉토리 생성
mkdir -p figures/ai_generated
1단계: Claude가 그림 계획 (현재 위치)
매우 중요: Claude는 먼저 사용자의 요청을 분석하고 상세한 프롬프트를 생성해야 합니다.
입력 구문 분석: $ARGUMENTS
Claude의 작업:
- 사용자가 원하는 그림 이해
- 모든 구성 요소, 연결, 데이터 흐름 식별
- Gemini를 위한 상세하고 구조화된 프롬프트 생성
- 스타일 요구 사항 및 시각적 매력 요구 사항 포함
Claude가 생성할 프롬프트 템플릿:
CVPR/ICLR/NeurIPS 표준을 따르는 전문적이고 시각적으로 매력적인 출판 품질의 학술 다이어그램을 생성합니다.
## 시각적 스타일: 科研风格 (학술 전문 스타일)
### 목표: 균형 — 보수적이지도 않고 화려하지도 않음
#### 권장 사항:
- **미묘한 그라데이션** — 같은 색 계열의 우아한 그라데이션(예: #2563EB → #3B82F6), 여러 색상의 화려함 없음
- **둥근 모서리** — 둥근 사각형(6-10px), 현대적 감각
- **명확한 시각적 위계** — 크기와 색상 깊이를 통해 계층 구분
- **내부 구조** — 큰 모듈 내부에 하위 구성 요소 구조 표시
- **일관된 색상 코딩** — 통일된 3-4색 구성
- **전문적인 마감** — 정교하지만 과장되지 않음
#### 금지 사항:
- ❌ 무지개/다색 그라데이션
- ❌ 무거운 그림자 효과
- ❌ 3D 효과 / 원근감
- ❌ 발광 효과
- ❌ 과도한 장식용 아이콘
- ❌ 평범하고 지루한 사각형
#### 이상적인 효과:
최상위 학회 논문의 정교하게 디자인된 아키텍처 다이어그램처럼 보여야 함 — 전문적이고, 명확하며, 적절한 시각적 매력을 가짐
## 그림 유형
[아키텍처 다이어그램 / 파이프라인 / 비교 / 기타]
## 포함할 구성 요소 (내용에 대해 구체적으로)
1. [구성 요소 1]:
- 레이블: "[정확한 텍스트]"
- 하위 레이블: "[더 작은 아래 텍스트]"
- 위치: [왼쪽/중앙/오른쪽, 위쪽/중앙/아래쪽]
- 스타일: [테두리 색상, 채우기, 내부 구조]
2. [구성 요소 2]: ...
## 레이아웃
- 방향: [왼쪽에서 오른쪽 / 위쪽에서 아래쪽]
- 간격: [좁음 / 보통 / 넓음]
- 그룹화: [구성 요소를 그룹화하는 방법]
## 연결 (방향을 명확히)
정확한 화살표 사양:
1. [구성 요소 A] → [구성 요소 B]: 화살표가 A에서 B로 이동, 레이블 "[데이터 유형]"
2. [구성 요소 C] → [구성 요소 D]: 화살표가 C에서 D로 이동, 레이블 "[데이터 유형]"
...
확인: 각 화살표는 올바른 대상을 가리켜야 합니다!
## 스타일 요구 사항 (CVPR/ICLR/NeurIPS 표준)
### 시각적 스타일
- 색상 팔레트: 전문적인 학술 색상
- 입력: 녹색 (#10B981)
- 인코더: 파란색 (#2563EB)
- 퓨전 모듈: 보라색 (#7C3AED)
- 출력: 주황색 (#EA580C)
- 글꼴: 산세리프 (Arial/Helvetica), 최소 14pt, 레이블은 굵게
- 배경: 깔끔한 흰색, 패턴 없음
- 블록: 둥근 사각형(8-12px 반경), 미묘한 그라데이션 채우기, 유색 테두리(2-3px)
- 깊이 효과를 위한 미묘한 그림자
- 인쇄 친화적 (회색조로도 작동해야 함)
### 중요: 화살표 및 데이터 흐름 요구 사항
1. **모든 화살표는 매우 두꺼워야 함** - 최소 5-6px 선 두께
2. **모든 화살표에는 명확한 화살촉이 있어야 함** - 크고 보이는 삼각형 머리
3. **모든 화살표는 검정색 또는 진회색이어야 함** - 유색이 아님
4. **모든 화살표에 레이블 지정** - 어떤 데이터가 흐르는지 표시
5. **화살표 방향 확인** - 각 화살표는 올바른 대상을 가리켜야 함
6. **모호한 연결 없음** - 모든 화살표는 명확한 출발지와 목적지를 가져야 함
### 논리적 명확성 요구 사항
1. **데이터 흐름이 즉시 명확해야 함** - 뷰어가 파이프라인을 이해할 수 있어야 함
...[번역을 위해 잘림]
(참고: 원본 SKILL.md의 나머지 부분은 번역되었지만 공간 제약으로 인해 위와 같이 잘렸습니다. 실제 출력은 전체 문서의 완전한 번역본입니다.)