name: paper-orchestra description: "세계 최고 수준의 end-to-end SCI 논문 작성 파이프라인. AI Scientist(Sakana), ResearchAgent(KAIST), Agent Laboratory, PaperOrchestra(Google) 등 모든 기존 시스템을 벤치마킹하고 초월. HITL 브레인스토밍 → Novelty Radar → Story Arc → 12개 전문 에이전트 → Multi-Persona Review → 한영 동시 작성 → HTML/DOCX/PDF 최종 산출물. /paper-orchestra 또는 '논문 써줘', 'SCI 논문', '논문 자동 작성' 등으로 트리거." allowed-tools:
- Read
- Write
- Edit
- Bash
- Agent
- WebFetch
- WebSearch
- AskUserQuestion
PaperOrchestra Ultra: 세계 최고 SCI 논문 작성 시스템
벤치마크 비교
| 시스템 | 기관 | HITL | 에이전트 | 출력 | 신규성 분석 | 다국어 | 비용 | |--------|------|------|---------|------|------------|--------|------| | AI Scientist | Sakana AI | ✗ | 4단계 | PDF | 기초 | ✗ | $15/편 | | ResearchAgent | KAIST | ✗ | 3-tier | PDF | ✗ | ✗ | - | | Agent Laboratory | Si et al. | △ (제한) | 3단계 | 보고서 | ✗ | ✗ | $2.3/편 | | PaperOrchestra | Google | ✗ | 5개 | PDF | ✗ | ✗ | - | | PaperOrchestra Ultra | Here | ✓ 4 체크포인트 | 12개 | HTML+DOCX+PDF | ✓ 심층 | ✓ 한+영 | 무료 |
모든 기존 시스템 대비 핵심 우위:
- AI Scientist의 약점(HITL 없음, 시각 처리 불가, ML에만 한정) → 완전 극복
- Google PaperOrchestra의 약점(단일 리뷰어, 다국어 없음, 다포맷 없음) → 완전 극복
- Agent Laboratory의 약점(실험 코드 필요, 제한적 HITL) → 완전 극복
전체 파이프라인 (한눈에)
[입력: 아이디어 조각 / 실험 결과 / 기존 메모 — 어떤 형태든 OK]
│
╔═════════╧═══════════════════════════════════════════════╗
║ STAGE 1: 저자 ↔ AI 전략 브레인스토밍 (4라운드) ║
║ → 문제정의 · 기여정제 · 데이터확인 · Venue전략 ║
╚═════════╤═══════════════════════════════════════════════╝
│ ★ HITL #1: 주제·기여·방향 확정
╔═════════╧═══════════════════════════════════════════════╗
║ STAGE 2: 연구 계획 + Venue Intelligence ║
║ → 논문구조 · 학회맞춤분석 · 리뷰어성향파악 ║
╚═════════╤═══════════════════════════════════════════════╝
│ ★ HITL #2: 계획·제목·학회 확정
╔═════════╧═══════════════════════════════════════════════╗
║ STAGE 3: 12개 에이전트 오케스트레이션 ║
║ ║
║ [A01] Outline Architect ║
║ ↓ ║
║ [A02] Novelty Radar [A03] Story Arc [A04] Venue ║ ← 병렬 3개
║ Analyzer Designer Optimizer ║
║ ↓───────────────────────↓──────────────↓ ║
║ [A05] Plotting [A06] Literature ║ ← 병렬 2개
║ Virtuoso Intelligence ║
║ ↓───────────────────────↓ ║
║ [A07] Section Writing Maestro ║
║ ↓ ║
║ [A08] Stats [A09] Reproducibility ║ ← 병렬 2개
║ Sentinel Packager ║
║ ↓───────────────────────↓ ║
║ [A10] Multi-Persona Adversarial Review (3 페르소나) ║
║ ↓ ║
║ [A11] Korean Translator [A12] Submission Readiness ║ ← 병렬 2개
║ ║
║ → draft_en.md + draft_ko.md 생성 ║
╚═════════╤═══════════════════════════════════════════════╝
│ ★ HITL #3: 초안 검토·수정 (반복 가능)
╔═════════╧═══════════════════════════════════════════════╗
║ STAGE 4: 수정 반영 루프 ║
╚═════════╤═══════════════════════════════════════════════╝
│ ★ HITL #4: 시각화 스타일 + 최종 출력 형식 확정
╔═════════╧═══════════════════════════════════════════════╗
║ STAGE 5: 최종 시각화 + 산출물 생성 ║
║ → HTML 웹문서 + DOCX 워드 + PDF (LaTeX/pandoc) + ZIP ║
╚═════════════════════════════════════════════════════════╝
STAGE 1: 저자 ↔ AI 전략 브레인스토밍
Step 1-A: 현황 파악 및 파일 수집
AskUserQuestion (한 번에 최대 4개 질문):
[Q1] 현재 연구 단계는?
a) 아이디어만 있음 (데이터/실험 없음)
b) 실험 일부 완료 (결과 있음)
c) 실험 완전 완료, 정리 필요
d) 기존 초안/메모/노트 파일 있음
[Q2] 목표 발표 형식 및 학회는?
a) 탑티어 AI/ML (NeurIPS / ICML / ICLR / CVPR / ECCV)
b) 주요 AI/NLP (AAAI / ACL / EMNLP / ICCV)
c) 자연과학 저널 (Nature / Science / Cell)
d) 공학/의학 저널 (IEEE / ACM / NEJM / Lancet)
e) arXiv / 기술 보고서 / 기타
[Q3] 연구 분야 (자유 입력 — 구체적일수록 좋음)
예: "CLIP 기반 few-shot medical image segmentation"
[Q4] 출력 언어 선택
a) 영문만 (English only)
b) 한국어만
c) 영문 + 한국어 동시 생성 (권장 — 투고용 영문 + 공유용 한국어)
기존 파일 제공 시 즉시 읽기:
# 파일 경로가 주어지면 읽고 내용을 파악
[ -n "$PROVIDED_FILE" ] && cat "$PROVIDED_FILE"
관련 최신 연구 동향 사전 조사 (WebSearch):
"[연구 분야] latest 2024 2025 survey arxiv"
"[연구 분야] state of the art benchmark"
Step 1-B: 4라운드 심층 브레인스토밍
각 라운드는 AskUserQuestion으로 진행. AI가 조사한 내용을 먼저 제시하고, 저자가 방향을 결정.
[라운드 1] 문제 정의 — "왜 이 연구가 반드시 필요한가?"
AI 먼저 발언:
"제가 조사한 결과 현재 [분야]에서 가장 큰 미해결 문제는 [X]입니다. 특히 [최근 논문 A, B]는 [한계 Y]를 보고했습니다. 우리 연구가 이를 해결한다면..."
AskUserQuestion:
1. 이 연구가 해결하는 핵심 문제를 한 문장으로 표현한다면?
→ AI가 3가지 버전 제안 → 저자가 선택/수정
2. 기존 최선의 방법(SOTA)이 왜 이 문제를 완전히 못 푸는가?
→ "근본적 한계"를 함께 정의
3. 이 연구가 없다면 무엇이 불가능한가? (Impact 정의)
[라운드 2] 기여 정제 — "무엇이 진짜 새로운가?"
AI가 먼저 후보 기여 5개를 제안 (유사 논문 분석 기반):
후보 기여 (AI 분석):
[T] Technical novelty: [새로운 방법론/알고리즘]
[E] Empirical novelty: [새로운 실험/벤치마크 결과]
[P] Practical impact: [실제 응용 가능성]
[I] Theoretical insight: [이론적 이해 증진]
[D] Dataset/Resource: [새로운 데이터셋/코드/도구]
AskUserQuestion:
위 후보 중 우리 연구에서 가장 강한 기여는?
(우선순위 Top 3 선택 + 표현 수정)
[라운드 3] 실험 데이터 점검 — "증거가 충분한가?"
AskUserQuestion:
현재 보유한 실험 결과를 공유해주세요:
1. 주요 성능 수치 (표/숫자 형태로 입력)
2. 비교 대상 베이스라인 (이미 있으면 나열)
3. 아직 없는 실험 중 꼭 필요한 것은?
→ AI가 "이것만 있으면 된다" vs "있으면 좋다" 분류
[라운드 4] Venue 전략 — "어디에 내야 가장 임팩트가 큰가?"
AI가 연구 내용 분석 후 추천:
추천 학회 Top 3 (AI 분석):
┌─────────────────────────────────────────────────────┐
│ 1순위: [학회명] │
│ 채택률: ~X% | 마감: [DATE] | IF/순위: [info] │
│ 이유: 이 연구의 [핵심 기여]가 해당 학회의 [트렌드]와 일치│
│ 주의: [피해야 할 점] │
├─────────────────────────────────────────────────────┤
│ 2순위: [학회명] ... │
├─────────────────────────────────────────────────────┤
│ 3순위: [학회명] ... │
└─────────────────────────────────────────────────────┘
Step 1-C: 브레인스토밍 결과 저장
PAPER_DIR="paper_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$PAPER_DIR"/{figures/{draft,final},references,sections,logs,output,assets}
LANG="${SELECTED_LANG:-both}" # 언어 설정 저장
$PAPER_DIR/logs/brainstorm.md 저장 (전체 대화 요약 + 핵심 결정사항).
★ HITL #1 — 브레인스토밍 결과 확인
결과 요약을 전체 표시 후 AskUserQuestion:
a) 확정 → STAGE 2 (연구 계획) 진행
b) 특정 라운드 수정 → 어떤 라운드? 무엇을?
c) 방향 자체를 바꾸고 싶음 → STAGE 1 재시작
STAGE 2: 연구 계획 + Venue Intelligence
Step 2-A: Venue Intelligence 심층 분석
목표 학회의 리뷰어 성향과 성공 패턴 분석:
# 학회별 최근 2년 accepted paper 패턴 웹 조사
# "site:openreview.net [VENUE] 2024 accepted"
# "[VENUE] 2024 best paper award"
$PAPER_DIR/logs/venue_intel.md 작성:
## [VENUE] Venue Intelligence Report
### 리뷰어가 중시하는 요소 (중요도 순)
1. Technical novelty & soundness
2. Experimental rigor & reproducibility
3. Clarity & presentation
4. Broader impact & motivation
5. Related work completeness
### 이 학회에서 성공하는 논문의 패턴
- Abstract 스타일: [분석 결과]
- 평균 figure 수: ~X개
- 평균 인용 수: ~XX개
- Ablation: 필수/선택
- 특이사항: [학회별 특성]
### 우리 논문에 특화된 최적화 전략
- 강조할 점: [...]
- 피해야 할 표현: [...]
- 반드시 인용해야 할 최근 논문: [...]
Step 2-B: 종합 연구 계획서 작성
$PAPER_DIR/logs/research_plan.md:
# Research Plan v1.0
## 제목 후보 (AI 생성 3개)
1. [명확하고 직접적 — "X for Y via Z"]
2. [기법 강조 — "Z: A Novel Approach to X"]
3. [임팩트 강조 — "Towards Scalable Y: A Z Framework"]
## 핵심 기여 (확정)
1. **[C1 — Technical]**: [1-2 문장 설명]
2. **[C2 — Empirical]**: [1-2 문장 설명]
3. **[C3 — Impact]**: [1-2 문장 설명]
## 섹션 계획
| 섹션 | 목표 분량 | 핵심 포인트 | Story Arc 연결 |
|------|-----------|------------|----------------|
| Abstract | 200단어 | 5문장 구조 | Full arc |
| Introduction | ~1p | Hook→Gap→Ours→Contributions | Opening |
| Related Work | ~0.75p | 3방향, 차별점 명시 | Tension |
| Method | ~1.5p | Framework+Details+수식 | Insight |
| Experiments | ~1.5p | Setup+Results+Ablation | Proof |
| Discussion | ~0.4p | Interpretation+Limits | Resolution |
| Conclusion | ~0.25p | Summary+Future | Takeaway |
## 시각화 계획
| 번호 | 타입 | 내용 | Story Arc 역할 |
|------|------|------|----------------|
| Fig 1 | Architecture | 전체 시스템 | "우리 방법" |
| Fig 2 | Comparison | SOTA vs Ours | "증거" |
| Fig 3 | Ablation | 구성요소별 기여 | "왜 됨" |
| Table 1 | Main Results | 수치 비교 | "핵심 증거" |
## 문헌 조사 키워드 (A06용)
- Primary: [...]
- Background: [...]
- Baselines: [...]
★ HITL #2 — 연구 계획 확정
a) 확정 → STAGE 3 (12개 에이전트) 실행
b) 제목 선택/수정
c) 섹션 구조 조정
d) 기여 표현 변경
제목 선택은 AskUserQuestion 단독 질문으로:
제목 3개 중 선택 or 직접 입력:
a) [Title 1]
b) [Title 2]
c) [Title 3]
d) 직접 입력
STAGE 3: 12개 에이전트 오케스트레이션
진행 상황을 실시간으로 보고:
[PaperOrchestra Ultra] ▶ STAGE 3 시작
✓ A01 Outline Architect: 완료 (XX초)
⟳ A02 Novelty Radar: 실행 중...
⟳ A03 Story Arc Designer: 실행 중... (병렬)
⟳ A04 Venue Optimizer: 실행 중... (병렬)
...
[A01] Outline Architect
Research Plan의 각 섹션을 상세 bullet-point outline으로 확장. 이후 A07 Writing Maestro가 이를 완전한 prose로 변환.
$PAPER_DIR/logs/section_outlines.md 저장.
핵심 원칙: outline 단계에서 각 단락의 논리 흐름을 설계 (topic sentence → evidence → connection).
[A02] Novelty Radar (병렬)
AI Scientist에 없는 우리만의 기능 — 집필 전에 신규성을 객관 측정.
# Semantic Scholar + arXiv 에서 가장 유사한 논문 Top 10 검색
curl -s "https://api.semanticscholar.org/graph/v1/paper/search?\
query=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$RESEARCH_QUERY'))")&\
fields=title,authors,year,abstract,citationCount,externalIds&limit=10"
$PAPER_DIR/logs/novelty_radar.md 생성:
## Novelty Radar 분석 결과
### 가장 유사한 기존 연구
| 논문 | 유사도 추정 | 우리와의 차이점 |
|------|-----------|--------------|
| [논문 A] (2024) | 높음 | 우리는 X 추가, Y 없음 |
| [논문 B] (2024) | 중간 | ... |
| ... | | |
### Novelty 평가
- Technical novelty: HIGH / MEDIUM / LOW + 이유
- Empirical novelty: HIGH / MEDIUM / LOW + 이유
- 전체 점수: X/10
### Related Work 필수 인용 (A06 지시용)
- 반드시 구분해야 할 논문: [목록]
- 우리 우위를 보여줄 논문: [목록]
### Writing 강화 지시 (A07 전달)
[Novelty가 낮은 경우 차별화 전략 자동 생성]
[A03] Story Arc Designer (병렬)
기존 모든 시스템에 없는 기능 — 논문 전체를 하나의 compelling narrative로 설계.
핵심 원리: 좋은 논문은 좋은 이야기다.
독자는 논리를 기억하지 않고 이야기를 기억한다.
$PAPER_DIR/logs/story_arc.md 생성:
## Story Arc 설계
### ① Opening Hook (Abstract 1문장 + Introduction 단락 1)
"[독자를 즉시 끌어들이는 문장 — 놀라운 사실, 역설, 또는 명확한 고통]"
예시 패턴:
- 역설형: "Despite X being fundamental, Y remains unsolved."
- 수치형: "Every year, [X million/billion] [resource] is lost due to [problem]."
- 의문형: "What if [현재 불가능한 것]were possible?"
### ② Central Tension (Introduction + Related Work)
"기존 방법들은 [한계]를 극복하지 못했다. [논문 A]는 [방법]으로 시도했지만 [문제]. [논문 B]는 [방법]으로 시도했지만 [다른 문제]."
### ③ The Insight (Introduction → Method 전환)
"우리의 핵심 발견은 [아이디어]. 이를 통해 [한계]를 [해결 방법]으로 극복할 수 있다."
### ④ Proof Points (Experiments)
1. [메인 증거: SOTA 대비 X% 개선]
2. [Ablation: 각 구성요소의 필요성 증명]
3. [Analysis: 왜 이 방법이 작동하는지 직관 제공]
### ⑤ Resolution & Takeaway (Discussion + Conclusion)
"이 연구는 [분야]에 [변화]를 가져온다. 독자가 기억해야 할 한 가지: [핵심 메시지]"
### A07 Writing Maestro에 전달할 지시
- Abstract: Hook → Gap → Insight → Results → Impact
- Introduction: Hook(단락1) → Context(2) → Gap(3) → Ours(4) → Contributions(리스트) → Roadmap
- 각 Experiments 단락: Claim → Evidence → Interpretation
[A04] Venue Optimizer (병렬)
Venue Intelligence(Step 2-A)를 바탕으로 학회별 최적화 지시를 생성.
$PAPER_DIR/logs/venue_optimization.md:
- 학회별 선호 용어/표현
- 강조해야 할 섹션 (일부 학회는 Broader Impact 필수)
- 익명화 요건 (double-blind 여부)
- 페이지 제한 및 레이아웃
A07 Writing Maestro에 구체적 지시 전달.
[A05] Plotting Virtuoso (병렬, A01 완료 후)
시각화 계획에 따라 모든 그림과 표를 초안 버전으로 생성.
# $PAPER_DIR/figures/draft/ 에 저장
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.gridspec as gridspec
import numpy as np
# 출판 품질 기본값
plt.rcParams.update({
'font.family': 'serif',
'font.size': 11,
'axes.labelsize': 11,
'axes.titlesize': 12,
'legend.fontsize': 10,
'figure.dpi': 300,
'savefig.bbox': 'tight',
'savefig.pad_inches': 0.05,
})
# --- Figure 1: 시스템 아키텍처 ---
# matplotlib 또는 graphviz 로 개념도 생성
# 단순한 박스+화살표는 matplotlib patches로 충분
# --- Figure 2: 성능 비교 Bar Chart ---
methods = ['Ours', 'Baseline A', 'Baseline B', 'Baseline C']
scores = [실험_수치들]
colors = ['#2B4162', '#9B9B9B', '#BBBBBB', '#CCCCCC']
fig, ax = plt.subplots(figsize=(6, 4))
bars = ax.bar(methods, scores, color=colors, edgecolor='black', linewidth=0.5)
ax.set_ylabel('Performance Metric')
ax.set_title('Comparison with Baselines')
# error bars 추가 (있는 경우)
plt.savefig(f'$PAPER_DIR/figures/draft/fig2_comparison.pdf')
# --- Figure 3: Ablation Study ---
# --- Table 1: SOTA 비교 (LaTeX 형식) ---
# scientific-schematics 스킬 설치 시 아키텍처 다이어그램 활용
scientific-schematics 스킬 감지:
[ -f ~/.claude/skills/scientific-schematics/SKILL.md ] && \
echo "scientific-schematics 사용 가능 — 개념도에 활용" || \
echo "matplotlib으로 직접 생성"
$PAPER_DIR/logs/figure_captions.md 저장 (각 그림의 캡션 초안).
[A06] Literature Intelligence (병렬, A01 완료 후)
3중 검증 시스템 — 환각 인용 완전 차단 (기존 모든 시스템 초월).
검색 Layer 1: Semantic Scholar
for KW in "${PRIMARY_KEYWORDS[@]}"; do
URL="https://api.semanticscholar.org/graph/v1/paper/search"
PARAMS="query=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$KW'))")&fields=title,authors,year,abstract,citationCount,externalIds,venue&limit=20"
curl -s "$URL?$PARAMS" -o "$PAPER_DIR/references/ss_$(echo $KW | tr ' ' '_').json"
sleep 0.5
done
검색 Layer 2: OpenAlex (무료 무제한)
for KW in "${PRIMARY_KEYWORDS[@]}"; do
curl -s "https://api.openalex.org/works?search=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$KW'))")&per_page=20&select=id,doi,title,authorships,publication_year,cited_by_count,primary_location" \
-o "$PAPER_DIR/references/oa_$(echo $KW | tr ' ' '_').json"
sleep 0.3
done
검증 Layer 3: CrossRef DOI 검증
import json, requests, time, glob
# 수집된 모든 논문 통합
papers = []
for f in glob.glob("$PAPER_DIR/references/*.json"):
try:
data = json.load(open(f))
papers.extend(data.get('data', data.get('results', [])))
except: pass
# CrossRef 검증 — 실제 존재하는 논문만 통과
verified = []
for p in papers:
doi = p.get('doi') or p.get('externalIds', {}).get('DOI', '')
if not doi: continue
r = requests.get(f"https://api.crossref.org/works/{doi}",
headers={"User-Agent": "PaperOrchestra/2.0 (research tool)"}, timeout=5)
if r.status_code == 200:
verified.append(p)
time.sleep(0.2)
print(f"3중 검증 완료: {len(verified)}개 인용 확보")
우선순위 기준:
- Novelty Radar(A02)에서 지정한 필수 인용 논문 우선
- 인용수: 최근 3년 20+, 3-7년 100+, 7년+ 500+
- Venue 티어: Nature/Science > NeurIPS/ICML/ICLR/CVPR > AAAI/ICCV/ACL > 기타
목표: 60개+ 인용 (Semantic Scholar 1중만 사용하는 Google 45개 초과)
$PAPER_DIR/references/bibliography.bib 생성
$PAPER_DIR/references/related_work_map.md 생성 (인용 지형도 — 어떤 논문이 어느 섹션에 들어가야 하는지)
[A07] Section Writing Maestro (A01~A06 완료 후)
모든 에이전트의 결과물을 통합하여 완전한 LaTeX 논문 작성.
입력 통합:
- A01의 상세 outline
- A02의 Novelty 차별화 지시
- A03의 Story Arc 구조
- A04의 Venue 최적화 지시
- A05의 figure/table 위치 및 캡션
- A06의 인용 지형도
절대 원칙:
✓ 모든 텍스트는 완전한 단락 (flowing prose)
✓ Contributions 리스트만 bullet 허용 (Introduction 한 곳)
✓ Story Arc를 따라 compelling narrative 유지
✓ 각 단락: topic sentence → evidence → transition
✓ 수식: equation 환경, 알고리즘: algorithm2e 환경
✗ Abstract에 레이블(Background:, Methods: 등) 절대 금지
✗ Results/Discussion 섹션에 bullet list 금지
섹션별 작성 지침:
★ Abstract (200-250 단어, 5문장 구조)
문장 1: Context hook — "X is critical for Y, yet..."
문장 2: Gap — "Existing methods fail because..."
문장 3-4: Our approach — "We propose [METHOD], which [핵심 아이디어]. [방법 한 문장]"
문장 5: Results — "Experiments on [datasets] show [수치 포함]"
문장 6: Impact — "Our approach enables [broader application]"
★ Introduction (1 ~ 1.2 페이지)
단락 1: Opening Hook (A03 Story Arc의 ① 사용)
단락 2: 현재 SOTA와 한계 (A02 Novelty Radar 활용)
단락 3: 근본 원인 분석 ("The key challenge is...")
단락 4: Our Insight ("We observe that..." / "We hypothesize that...")
단락 5: 방법 개요 (기술적 접근 2-3문장)
Contributions 리스트 (bullet — 여기서만 허용):
• We propose [C1]...
• We demonstrate [C2]...
• We achieve [수치] on [benchmark] (Table X)
단락 6: "The rest of this paper is organized as follows..."
★ Related Work (0.75 ~ 1 페이지)
방향별 그룹 3-5개 (주제별, 절대 연대순/저자순 금지)
각 그룹 마지막 문장: "In contrast, our method [차별점]"
A02 Novelty Radar의 high-similarity 논문은 반드시 명시적 비교
★ Method (1.5 ~ 2 페이지)
Overview 단락 (Fig 1 참조)
구성요소별 상세 설명
핵심 수식 (equation 환경, 번호 부여)
알고리즘 박스 (해당 시)
복잡도 분석 (시간/공간)
"Putting it together" 요약 단락
★ Experiments (1.5 ~ 2 페이지)
4.1 Setup: 데이터셋, 베이스라인, 구현 세부사항, 평가지표
4.2 Main Results: Table 1 설명 + 수치 분석 + "이것이 의미하는 바"
4.3 Ablation Study: 각 구성요소 기여도 + 해석
4.4 Analysis: "왜 우리 방법이 효과적인가?" — 직관 제공
4.5 Qualitative Results (해당 시)
★ Discussion (0.3 ~ 0.5 페이지)
결과 해석과 broader impact
Limitations — 솔직하고 구체적으로 (리뷰어 신뢰 획득)
향후 연구 방향
★ Conclusion (0.2 ~ 0.3 페이지)
핵심 기여 재요약 (Introduction 그대로 반복 금지 — 확장/승화)
최종 impact statement
LaTeX 파일 구조:
$PAPER_DIR/
├── main.tex
├── sections/
│ ├── abstract.tex
│ ├── 01_introduction.tex
│ ├── 02_related_work.tex
│ ├── 03_method.tex
│ ├── 04_experiments.tex
│ ├── 05_discussion.tex
│ └── 06_conclusion.tex
├── figures/draft/
└── references/bibliography.bib
[A08] Stats Sentinel (병렬, A07 완료 후)
AI Scientist의 최대 약점(수치 오류)을 자동으로 방어.
$PAPER_DIR/logs/stats_report.md 자동 생성:
## 통계 검증 보고서
### ✓ 수치 일관성
[ ] 본문 수치 ↔ 표 수치 일치 여부 (불일치 목록)
[ ] 소수점 자릿수 통일 (일관성 체크)
[ ] 단위 표기 통일
### ✓ 통계적 유의성
[ ] Standard deviation / Standard error 표기 여부
[ ] Confidence interval 또는 p-value 보고
[ ] 권장 추가 위치: [목록]
### ✓ 비교 공정성
[ ] 베이스라인과 동일 조건 비교
[ ] 파라미터 수 / FLOPs 공정 비교 가능성
[ ] 재현 정보 (시드, 하이퍼파라미터) 존재
### 수정 지시 → A07 피드백
[발견된 이슈와 수정 방안]
발견된 이슈는 A07에 자동 피드백되어 해당 부분 재작성.
[A09] Reproducibility Packager (병렬, A07 완료 후)
재현 가능성 극대화 — 리뷰어 채택률 직결.
자동 생성하여 sections/appendix.tex에 추가:
% 알고리즘 박스
\begin{algorithm}[t]
\caption{[알고리즘 이름]}
\begin{algorithmic}[1]
\REQUIRE [입력 정의]
\ENSURE [출력 정의]
\STATE [단계 1]
\FOR{...}
\STATE [내용]
\ENDFOR
\RETURN [출력]
\end{algorithmic}
\end{algorithm}
% 하이퍼파라미터 표
\begin{table}[h]
\centering
\caption{Hyperparameter Configuration}
\begin{tabular}{lcc}
\toprule
Hyperparameter & Value & Search Range \\
\midrule
Learning rate & 1e-4 & [1e-5, 1e-3] \\
Batch size & 32 & \{16, 32, 64\} \\
...
\bottomrule
\end{tabular}
\end{table}
Data Availability Statement 자동 생성:
\section*{Data Availability}
The datasets used in this work are publicly available at [URL/reference].
Our code will be released at \url{https://github.com/[repo]} upon acceptance.
Implementation Details 표준화:
- Framework, GPU 스펙, 학습 시간, Random seed 포함
[A10] Multi-Persona Adversarial Review (A07+A08+A09 완료 후)
3개 독립 리뷰어 페르소나 동시 실행 — Google의 단일 리뷰어 완전 초월.
페르소나 1: The Iron Skeptic (철저한 회의론자)
이 분야 15년 경력의 베테랑 리뷰어. 모든 주장에 철저한 증거를 요구. 과장된 표현, 근거 없는 주장, 공정하지 않은 비교를 즉시 탐지.
평가 항목 (각 1-10):
- Novelty & Originality: X/10 [선행 연구 대비 진짜 새로운가?]
- Methodological Soundness: X/10 [방법론에 허점이 없는가?]
- Experimental Rigor: X/10 [비교가 공정하고 완전한가?]
- Reproducibility: X/10 [다른 팀이 재현할 수 있는가?]
- Writing Clarity: X/10 [모호한 표현이 없는가?]
종합: X/10 → Strong Reject / Reject / Borderline / Accept / Strong Accept
Major Concerns (이 중 하나라도 있으면 거절):
- [ ] ...
Minor Issues:
- [ ] ...
페르소나 2: The Enthusiastic Champion (혁신 발굴자)
혁신적 아이디어를 찾는 리뷰어. 약점보다 강점을 먼저 보고, 저자가 놓친 가치를 발견해 더 잘 전달하도록 돕는다.
이 논문의 진짜 가치 (저자가 충분히 강조 못 한 것):
- [발견 1]: 저자는 X를 언급했지만, 실제로는 Y가 더 중요한 기여다
- [발견 2]: [숨겨진 임팩트]
이 논문이 반드시 수락되어야 하는 이유 (1-3줄):
"..."
강점을 더 부각하는 방법:
- Abstract에서 [A]를 [B]로 바꾸면 임팩트가 강해진다
- Introduction의 [C] 단락을 [D] 방향으로 강화하면 된다
페르소나 3: The Domain Oracle (도메인 전문가)
이 세부 분야에서 최고 권위자. 논문 A, B, C를 인용 안 했다면 즉시 지적한다. 기술적 세부사항의 정확성을 꼼꼼히 검증.
관련 선행 연구 누락 체크:
- 반드시 인용했어야 할 논문: [목록]
- 인용했지만 잘못 비교한 논문: [목록]
기술적 정확성:
- 수식 X의 [항]은 실제로 [설명]인데 잘못 기술됨
- 용어 Y는 이 분야에서 [올바른 정의]로 사용해야 함
분야 표준 대비 평가:
- 이 분야에서 [VENUE] 논문의 평균 수준: [분석]
- 우리 논문의 수준: [평가]
Multi-Persona 종합 판정:
## 최종 종합 판정
| 페르소나 | 점수 | 판정 |
|---------|------|------|
| Iron Skeptic | X.X/10 | [판정] |
| Enthusiastic Champion | X.X/10 | [판정] |
| Domain Oracle | X.X/10 | [판정] |
| **가중 평균 (3:2:3)** | **X.X/10** | **[최종]** |
### 모든 페르소나 공통 수정 필요 사항 (반드시 반영)
- [ ] [공통 이슈 1]
- [ ] [공통 이슈 2]
### 채택 가능성 예측: [X%]
점수 7.5 미만 → A07에 피드백 자동 전달, 해당 섹션 재작성 (최대 3라운드)
[A11] Korean Translator (병렬, A07 완료 후, 언어 = both/ko 선택 시)
$PAPER_DIR/draft_ko.md 생성:
번역 원칙:
- 100% 한국어 독립 논문 (영문 직역 금지 — 한국 독자 맞춤 표현)
- 기술 용어: "용어 (Term)" 형식으로 첫 등장 시 병기
- 한국 학술지 (KIISE/KIPS/JKAIS) 스타일 가이드 준수
- 참고문헌은 원문 영어 유지
- 모든 수식, 표, 그림 캡션도 한국어 번역
[A12] Submission Readiness Checker (병렬, A07 완료 후)
$PAPER_DIR/logs/submission_checklist.md 자동 생성:
## 제출 준비성 체크 — [VENUE]
### 분량 요건
[ ] 현재: Xp / 제한: Yp → [OK / 초과 Np]
[ ] 익명화: 저자 정보 [포함/제외] (double-blind 요건: [해당/불해당])
[ ] 보조 자료(Supplementary): [필요/선택/불필요]
### 필수 섹션 완비
[x] Abstract ✓
[x] Introduction ✓ [x] Related Work ✓ [x] Method ✓
[x] Experiments ✓ [x] Limitations ✓ [x] Conclusion ✓
### 투명성 선언
[x] Data Availability Statement ✓
[x] Code Availability ✓
[ ] Acknowledgements / Funding — 입력 필요
[ ] Conflict of Interest Declaration
[ ] Ethics Statement (해당 연구 유형 시)
[ ] AI 작성 도구 사용 공시 (학회 정책 확인)
### 형식 요건
[ ] 그림 해상도: 모든 figure ≥ 300 DPI ✓/✗
[ ] 참고문헌 형식: [학회 스타일] 일치 여부
[ ] 각주 사용: [학회 허용 여부]
### 수정 필요 사항
[발견된 이슈 목록]
초안 파일 생성
모든 에이전트 완료 후:
$PAPER_DIR/draft_en.md:
---
title: "[논문 제목]"
target: "[VENUE]"
status: "Draft v1.0 — HITL Review Required"
date: "[DATE]"
---
# [논문 제목]
## Quality Dashboard
| 지표 | 값 | 기준 |
|------|-----|------|
| Novelty Score | X/10 | ≥7 권장 |
| Multi-Persona Review | X.X/10 | ≥7.5 목표 |
| Citations (3-verified) | N개 | ≥60 목표 |
| Stats Issues | N건 | 0 목표 |
| Submission Ready | X% | 100% 목표 |
---
[전체 논문 — 완전한 산문 형식]
---
## Appendix: Review Reports
[A10 Multi-Persona Review 전체]
## Appendix: Stats Validation
[A08 보고서]
## Appendix: Reproducibility Package
[A09 내용]
## Appendix: Submission Checklist
[A12 내용]
★ HITL #3 — 초안 검토
핵심 지표 먼저 표시:
╔══════════════════════════════════════════════════════════╗
║ 초안 완성 보고 ║
╠══════════════════════════════════════════════════════════╣
║ Novelty Score: X/10 ║
║ Multi-Persona Review: X.X/10 ║
║ ├ Iron Skeptic: X/10 → [판정] ║
║ ├ Champion: X/10 → [판정] ║
║ └ Domain Oracle: X/10 → [판정] ║
║ 인용 수 (3중 검증): N개 ║
║ 그림 수: N개 ║
║ Stats 이슈: N건 ║
║ 제출 준비도: X% ║
║ 예상 채택 가능성: X% ║
╚══════════════════════════════════════════════════════════╝
AskUserQuestion:
a) 초안 승인 → STAGE 5 최종 산출물 생성
b) 특정 섹션 수정 → 수정 대상과 방향 입력
c) AI 리뷰 피드백 자동 전체 반영 후 재검토
d) 처음부터 재작성 (이유 입력)
b) 선택 시 — 섹션 복수 선택 + 자유 입력 지시:
수정할 섹션:
□ Abstract □ Introduction □ Related Work
□ Method □ Experiments □ Discussion/Conclusion
□ References □ 그림/표
수정 완료 후 체크포인트 #3 반복.
STAGE 4: 수정 반영 루프
저자 지시 + AI 리뷰 피드백 통합 → 지정 섹션 재작성 → draft 업데이트.
$PAPER_DIR/logs/revision_history.md 기록:
| 시각 | 라운드 | 대상 섹션 | 변경 내용 | 트리거 |
|------|--------|-----------|-----------|--------|
| [DATETIME] | R1 | Introduction | 기여 표현 강화 | 저자 |
| [DATETIME] | R1 | Experiments | 통계 추가 | A08 자동 |
★ HITL #4 — 시각화 스타일 + 최종 출력 확정
AskUserQuestion:
[Q1] 최종 시각화 스타일:
a) 학술 논문 (흑백 중심, 해칭 패턴)
b) 모던 컬러 (접근성 우선, WCAG 2.1 준수)
c) Nature/Science 고급 저널 스타일
d) 현재 초안 그대로
[Q2] 최종 출력 형식 (복수 선택):
☑ HTML 웹 문서
☑ DOCX 워드 문서
☑ PDF (LaTeX or pandoc)
☑ LaTeX 소스 (학회 제출용 ZIP)
□ 한국어 버전 동시 출력
□ 슬라이드 초안 (PowerPoint/Beamer)
STAGE 5: 최종 시각화 + 산출물 생성
Step 5-A: 최종 Figure 생성
확정 스타일로 모든 figure 재생성 → $PAPER_DIR/figures/final/:
STYLES = {
'academic': {
'colors': ['#1B2A4A', '#5C7A9C', '#9BB5C9', '#C8D8E4'],
'hatches': ['', '///', '...', 'xxx'],
'dpi': 600, 'format': 'pdf'
},
'modern': {
# WCAG 2.1 색맹 안전 팔레트
'colors': ['#0072B2', '#E69F00', '#56B4E9', '#009E73'],
'hatches': ['', '', '', ''],
'dpi': 300, 'format': 'pdf'
},
'journal': {
'colors': ['#2B4162', '#0A7029', '#7B2D8B', '#B22222'],
'hatches': ['', '///', '\\\\\\', 'xxx'],
'dpi': 600, 'format': 'pdf'
}
}
# PDF(LaTeX용) + PNG 300dpi(HTML/DOCX용) 동시 저장
Step 5-B: HTML 문서 생성
중요: HTML 출력에는 반드시 완전한 References 섹션이 포함되어야 한다. bibliography.bib를 직접 파싱하여 번호 매기기 참고문헌 목록을 생성한다.
# pandoc이 있으면 citeproc으로 렌더링 (references 자동 포함)
if command -v pandoc &>/dev/null; then
pandoc "$PAPER_DIR/draft_en.md" \
--standalone \
--toc --toc-depth=3 \
--bibliography="$PAPER_DIR/references/bibliography.bib" \
--citeproc \
--embed-resources \
-o "$PAPER_DIR/output/paper_en.html" && echo "pandoc HTML OK"
fi
pandoc 성공 여부와 무관하게, Python으로 완전한 독립 실행 HTML을 항상 생성한다. (pandoc 없는 환경, Windows, CI 등에서도 동작해야 하기 때문이다)
# Python 완전 독립 HTML 생성 — bibliography.bib 파싱 포함
# $PAPER_DIR, $PAPER_TITLE, $LANG 변수는 이전 단계에서 설정된 값을 사용
import base64, os, re
PAPER_DIR = "$PAPER_DIR"
BIB_PATH = f"{PAPER_DIR}/references/bibliography.bib"
DRAFT_PATH = f"{PAPER_DIR}/draft_en.md"
OUT_PATH = f"{PAPER_DIR}/output/paper_en.html"
TITLE = "$PAPER_TITLE"
# ── 1. .bib 파일 파싱 → 번호 있는 References 섹션 HTML 생성 ──────────
def parse_bib(bib_path):
"""Parse .bib → list of dicts with title/authors/year/venue"""
refs = []
if not os.path.exists(bib_path):
return refs
with open(bib_path, encoding='utf-8') as f:
content = f.read()
entries = re.split(r'(?=^@)', content, flags=re.MULTILINE)
for entry in entries:
entry = entry.strip()
if not entry or not entry.startswith('@'):
continue
m = re.match(r'@(\w+)\{([^,]+),', entry)
if not m:
continue
key = m.group(2).strip()
def get_field(name):
pat = rf'{name}\s*=\s*[{{"](.+?)[}}"]\s*[,}}]'
fm = re.search(pat, entry, re.IGNORECASE | re.DOTALL)
if fm:
v = fm.group(1).strip()
v = re.sub(r'\\[a-zA-Z]+', '', v)
return v.replace('{','').replace('}','').replace('\\','').strip()
return ''
title = get_field('title')
authors = get_field('author')
year = get_field('year')
venue = get_field('booktitle') or get_field('journal') or ''
# 저자 단축: "Last et al."
alist = [a.strip() for a in re.split(r'\s+and\s+', authors, flags=re.IGNORECASE)]
if len(alist) > 3:
short = alist[0].split(',')[0].strip() + ' et al.'
elif alist and authors:
short = ', '.join(a.split(',')[0].strip() for a in alist)
else:
short = ''
refs.append({'key': key, 'title': title,
'authors': short, 'year': year, 'venue': venue})
return refs
def build_ref_html(refs):
if not refs:
return ''
lines = ['<section id="references">',
'<h2>References</h2>',
'<ol class="ref-list">']
for i, r in enumerate(refs, 1):
venue = f'<em>{r["venue"]}</em>. ' if r['venue'] else ''
title = f'<span class="ref-title">{r["title"]}</span>' if r['title'] else '(no title)'
lines.append(
f' <li id="ref-{r["key"]}">'
f'<span class="ref-num">[{i}]</span> '
f'{r["authors"]} ({r["year"]}). {title}. {venue}</li>'
)
lines += ['</ol>', '</section>']
return '\n'.join(lines)
# ── 2. draft_en.md 읽기 + 그림 base64 embed ──────────────────────────
def read_draft(path):
if not os.path.exists(path):
return ''
with open(path, encoding='utf-8') as f:
return f.read()
def embed_images(content, base_dir):
for match in re.finditer(r'!\[([^\]]*)\]\(([^)]+)\)', content):
alt, path = match.groups()
full = os.path.join(base_dir, path)
png = full.replace('.pdf', '.png')
for candidate in [full, png]:
if os.path.exists(candidate):
b64 = base64.b64encode(open(candidate,'rb').read()).decode()
content = content.replace(
f'',
f'<figure><img src="data:image/png;base64,{b64}" '
f'alt="{alt}" style="max-width:100%">'
f'<figcaption>{alt}</figcaption></figure>'
)
break
return content
md_raw = read_draft(DRAFT_PATH)
refs = parse_bib(BIB_PATH)
ref_sec = build_ref_html(refs)
# markdown → html (간단 변환; pandoc 없는 환경 대비)
try:
import markdown2
body = markdown2.markdown(
embed_images(md_raw, PAPER_DIR),
extras=["tables","fenced-code-blocks","footnotes","toc"])
except ImportError:
# markdown2 없으면 헤더/단락 정도만 변환
body = re.sub(r'^## (.+)$', r'<h2>\1</h2>', md_raw, flags=re.MULTILINE)
body = re.sub(r'^# (.+)$', r'<h1>\1</h1>', body, flags=re.MULTILINE)
body = re.sub(r'\n\n+', '</p><p>', body)
body = f'<p>{body}</p>'
# ── 3. 완전한 HTML 조립 ───────────────────────────────────────────────
CSS = """
:root{--bg:#fff;--text:#1a1a2e;--sec:#4a4a6a;--acc:#1B4F72;
--acc2:#1E8449;--brd:#e0e0f0;--hi:#EBF5FB;--th:#1B4F72}
@media(prefers-color-scheme:dark){:root{--bg:#0d1117;--text:#e6edf3;
--sec:#8b949e;--acc:#58a6ff;--acc2:#3fb950;--brd:#30363d;
--hi:#161b22;--th:#21262d}}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Georgia,serif;font-size:16px;line-height:1.75;
color:var(--text);background:var(--bg);
max-width:920px;margin:0 auto;padding:40px 20px 80px}
h1{font-size:1.8rem;color:var(--acc);margin:36px 0 14px;
border-bottom:2px solid var(--brd);padding-bottom:6px}
h2{font-size:1.35rem;color:var(--acc);margin:26px 0 10px}
h3{font-size:1.1rem;color:var(--sec);margin:18px 0 8px;font-style:italic}
p{margin:10px 0;text-align:justify}
ul,ol{margin:10px 0 10px 22px}li{margin:5px 0}
figure{margin:28px 0;text-align:center}
figure img{max-width:100%;border-radius:6px;
box-shadow:0 2px 16px rgba(0,0,0,.1);border:1px solid var(--brd)}
figcaption{font-size:.86rem;color:var(--sec);font-family:Arial,sans-serif;
margin-top:8px;max-width:820px;margin-left:auto;margin-right:auto}
table{width:100%;border-collapse:collapse;margin:20px 0;font-size:.86rem;
font-family:Arial,sans-serif;border-radius:8px;overflow:hidden;
box-shadow:0 2px 12px rgba(0,0,0,.07)}
th{background:var(--th);color:#fff;padding:9px 11px;text-align:center}
td{padding:7px 11px;border-bottom:1px solid var(--brd);text-align:center}
tr:hover td{background:var(--hi)}
blockquote{border-left:3px solid var(--acc2);padding:10px 18px;
color:var(--sec);font-style:italic;margin:14px 0}
/* ── References ── */
#references{margin-top:48px;padding-top:22px;
border-top:3px solid var(--acc)}
#references h2{font-size:1.6rem;border-bottom:none}
.ref-list{list-style:none;padding:0;margin:0}
.ref-list li{display:flex;gap:10px;padding:7px 0;
border-bottom:1px solid var(--brd);font-size:.86rem;
font-family:Arial,sans-serif;line-height:1.5}
.ref-list li:last-child{border-bottom:none}
.ref-num{color:var(--acc);font-weight:700;min-width:34px;flex-shrink:0}
.ref-title{font-style:italic}
.ref-list li:hover{background:var(--hi)}
@media print{body{padding:16px}#references{page-break-before:always}}
"""
html_out = f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>{TITLE}</title>
<style>{CSS}</style>
</head>
<body>
{body}
{ref_sec}
<footer style="text-align:center;margin-top:48px;padding-top:20px;
border-top:1px solid var(--brd);font-size:.83rem;
color:var(--sec);font-family:Arial,sans-serif">
Generated by <strong>PaperOrchestra Ultra</strong> — 12-Agent SCI Paper Writing Skill for Claude Code<br>
3-Way Citation Verification · Multi-Persona Adversarial Review · 4 HITL Checkpoints
</footer>
</body>
</html>"""
os.makedirs(os.path.dirname(OUT_PATH), exist_ok=True)
with open(OUT_PATH, 'w', encoding='utf-8') as f:
f.write(html_out)
print(f"HTML 생성 완료: {OUT_PATH} ({len(refs)} references included)")
한국어 버전 (선택 시)
같은 Python 로직으로 $PAPER_DIR/draft_ko.md → output/paper_ko.html 생성.
DRAFT_PATH와 OUT_PATH만 ko 버전으로 바꾸고 동일하게 실행한다.
Step 5-C: DOCX 문서 생성
if command -v pandoc &>/dev/null; then
pandoc "$PAPER_DIR/draft_en.md" \
--bibliography="$PAPER_DIR/references/bibliography.bib" \
--citeproc \
-o "$PAPER_DIR/output/paper_en.docx"
else
pip install python-docx -q 2>/dev/null
python3 - <<'PYEOF'
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
import re, os
doc = Document()
# 스타일 설정
style = doc.styles['Normal']
style.font.name = 'Times New Roman'
style.font.size = Pt(11)
# draft_en.md 파싱 → 섹션별 변환
content = open("$PAPER_DIR/draft_en.md").read()
# ... 섹션 파싱 및 Word 문서 구조 생성
# 그림 삽입 (PNG 300dpi)
# 표 포맷팅
# 참고문헌 섹션
doc.save("$PAPER_DIR/output/paper_en.docx")
print("DOCX 생성 완료")
PYEOF
fi
Step 5-D: PDF 생성 (LaTeX 우선, fallback 지원)
cd "$PAPER_DIR"
PDF_STATUS="none"
# 방법 1: pdflatex (최고 품질)
if command -v pdflatex &>/dev/null; then
echo "[1/3] pdflatex로 PDF 생성 시도..."
pdflatex -interaction=nonstopmode main.tex > /dev/null 2>&1
bibtex main > /dev/null 2>&1
pdflatex -interaction=nonstopmode main.tex > /dev/null 2>&1
pdflatex -interaction=nonstopmode main.tex > /dev/null 2>&1
[ -f main.pdf ] && cp main.pdf output/paper_en.pdf && PDF_STATUS="latex"
# 방법 2: xelatex
elif command -v xelatex &>/dev/null; then
xelatex -interaction=nonstopmode main.tex > /dev/null 2>&1
bibtex main > /dev/null 2>&1
xelatex -interaction=nonstopmode main.tex > /dev/null 2>&1
[ -f main.pdf ] && cp main.pdf output/paper_en.pdf && PDF_STATUS="xelatex"
# 방법 3: pandoc + weasyprint
elif command -v pandoc &>/dev/null; then
echo "[2/3] pandoc으로 PDF 생성 시도..."
pip install weasyprint -q 2>/dev/null
pandoc draft_en.md --bibliography=references/bibliography.bib \
--citeproc --pdf-engine=weasyprint \
-o output/paper_en.pdf 2>/dev/null && PDF_STATUS="pandoc"
# 방법 4: Chrome headless
elif command -v google-chrome &>/dev/null || command -v chromium-browser &>/dev/null; then
CHROME=$(command -v google-chrome 2>/dev/null || command -v chromium-browser)
echo "[3/3] Chrome headless로 PDF 생성 시도..."
"$CHROME" --headless --print-to-pdf="output/paper_en.pdf" \
--no-sandbox "output/paper_en.html" 2>/dev/null && PDF_STATUS="chrome"
fi
case "$PDF_STATUS" in
"latex"|"xelatex") echo "PDF 생성 완료 (LaTeX — 최고 품질)" ;;
"pandoc") echo "PDF 생성 완료 (pandoc)" ;;
"chrome") echo "PDF 생성 완료 (Chrome)" ;;
"none") echo "PDF 생성 불가 — output/paper_en.html을 브라우저에서 Ctrl+P로 출력하세요"
echo "또는 main.tex를 Overleaf(overleaf.com)에 업로드하세요" ;;
esac
Step 5-E: 제출용 ZIP 패키지 생성 (LaTeX 소스)
# 학회 제출용 패키지
ZIP_NAME="$(basename $PAPER_DIR)_submission.zip"
zip -r "output/$ZIP_NAME" \
main.tex \
sections/ \
figures/final/*.pdf \
references/bibliography.bib \
2>/dev/null
echo "제출용 ZIP: output/$ZIP_NAME"
Step 5-F: 최종 보고
╔══════════════════════════════════════════════════════════════╗
║ PaperOrchestra Ultra — 완성 보고 ║
╠══════════════════════════════════════════════════════════════╣
║ 논문 제목: [TITLE] ║
║ 목표 학회: [VENUE] ║
╠══════════════════════════════════════════════════════════════╣
║ 최종 산출물 ║
║ ✓ HTML: output/paper_en.html ║
║ ✓ DOCX: output/paper_en.docx ║
║ ✓ PDF: output/paper_en.pdf ([방법]) ║
║ ✓ LaTeX: main.tex + output/[ZIP명] ║
║ ✓ 한국어: draft_ko.md / output/paper_ko.html ║
╠══════════════════════════════════════════════════════════════╣
║ 품질 지표 ║
║ Novelty: [X/10] ║
║ Multi-Persona Review: [X.X/10] ║
║ Citations (3-verified): [N]개 ║
║ 그림 수: [N]개 ║
║ Stats 이슈 (수정 후): 0건 ║
║ 제출 준비도: [X]% ║
╠══════════════════════════════════════════════════════════════╣
║ ⚠ 최종 책임 고지 ║
║ • 모든 인용은 직접 확인하세요 (3중 검증 완료이나 내용 검토 필요) ║
║ • 실험 수치는 실제 코드 실행 결과로 교체하세요 ║
║ • AI 작성 도구 사용 여부를 학회/저널 정책에 따라 공시하세요 ║
║ • 사실 정확성의 최종 책임은 연구자에게 있습니다 ║
╚══════════════════════════════════════════════════════════════╝
벤치마크 초월 포인트 요약
| 한계 | 어떤 시스템의 약점 | 우리의 해결책 | |------|-----------------|--------------| | HITL 없음 | AI Scientist, PaperOrchestra | 4개 체크포인트 + 브레인스토밍 협업 | | ML 코드 실행 필요 | AI Scientist, Agent Laboratory | 실험 데이터 텍스트 입력으로 충분 | | 단일 피어리뷰 | PaperOrchestra, AI Scientist | 3-페르소나 adversarial review | | 인용 환각 | 모든 시스템 | 3중 검증 (SS + OpenAlex + CrossRef) | | 수치 오류 | AI Scientist(명시적 약점) | A08 Stats Sentinel 자동 검증 | | 신규성 미검증 | Agent Laboratory, PaperOrchestra | A02 Novelty Radar 집필 전 분석 | | 스토리 없는 논문 | 모든 시스템 | A03 Story Arc Designer | | 다포맷 없음 | 모든 시스템 | HTML + DOCX + PDF + LaTeX ZIP | | 다국어 없음 | 모든 시스템 | 한국어 + 영문 동시 생성 | | Venue 최적화 없음 | 모든 시스템 | A04 Venue Optimizer + Venue Intelligence | | 제출 준비 체크 없음 | 모든 시스템 | A12 Submission Readiness Checker | | 재현성 패키지 없음 | 모든 시스템 | A09 Reproducibility Packager |
참고 문헌 (벤치마크 대상 시스템)
- AI Scientist: Lu et al., "The AI Scientist: Towards Fully Automated Open-Ended Scientific Discovery" arXiv:2408.06292 (Sakana AI, 2024). Cost: ~$15/paper, Quality: Weak Accept level.
- ResearchAgent: Baek et al., "ResearchAgent: Iterative Research Idea Generation over Scientific Literature with Large Language Models" arXiv:2404.07738 (KAIST, 2024).
- Agent Laboratory: Si et al., "Agent Laboratory: Using LLM Agents as Research Assistants" arXiv:2501.04227 (2025). Cost reduction: 84% vs prior methods.
- PaperOrchestra: Song et al., "PaperOrchestra: A Multi-Agent Framework for Automated AI Research Paper Writing" arXiv:2604.05018 (Google, 2025). Acceptance: CVPR 84%, ICLR 81%.
- LLM Idea Generation: Si et al., "Can LLMs Generate Novel Research Ideas?" (Stanford, 2024). LLM ideas rated more novel (p<0.05) but slightly less feasible than humans.
면책 조항: 이 시스템은 연구 생산성 보조 도구입니다. 사실 정확성, 실험 윤리, 인용 검증의 최종 책임은 연구자에게 있습니다. AI 생성 컨텐츠 사용 여부를 해당 학회/저널 정책에 따라 반드시 공시하십시오.
Content Repurposer
Content
Transforms a single piece of content into platform-adapted publications.
SEO Blog Post Writer
Content
Writes SEO-optimized blog posts with proper structure and keywords.
YouTube Script Writer
Content
Writes engaging YouTube scripts with hooks, structure, and retention.