mcpField
P
paper-illustration

paper-illustration

github.com/wanshuiyin创意与媒体18.2k534 次安装4 天前更新
代码仓库

关于 paper-illustration

paper-illustration 是一项技能,通过分阶段生成和审阅来制作学术方法图与架构图。Claude 负责规划和检查,Gemini 优化布局与风格,Paperbanana 渲染图像;不适用于统计图。

主要功能

  1. 01根据研究需求规划图示
  2. 02使用 Gemini 优化布局和风格
  3. 03通过 Paperbanana 渲染图像
  4. 04审阅并评分每张生成图
  5. 05针对发现的问题迭代修改
  6. 06生成 LaTeX 插图代码

适用场景

  1. 01绘制模型架构图
  2. 02展示方法或算法工作流
  3. 03制作论文概念图

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill paper-illustration

安装后在 Claude Code 中输入/paper-illustration确认已加载。

详细介绍

论文插图:由 Claude 监督的多阶段图示生成

使用多阶段工作流生成可用于发表的高质量插图,并由 Claude 担任严格的监督者和审阅者。

核心设计理念

┌──────────────────────────────────────────────────────────────────────────┐
│                    MULTI-STAGE ITERATIVE WORKFLOW                        │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│   User Request                                                           │
│       │                                                                  │
│       ▼                                                                  │
│   ┌─────────────┐                                                        │
│   │   Claude    │ ◄─── Step 1: Parse request, create initial prompt     │
│   │  (Planner)  │                                                        │
│   └──────┬──────┘                                                        │
│          │                                                               │
│          ▼                                                               │
│   ┌─────────────┐                                                        │
│   │   Gemini    │ ◄─── Step 2: Optimize layout description               │
│   │ (gemini-3-pro)│      - Refine component positioning                    │
│   │  Layout     │      - Optimize spacing and grouping                   │
│   └──────┬──────┘                                                        │
│          │                                                               │
│          ▼                                                               │
│   ┌─────────────┐                                                        │
│   │   Gemini    │ ◄─── Step 3: CVPR/NeurIPS style verification          │
│   │ (gemini-3-pro)│      - Check color palette compliance                  │
│   │  Style      │      - Verify arrow and font standards                 │
│   └──────┬──────┘                                                        │
│          │                                                               │
│          ▼                                                               │
│   ┌─────────────┐                                                        │
│   │ Paperbanana │ ◄─── Step 4: Render final image                       │
│   │ (gemini-3-  │      - High-quality image generation                   │
│   │ pro-image)  │      - Internal codename: Nano Banana Pro              │
│   └──────┬──────┘                                                        │
│          │                                                               │
│          ▼                                                               │
│   ┌─────────────┐                                                        │
│   │   Claude    │ ◄─── Step 5: STRICT visual review + SCORE (1-10)      │
│   │  (Reviewer) │      - Verify EVERY arrow direction                    │
│   │   STRICT!   │      - Verify EVERY block content                      │
│   └──────┬──────┘      - Verify aesthetics & visual appeal               │
│          │                                                               │
│          ▼                                                               │
│   Score ≥ 9? ──YES──► Accept & Output                                    │
│          │                                                               │
│          NO                                                              │
│          │                                                               │
│          ▼                                                               │
│   Generate SPECIFIC improvement feedback ──► Loop back to Step 2        │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

常量

  • IMAGE_MODEL = gemini-3-pro-image-preview — Paperbanana(Nano Banana Pro),用于图像渲染
  • 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>,选择启用)

用户可借助参考论文引导插图的结构性惯例(标题长度、面板数量分布、论文中插图与表格的比例)。默认关闭——如果用户未传入 — style-ref,则行为与之前完全相同。

只有当 $ARGUMENTS 中出现 — style-ref: <source> 时,才运行辅助工具,并且必须在生成提示词之前运行:

# Resolve $STYLE_HELPER via the canonical strict-safe chain (see
# shared-references/integration-contract.md §2). Policy A — gate:
# unresolved helper means --style-ref cannot be satisfied, so abort.
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: extract_paper_style.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
  echo "       Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
  echo "       --style-ref cannot be satisfied; aborting." >&2
  exit 1
}
STYLE_STATUS=0
CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$?
case "$STYLE_STATUS" in
  0) ;;                                       # use $CACHE/style_profile.md as structural guidance
  2) echo "warning: style-ref skipped (missing optional dep)" >&2 ;;
  3) echo "error: --style-ref source failed; aborting illustration" >&2 ; exit 1 ;;
  *) echo "error: helper failed unexpectedly; aborting illustration" >&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 仅用于微调长度和密度倾向,绝不影响图像内容。
  • 绝不复制通过缓存可访问的任何内容中的图像内容、调色板或特定设计元素。视觉设计应源自用户的提示词,而非参考资料。
  • 为生成的图像评分时,绝不要将 — style-ref(或缓存内容)传递给 Claude 视觉检查器/Gemini 推理检查器子 Agent——图像必须根据其自身质量进行评判。

CVPR/ICLR/NeurIPS 顶级会议风格指南

“CVPR 风格”的真正含义:

视觉标准
  • 干净的白色背景——不使用装饰图案或渐变(除非非常淡雅)
  • 无衬线字体——Arial、Helvetica 或 Computer Modern;最小字号为 14pt
  • 柔和的配色——避免彩虹色;使用 3-5 种协调的颜色
  • 适合打印——必须在灰度下清晰可读(许多审稿人会打印论文)
  • 专业边框——线条较细(2-3px),颜色纯正,不浮夸
布局标准
  • 水平流向——从左到右是流程图的标准方向
  • 分组清晰——使用淡雅的背景框对相关模块进行分组
  • 尺寸一致——相似组件应采用相近的尺寸
  • 留白均衡——既不拥挤,也不稀疏
箭头标准(最关键)
  • 线条粗——至少 4-6px(细箭头打印后会消失)
  • 箭头清晰——使用较大的实心三角形箭头
  • 颜色深——黑色或深灰色(#333333);避免使用彩色箭头
  • 标注说明——每个箭头都应标明其传递的数据
  • 避免交叉——调整布局,避免箭头交叉
  • 方向正确——箭头必须指向正确的目标!
视觉吸引力(科研风格 - 专业学术风格)

目标:既不保守也不花哨,找到平衡点

✅ 应该有的视觉元素:
  • 淡雅的渐变填充——使用同色系由浅到深的渐变,而非炫目的色彩
  • 圆角——圆角矩形(半径 6-10px),显得现代但不过分
  • 层次清晰——通过大小和颜色深浅区分层次
  • 配色统一——采用统一的配色方案(3-4 种主色)
  • 内部结构——在大型模块内部展示子组件(如 Encoder 内部的 layer 结构)
  • 专业排版——标签清晰,字号层次恰当
✅ 配色建议(学术专业):
  • 输入:柔和的绿色系(#10B981 / #34D399)
  • 编码器:专业的蓝色系(#2563EB / #3B82F6)
  • 融合:优雅的紫色系(#7C3AED / #8B5CF6)
  • 输出:温暖的橙色系(#EA580C / #F97316)
  • 箭头:黑色或深灰色(#333333 / #1F2937)
  • 背景:纯白色(#FFFFFF),不要使用花纹
❌ 要避免的过度装饰:
  • ❌ Rainbow color schemes(彩虹配色)
  • ❌ Heavy drop shadows(重阴影效果)
  • ❌ 3D effects / perspective(3D 透视)
  • ❌ Excessive gradients(夸张的多色渐变)
  • ❌ Clip art / cartoon icons(卡通图标)
  • ❌ Decorative patterns in background(背景花纹)
  • ❌ Glowing effects(发光效果)
  • ❌ Too many small icons(过多小图标)
✓ 理想的视觉效果:
  • 一眼看上去专业、清晰
  • 有适度的视觉吸引力,但不抢眼
  • 符合CVPR/NeurIPS 论文的审美标准
  • 打印友好(灰度模式下也能清晰辨认)
  • 像精心设计的学术图表,而不是 PPT 模板
要避免的事项(至关重要)
  • ❌ Rainbow color schemes(颜色过多)
  • ❌ 细如发丝的箭头(箭头必须足够粗)
  • ❌ 未标注的连线
  • ❌ 平淡无趣的矩形(增加一些视觉吸引力)
  • ❌ 过度装饰的阴影/发光效果/图标(过于花哨)
  • ❌ 打印时难以辨认的小字
  • ❌ 错误的箭头方向——绝不可接受!

范围

图表类型质量示例
架构图优秀模型架构、流水线、编码器-解码器
方法示意图优秀概念图、算法流程图
概念图良好对比图、分类树

**不适用于:**统计图(使用 /paper-figure)、照片级真实图像

工作流:必须执行所有步骤

步骤 0:飞行前检查
# Check API key
if [ -z "$GEMINI_API_KEY" ]; then
    echo "ERROR: GEMINI_API_KEY not set"
    echo "Get your key from: https://aistudio.google.com/app/apikey"
    echo "Set it: export GEMINI_API_KEY='your-key'"
    exit 1
fi

# Create output directory
mkdir -p figures/ai_generated
步骤 1:Claude 规划图表(你正在此处)

至关重要:Claude 必须先分析用户的请求并创建详细提示词。

解析输入:$ARGUMENTS

Claude 的任务:

  1. 理解用户想要什么图表
  2. 识别所有组件、连接和数据流
  3. 为 Gemini 创建详细、结构化的提示词
  4. 包含风格要求和视觉吸引力要求

Claude 要生成的提示词模板:

Create a PROFESSIONAL, VISUALLY APPEALING publication-quality academic diagram following CVPR/ICLR/NeurIPS standards.

## Visual Style: 科研风格 (Academic Professional Style)
### 目标:平衡 — 既不保守也不花哨

#### DO (应该有):
- **Subtle gradients** — 同色系淡雅渐变(如 #2563EB → #3B82F6),不是多色炫彩
- **Rounded corners** — 圆角矩形(6-10px),现代感
- **Clear visual hierarchy** — 通过大小、深浅区分层次
- **Internal structure** — 大模块内显示子组件结构
- **Consistent color coding** — 统一的3-4色方案
- **Professional polish** — 精致但不夸张

#### DON'T (不要有):
- ❌ Rainbow/multi-color gradients (彩虹渐变)
- ❌ Heavy drop shadows (重阴影)
- ❌ 3D effects / perspective (3D效果)
- ❌ Glowing effects (发光效果)
- ❌ Excessive decorative icons (过多装饰图标)
- ❌ Plain boring rectangles (完全平淡的方块)

#### 理想效果:
像顶会论文中精心设计的架构图 — 专业、清晰、有适度的视觉吸引力

## Figure Type
[Architecture Diagram / Pipeline / Comparison / etc.]

## Components to Include (BE SPECIFIC ABOUT CONTENT)
1. [Component 1]:
   - Label: "[exact text]"
   - Sub-label: "[smaller text below]"
   - Position: [left/center/right, top/middle/bottom]
   - Style: [border color, fill, internal structure]
2. [Component 2]: ...

## Layout
- Direction: [left-to-right / top-to-bottom]
- Spacing: [tight / normal / loose]
- Grouping: [how components should be grouped]

## Connections (BE EXPLICIT ABOUT DIRECTION)
EXACT arrow specifications:
1. [Component A] → [Component B]: Arrow goes FROM A TO B, label it "[data type]"
2. [Component C] → [Component D]: Arrow goes FROM C TO D, label it "[data type]"
...
VERIFY: Each arrow must point to the CORRECT target!

## Style Requirements (CVPR/ICLR/NeurIPS Standard)

### Visual Style
- Color palette: Professional academic colors
  - Inputs: Green (#10B981)
  - Encoders: Blue (#2563EB)
  - Fusion modules: Purple (#7C3AED)
  - Outputs: Orange (#EA580C)
- Font: Sans-serif (Arial/Helvetica), minimum 14pt, bold for labels
- Background: Clean white, no patterns
- Blocks: Rounded rectangles (8-12px radius), subtle gradient fill, colored border (2-3px)
- Subtle shadows for depth effect
- Print-friendly (must work in grayscale)

### CRITICAL: Arrow & Data Flow Requirements
1. **ALL arrows must be VERY THICK** - minimum 5-6px stroke width
2. **ALL arrows must have CLEAR arrowheads** - large, visible triangular heads
3. **ALL arrows must be BLACK or DARK GRAY** - not colored
4. **Label EVERY arrow** with what data flows through it
5. **VERIFY arrow direction** - each arrow MUST point to the correct target
6. **No ambiguous connections** - every arrow should have a clear source and destination

### Logic Clarity Requirements
1. **Data flow must be immediately obvious** - viewer should understand the pipeline in 5 seconds
2. **No crossing arrows** - reorganize layout to avoid arrow crossings
3. **Consistent direction** - maintain left-to-right or top-to-bottom flow throughout
4. **Group related components** - use subtle background boxes or spacing to group modules
5. **Clear hierarchy** - main components larger, sub-components smaller

## Additional Requirements
[Any specific requirements from user]
步骤 2:Gemini 布局优化(gemini-3-pro)

Claude 将初始提示词发送给 Gemini(gemini-3-pro)进行布局优化。

#!/bin/bash
# Step 2: Optimize layout using Gemini gemini-3-pro
# This step refines component positioning and spacing

set -e

OUTPUT_DIR="figures/ai_generated"
mkdir -p "$OUTPUT_DIR"

API_KEY="${GEMINI_API_KEY}"
URL="https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent?key=$API_KEY"

# The initial prompt from Claude
INITIAL_PROMPT='[Claude fills in the detailed prompt here]'

# Layout optimization request
LAYOUT_REQUEST="You are an expert in academic figure layout design for CVPR/NeurIPS papers.

Analyze this figure request and provide an OPTIMIZED LAYOUT DESCRIPTION:

$INITIAL_PROMPT

Provide:
1. **Optimized Component Positions**: Exact positions (left/center/right, top/middle/bottom) for each component
2. **Spacing Recommendations**: Specific spacing between components
3. **Grouping Strategy**: Which components should be visually grouped together
4. **Arrow Routing**: Optimal paths for arrows to avoid crossings
5. **Visual Hierarchy**: Size recommendations for main vs sub-components

Output a DETAILED layout specification that will be used for rendering."

# Build JSON payload
python3 << PYTHON
import json
payload = {
    "contents": [{"parts": [{"text": '''$LAYOUT_REQUEST'''}]}]
}
with open("/tmp/gemini_layout_request.json", "w") as f:
    json.dump(payload, f, indent=2)
print("Layout request created")
PYTHON

# Call Gemini gemini-3-pro-preview for layout optimization (DIRECT connection, no proxy)
RESPONSE=$(curl -s --max-time 90 \
  -X POST "$URL" \
  -H 'Content-Type: application/json' \
  -d @/tmp/gemini_layout_request.json)

# Extract layout description
LAYOUT_DESCRIPTION=$(echo "$RESPONSE" | python3 -c "
import sys, json
data = json.load(sys.stdin)
try:
    print(data['candidates'][0]['content']['parts'][0]['text'])
except:
    print('Error extracting layout')
")

echo "=== Layout Optimization Complete ==="
echo "$LAYOUT_DESCRIPTION"
echo "$LAYOUT_DESCRIPTION" > "$OUTPUT_DIR/layout_description.txt"
步骤 3:Gemini 风格验证(gemini-3-pro)

Claude 将优化后的布局发送给 Gemini,验证其是否符合 CVPR/NeurIPS 风格。

#!/bin/bash
# Step 3: Verify and enhance style compliance using Gemini gemini-3-pro

API_KEY="${GEMINI_API_KEY}"
URL="https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent?key=$API_KEY"

# Read layout from previous step
LAYOUT=$(cat figures/ai_generated/layout_description.txt)

# Style verification request
STYLE_REQUEST="You are a CVPR/NeurIPS paper figure reviewer specializing in visual standards.

Review and ENHANCE this figure specification for top-tier conference compliance:

$LAYOUT

Ensure compliance with:
1. **Color Palette**: Use professional academic colors (green for inputs, blue for encoders, purple for fusion, orange for outputs)
2. **Arrow Standards**: Thick (5-6px), black/dark gray, clear arrowheads, all labeled
3. **Font Standards**: Sans-serif, minimum 14pt, readable in print
4. **Visual Appeal (科研风格)**:
   - ✅ Subtle same-color gradients, rounded corners (6-10px), internal structure visible
   - ❌ NO heavy shadows, NO glowing effects, NO rainbow gradients

Output an ENHANCED figure specification with explicit style instructions for rendering."

# Build JSON payload
python3 << PYTHON
import json
payload = {
    "contents": [{"parts": [{"text": '''$STYLE_REQUEST'''}]}]
}
with open("/tmp/gemini_style_request.json", "w") as f:
    json.dump(payload, f, indent=2)
print("Style request created")
PYTHON

# Call Gemini gemini-3-pro-preview for style verification (DIRECT connection, no proxy)
RESPONSE=$(curl -s --max-time 90 \
  -X POST "$URL" \
  -H 'Content-Type: application/json' \
  -d @/tmp/gemini_style_request.json)

# Extract style-enhanced specification
STYLE_SPEC=$(echo "$RESPONSE" | python3 -c "
import sys, json
data = json.load(sys.stdin)
try:
    print(data['candidates'][0]['content']['parts'][0]['text'])
except:
    print('Error extracting style spec')
")

echo "=== Style Verification Complete ==="
echo "$STYLE_SPEC"
echo "$STYLE_SPEC" > "figures/ai_generated/style_spec.txt"
步骤 4:Paperbanana 图像渲染(gemini-3-pro-image-preview)

Claude 将经过优化和风格验证的规范发送给 Paperbanana 进行渲染。

#!/bin/bash
# Step 4: Render image using Paperbanana (gemini-3-pro-image-preview)
# Internal codename: Nano Banana Pro
# Use DIRECT connection (no proxy) - proxy causes SSL errors

set -e

OUTPUT_DIR="figures/ai_generated"
mkdir -p "$OUTPUT_DIR"

API_KEY="${GEMINI_API_KEY}"
URL="https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent?key=$API_KEY"

# Read the style-enhanced specification from previous step
STYLE_SPEC=$(cat figures/ai_generated/style_spec.txt)

# Add rendering instructions
RENDER_PROMPT="Render a publication-quality academic diagram based on this specification:

$STYLE_SPEC

RENDERING REQUIREMENTS:
- Output a clean, professional diagram suitable for CVPR/NeurIPS submission
- Use vector-quality rendering with sharp edges and clear text
- Ensure all elements are properly aligned and spaced
- The diagram should be immediately understandable at a glance"

# Build JSON payload using Python for proper escaping
python3 << PYTHON
import json
payload = {
    "contents": [{"parts": [{"text": '''$RENDER_PROMPT'''}]}],
    "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
}
with open("/tmp/gemini_request.json", "w") as f:
    json.dump(payload, f, indent=2)
print("JSON payload created")
PYTHON

# Call Paperbanana API WITHOUT proxy (direct connection works better)
RESPONSE=$(curl -s --max-time 180 \
  -X POST "$URL" \
  -H 'Content-Type: application/json' \
  -d @/tmp/gemini_request.json)

# Check for error
if echo "$RESPONSE" | grep -q '"error"'; then
    echo "API Error:"
    echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE"
    exit 1
fi

# Extract and save image
echo "$RESPONSE" | python3 << 'PYTHON'
import sys, json, base64
from pathlib import Path

output_dir = Path("figures/ai_generated")
data = json.load(sys.stdin)

try:
    parts = data['candidates'][0]['content']['parts']
    iteration = 1  # Claude increments this each iteration

    for part in parts:
        if 'text' in part:
            print(f"\n[Paperbanana]: {part['text'][:200]}...")
        elif 'inlineData' in part:
            img_data = base64.b64decode(part['inlineData']['data'])
            img_path = output_dir / f"figure_v{iteration}.png"
            with open(img_path, "wb") as f:
                f.write(img_data)
            print(f"\n✅ Image saved: {img_path}")
            print(f"   Size: {len(img_data)/1024:.1f} KB")

except Exception as e:
    print(f"Parse error: {e}")
    print(f"Raw response: {str(data)[:500]}")
PYTHON
步骤 5:Claude 严格视觉审查与评分(强制)

Claude 必须阅读生成的图像并进行严格审查:

  1. 视觉分析:详细描述图像展示的内容。
  2. 优点:有哪些做得好的地方?
  3. 严格验证:检查以下每一项
  4. 评分:按 1–10 分打分(10 = 完美)——务必严格!

严格审查模板:

## Claude's STRICT Review of Figure v{N}

### What I See
[Describe the generated image in DETAIL - every block, every arrow]

### Strengths
- [Strength 1]
- [Strength 2]

### ═══════════════════════════════════════════════════════════════
### STRICT VERIFICATION CHECKLIST (ALL must pass for score ≥ 9)
### ═══════════════════════════════════════════════════════════════

#### A. Arrow Correctness Verification (CRITICAL - any failure = score ≤ 6)
Check EACH arrow:
- [ ] Arrow 1: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 2: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 3: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 4: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 5: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 6: [Source] → [Target] — Does it point to the CORRECT target?

#### B. Block Content Verification (any failure = score ≤ 7)
Check EACH block:
- [ ] Block 1 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 2 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 3 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 4 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 5 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 6 "[Name]": Has correct label? Has sub-label? Content correct?
- [ ] Block 7 "[Name]": Has correct label? Has sub-label? Content correct?

#### C. Arrow Visibility (any failure = score ≤ 7)
- [ ] ALL arrows are THICK (≥5px visible stroke)
- [ ] ALL arrows have CLEAR arrowheads (large triangular heads)
- [ ] ALL arrows are BLACK or DARK GRAY (not light colors)
- [ ] NO arrows are too thin or invisible

#### D. Arrow Labels (any failure = score ≤ 7)
- [ ] EVERY arrow has a text label
- [ ] Labels are readable (not too small)
- [ ] Labels correctly describe the data flowing

#### E. Visual Appeal (科研风格 - Balanced Academic Style) (any failure = score ≤ 8)
- [ ] **有适度视觉吸引力** — 有subtle渐变或圆角,但不夸张
- [ ] **不是平淡方块** — 有一定设计感
- [ ] **不过度装饰** — 没有重阴影、发光效果、彩虹配色
- [ ] **专业学术风格** — 像CVPR论文中的图表,不是PPT模板
- [ ] **Internal structure visible** — 大模块内部显示子组件结构
- [ ] **Color palette: 3-4种协调色** — 不是彩虹,也不是纯黑白

#### E2. Visual Appeal - RED FLAGS (immediate score ≤ 7 if found)
- [ ] **NO heavy drop shadows** (重阴影 = too flashy)
- [ ] **NO glowing effects** (发光效果 = too flashy)
- [ ] **NO rainbow gradients** (彩虹渐变 = unprofessional)
- [ ] **NO excessive decorative icons** (过多装饰图标 = distracting)

#### F. Layout & Flow (any failure = score ≤ 7)
- [ ] Clean horizontal left-to-right flow
- [ ] No arrow crossings
- [ ] Data flow traceable in 5 seconds
- [ ] Balanced spacing (not cramped, not sparse)

#### G. Style Compliance
- [ ] CVPR/NeurIPS professional style
- [ ] Color palette appropriate (not rainbow)
- [ ] Font readable
- [ ] Print-friendly (grayscale test)

### ═══════════════════════════════════════════════════════════════

### Issues Found (BE SPECIFIC)
1. [Issue 1]: [EXACTLY what is wrong] → [How to fix]
2. [Issue 2]: [EXACTLY what is wrong] → [How to fix]
3. [Issue 3]: [EXACTLY what is wrong] → [How to fix]

### Score: X/10

### STRICT Score Breakdown Guide:
- **10**: Perfect. No issues. Publication-ready masterpiece. 视觉风格完美平衡。
- **9**: Excellent. Minor issues that don't affect understanding. 可以直接使用。
- **8**: Good but has noticeable issues. 视觉上太平淡或太花哨都需要改进。
- **7**: Usable but has clear problems. 箭头或内容有问题。
- **6**: Has arrow direction errors (箭头指向错误) OR missing major components.
- **1-5**: Major issues. Unacceptable.

### Visual Style Scoring (视觉风格评分):
- **太花哨 (Too flashy)**: 重阴影、发光效果、彩虹配色 → score ≤ 7
- **太平淡 (Too plain)**: 纯黑白方块、无任何视觉设计 → score ≤ 8
- **恰到好处 (Balanced)**: 适度渐变、圆角、清晰层次 → score 9-10

### Verdict
[ ] ACCEPT (score ≥ 9 AND all critical checks pass)
[ ] REFINE (score < 9 OR any critical check fails)

**If REFINE: List the EXACT issues that must be fixed**
步骤 6:决策点
IF score >= 9 AND all critical checks pass:
    → Accept figure, generate LaTeX snippet, DONE
ELSE IF iteration < MAX_ITERATIONS:
    → Generate SPECIFIC improvement prompt based on EXACT issues
    → Go to Step 2 (Gemini Layout) with refined prompt
ELSE:
    → Max iterations reached, show best version
    → Ask user if they want to continue or accept
步骤 7:生成改进提示词(用于完善)

Claude 生成有针对性的改进提示词,并明确指出具体问题:

Refine this academic diagram. This is iteration {N}.

## ═══════════════════════════════════════════════════════════════
## CRITICAL: Fix These EXACT Issues (from previous review)
## ═══════════════════════════════════════════════════════════════

### Arrow Direction Errors (MUST FIX):
1. [EXACT issue]: Arrow from [A] to [B] is pointing to wrong target. It should point to [C] instead.
2. [EXACT issue]: ...

### Missing Arrow Labels (MUST FIX):
1. Arrow from [A] to [B] is missing label "[data type]"
2. ...

### Block Content Issues (MUST FIX):
1. Block "[Name]" has wrong label. Should be "[correct label]"
2. ...

### Visual Appeal Issues (SHOULD FIX):
1. Blocks are too plain. Add [gradients/shadows/internal structure]
2. ...

## Keep These Good Elements:
- [What to preserve from previous version]

## Generate the improved figure with ALL issues fixed.
步骤 8:最终输出

当图表通过验收(评分 ≥ 9)时:

% === AI-Generated Figure ===
\begin{figure*}[t]
    \centering
    \includegraphics[width=0.95\textwidth]{figures/ai_generated/figure_final.png}
    \caption{[Caption based on user's original request].}
    \label{fig:[label]}
\end{figure*}

关键规则(必须遵守——严格执行)

  1. 绝不跳过审查步骤——始终阅读图像并严格评分
  2. 绝不接受低于 9 分的评分——持续完善,直到达到卓越水平
  3. 核实每个箭头的方向——方向错误 = 自动不合格(评分 ≤ 6)
  4. 核实每个模块的内容——内容错误 = 自动不合格(评分 ≤ 7)
  5. 反馈必须具体——说“从 A 到 B 的箭头指向了错误的目标 C”,而不是“箭头错了”
  6. 保存所有迭代版本——保留版本历史以供比较
  7. Claude 是严格的把关者——只接受卓越,不接受“差不多就行”
  8. 箭头方向正确与否不容妥协——任何箭头方向错误都必须拒绝
  9. 视觉吸引力很重要——平淡无趣的图表评分 ≤ 8
  10. 目标评分是 9——不是 8,也不是“差不多就行”
  11. 使用多阶段工作流——Claude → Gemini 布局 → Gemini 风格 → Paperbanana → Claude 审查
  12. 使用正确的模型——gemini-3-pro 用于推理,gemini-3-pro-image-preview 用于渲染

输出结构

figures/ai_generated/
├── layout_description.txt  # Step 2: Gemini layout optimization output
├── style_spec.txt          # Step 3: Gemini style verification output
├── figure_v1.png           # Iteration 1 (Paperbanana render)
├── figure_v2.png           # Iteration 2
├── figure_v3.png           # Iteration 3
├── figure_final.png        # Accepted version (copy of best, score ≥ 9)
├── latex_include.tex       # LaTeX snippet
└── review_log.json         # All review scores and STRICT feedback

模型概要

阶段模型用途
步骤 1Claude解析请求,创建初始提示词
步骤 2gemini-3-pro优化布局(定位、间距、分组)
步骤 3gemini-3-pro验证 CVPR/NeurIPS 风格
步骤 4gemini-3-pro-image-preview (Paperbanana)高质量图像渲染
步骤 5Claude严格进行视觉审核和评分

评论

支持 Markdown