PaperBanana — Academic Illustration Generator
논문 텍스트로부터 publication-ready 학술 일러스트레이션을 자동 생성한다. 5개 에이전트(Retriever, Planner, Stylist, Visualizer, Critic)가 협력하여 방법론 다이어그램, 통계 차트, 시스템 아키텍처 등을 생성하고 반복 개선한다.
사전 요구사항
paperbanana[mcp]패키지:pip install paperbanana[mcp]- 환경변수
GOOGLE_API_KEY설정 (Google AI Studio 발급) - MCP 서버 등록 시:
claude mcp add paperbanana -e GOOGLE_API_KEY=<key> -- uvx --from "paperbanana[mcp]" paperbanana-mcp
핵심 명령어
Methodology Diagram 생성
논문 방법론 텍스트를 입력하면 publication-quality 다이어그램을 생성한다.
paperbanana generate \
--input <텍스트_파일.txt> \
--caption "<Figure 캡션>" \
--optimize --auto
주요 옵션:
--input/-i: 방법론 텍스트 파일(.txt) 또는 논문 PDF(.pdf)--caption/-c: communicative intent (그림이 전달해야 할 핵심 메시지)--optimize: 입력 전처리로 품질 향상--auto: Critic이 만족할 때까지 자동 반복--iterations N/-n: 수동 반복 횟수 (기본 3)--format [png|jpeg|webp]: 출력 포맷
PDF 입력 시:
paperbanana generate \
--input paper.pdf \
--caption "Overview of our framework" \
--pdf-pages "3-8" \
--optimize --auto
Statistical Plot 생성
CSV 데이터에서 통계 차트를 Matplotlib 코드로 생성한다(수학적 정확성 보장).
paperbanana plot \
--data <결과.csv> \
--intent "<원하는 차트 설명>"
품질 평가
생성된 다이어그램을 참조 이미지와 비교 평가한다. Faithfulness, Readability, Conciseness, Aesthetics 4가지 기준.
paperbanana evaluate \
--generated <생성된_이미지.png> \
--reference <참조_이미지.png> \
--context <원본_텍스트.txt> \
--caption "<캡션>"
이전 결과 수정
사용자 피드백을 반영하여 이전 결과에서 이어서 수정한다.
paperbanana generate --continue --feedback "화살표를 더 굵게 해줘"
paperbanana generate --continue-run <run_ID> --iterations 3
배치 생성
논문 내 여러 figure를 한 번에 생성한다.
paperbanana batch --manifest manifest.yaml --optimize
manifest 형식:
items:
- input: method1.txt
caption: "Encoder-decoder overview"
id: fig1
- input: method2.txt
caption: "Training pipeline"
id: fig2
Python API
코드 레벨에서 직접 호출할 때:
import asyncio
from paperbanana import PaperBananaPipeline, GenerationInput, DiagramType
from paperbanana.core.config import Settings
settings = Settings(
vlm_provider="google",
vlm_model="gemini-2.5-pro",
image_provider="google",
image_model="gemini-2.5-flash",
optimize_inputs=True,
auto_refine=True,
)
pipeline = PaperBananaPipeline(settings=settings)
result = asyncio.run(pipeline.generate(
GenerationInput(
source_context="Our framework consists of...",
communicative_intent="Overview of the proposed method.",
diagram_type=DiagramType.METHODOLOGY,
)
))
print(f"Output: {result.image_path}")
워크플로우
- 사용자가 논문 텍스트나 PDF를 제공하면, figure로 만들 부분을 파악한다
- 적절한 caption(communicative intent)을 함께 작성한다 — 이것이 그림의 핵심 메시지가 된다
paperbanana generate로 생성하고 결과 이미지를 사용자에게 보여준다- 사용자 피드백이 있으면
--continue --feedback으로 수정한다 - 최종 결과물을 workspace 폴더에 저장한다
출력 구조
outputs/run_<timestamp>_<hash>/
├── final_output.png # 최종 이미지
├── metadata.json # 생성 메타데이터
├── iterations/ # 반복 과정
│ ├── iteration_0.png
│ └── iteration_1.png
└── intermediate_states/ # 중간 상태
사용 한도 참고 (Gemini API Tier 2)
그림 1장당 약 1020 API 호출을 소비한다.
Tier 2 기준 일일 500요청이면 하루 약 2550장의 figure를 생성할 수 있다.
Rate limit 에러 시 잠시 후 재시도하거나 Flash-Lite 모델로 전환한다.