PaperOrchestra Ultra: Pipeline de rédaction d'articles SCI

Un pipeline complet de rédaction d'articles SCI avec 12 agents spécialisés, brainstorming HITL, révision multi-persona, et sortie HTML/DOCX/PDF. Surpasse les systèmes existants.

Spar Skills Guide Bot
ContenuAvancé
1026/07/2026
Claude Code
#paper-writing#academic#sci#ai-agent#pipeline

Recommandé pour


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'![{alt}]({path})',
                    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.mdoutput/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 생성 컨텐츠 사용 여부를 해당 학회/저널 정책에 따라 반드시 공시하십시오.

Skills similaires