Turn any scientific paper into a live interactive demo.
Quick Start | What's New in v0.4.0 | Forms | Providers | CLI | UI | Python API
- New
flowchart_proform: draw.io-quality interactive architecture diagrams powered by Cytoscape.js 3.30.2 + dagre layout. Compound nodes, zoom/pan/export, click-to-inspect detail panels, step-by-step walkthrough. - Vector figure extraction:
extract_pdf_pagenow defaults to SVG output (via PyMuPDFget_svg_image) for crisp, resolution-independent paper figures. - Quality improvements: all 6 core output forms benchmarked at an average 9.4/10 (website 9.1, presentation 9.75, flowchart 9.8, latex 9.1, slides 8.8, app 9.5).
- Bug fixes: resolved f-string
{slug}NameError, Gradio version pinned to>=6.0, XSS guard added to app form,textcompLaTeX package added for\texttimessupport.
Install:
pip install paper-demo-agentGenerate a demo from an arXiv paper:
paper-demo-agent demo 1706.03762Use Claude Code credentials if you already have them:
npm install -g @anthropic-ai/claude-code
claude login
paper-demo-agent demo 1706.03762 --provider anthropicUse Gemini CLI credentials instead:
npm install -g @google/gemini-cli
gemini
paper-demo-agent demo 1706.03762 --provider geminiOr set API keys directly:
paper-demo-agent key set ANTHROPIC_API_KEY <token>
paper-demo-agent key set OPENAI_API_KEY <token>
paper-demo-agent demo 1706.03762 --provider openaiLaunch the UI:
paper-demo-agent uiWith pipx:
pipx run paper-demo-agent uiPaper Demo Agent reads a paper, classifies its contribution, routes it to a specialized skill, and generates one of 11 output formats across 4 top-level categories:
app: Gradio or Streamlitpresentation: HTML slides, PowerPoint, or LaTeX/Beamerpage: project page, README, or blog articlediagram: Mermaid, Cytoscape.js (draw.io-quality), or Graphviz
Current repo highlights:
- 13 routed skills for model, dataset, algorithm, framework, theory, survey, findings, README, blog, Streamlit, Mermaid, and Graphviz generation
- 15 generation tools including
append_file,validate_output,render_svg,extract_pdf_page,extract_figure,extract_tables, andlist_pdf_pages - 6 providers: Anthropic, OpenAI, Gemini, DeepSeek, Qwen, and MiniMax
- Gradio UI with auth status, progress streaming, phase stepper, file preview, ZIP download, and one-click open
- Expanded graphics toolkit for SVG, Mermaid, Chart.js, D3, and TikZ-based outputs
- Parse the source from arXiv, URL, local PDF, or raw text.
- Analyze the paper to infer paper type, demo type, and best form.
- Route to a specialized skill.
- Run the generation loop: Research, Build, Polish, Validate.
- Return runnable output under
demos/by default.
The generator uses form-specific budgets. Current defaults:
presentation: build 18, polish 5website,page_blog,slides,latex: build 14–16, polish 4app,app_streamlit: build 14, polish 4flowchart_pro: build 12, polish 3flowchart: build 10, polish 3page_readme,diagram_graphviz: build 6, polish 2
Preferred CLI usage is category + subtype:
| Category | Subtypes | Internal Output |
|---|---|---|
app |
gradio, streamlit |
app.py |
presentation |
revealjs, pptx, beamer |
demo.html, build.py, presentation.tex |
page |
project, readme, blog |
index.html, README.md |
diagram |
mermaid, cytoscape, graphviz |
index.html, build.py |
Examples:
paper-demo-agent demo 1706.03762 --form app --subtype streamlit
paper-demo-agent demo 1706.03762 --form presentation --subtype revealjs
paper-demo-agent demo 1706.03762 --form presentation --subtype pptx
paper-demo-agent demo 1706.03762 --form presentation --subtype beamer
paper-demo-agent demo 1706.03762 --form page --subtype project
paper-demo-agent demo 1706.03762 --form page --subtype readme
paper-demo-agent demo 1706.03762 --form page --subtype blog
paper-demo-agent demo 1706.03762 --form diagram --subtype mermaid
paper-demo-agent demo 1706.03762 --form diagram --subtype cytoscape
paper-demo-agent demo 1706.03762 --form diagram --subtype graphvizOr use flat form keys directly:
paper-demo-agent demo 1706.03762 --form flowchart # Mermaid.js interactive diagram
paper-demo-agent demo 1706.03762 --form flowchart_pro # Cytoscape.js draw.io-quality diagram
paper-demo-agent demo 1706.03762 --form website # Project page (alias for page/project)
paper-demo-agent demo 1706.03762 --form slides # PowerPoint (alias for presentation/pptx)
paper-demo-agent demo 1706.03762 --form latex # LaTeX/Beamer (alias for presentation/beamer)paper-demo-agent demo SOURCE accepts:
- arXiv ID:
1706.03762 - arXiv-prefixed ID:
arxiv:1706.03762 - arXiv URL
- local PDF path
- raw text
| Provider | Default Model | Key | Notes |
|---|---|---|---|
| Anthropic | claude-sonnet-4-6 |
ANTHROPIC_API_KEY |
Supports Claude Code auto-detection |
| OpenAI | gpt-5.2 |
OPENAI_API_KEY |
Supports Codex CLI auto-detection |
| Gemini | auto-gemini-2.5 |
GOOGLE_API_KEY |
Supports Gemini CLI and gcloud ADC |
| DeepSeek | deepseek-chat |
DEEPSEEK_API_KEY |
OpenAI-compatible provider |
| Qwen | qwen-max |
QWEN_API_KEY |
DashScope-backed |
| MiniMax | abab6.5-chat |
MINIMAX_API_KEY |
Also needs MINIMAX_GROUP_ID |
Current key resolution is source-specific:
- Anthropic: Claude Code -> saved config -> environment -> Aider
- Gemini: Gemini CLI -> saved config -> environment ->
gcloudADC - OpenAI: saved config -> environment -> OpenAI Codex CLI -> Aider
Supported auto-detected sources:
- Claude Code:
~/.claude/.credentials.jsonor macOS Keychain - Gemini CLI:
~/.gemini/oauth_creds.json, macOS Keychain, or OpenClaw profile - Google ADC:
~/.config/gcloud/application_default_credentials.json - OpenAI Codex CLI:
~/.codex/auth.json - Aider:
~/.aider.conf.yml
Run:
paper-demo-agent uiOptional flags:
paper-demo-agent ui --port 8080
paper-demo-agent ui --share
paper-demo-agent ui --auth admin:secret
paper-demo-agent ui --no-browserThe UI includes:
- quick auth cards for Claude Code and Gemini CLI
- provider dropdown with credential status
- output category and subtype selectors
- live progress split by Parse, Analyze, Research, Build, Polish, and Validate
- generated file list, preview, ZIP download, and open/run actions
Most outputs are pure Python or HTML.
Graphviz diagrams need the system dot binary:
# macOS
brew install graphviz
# Ubuntu / Debian
sudo apt-get install graphvizLaTeX / Beamer output needs a TeX distribution:
# macOS
brew install --cask mactex-no-gui
# Ubuntu / Debian
sudo apt-get install texlive-latex-recommended texlive-fonts-extra# Auto-pick the output
paper-demo-agent demo 1706.03762
# Pick provider and model
paper-demo-agent demo 1706.03762 --provider anthropic --model claude-opus-4-6
paper-demo-agent demo 1706.03762 --provider openai --model gpt-5.2
# Pick category + subtype
paper-demo-agent demo 1706.03762 --form app --subtype streamlit
paper-demo-agent demo 1706.03762 --form presentation --subtype beamer
paper-demo-agent demo 1706.03762 --form page --subtype readme
paper-demo-agent demo 1706.03762 --form diagram --subtype graphviz
# Local PDF
paper-demo-agent demo ./paper.pdf --form presentation --subtype pptx
# Output directory
paper-demo-agent demo 1706.03762 --output ./my-demo
# Provider list
paper-demo-agent providers
# Key management
paper-demo-agent key set ANTHROPIC_API_KEY <token>
paper-demo-agent key list
paper-demo-agent key delete ANTHROPIC_API_KEY
# Hugging Face login for gated assets
paper-demo-agent login
paper-demo-agent logoutfrom paper_demo_agent import PaperDemoAgent
agent = PaperDemoAgent(provider="anthropic")
result = agent.run(
source="1706.03762",
demo_form="page",
demo_subtype="project",
max_iter=25,
on_progress=print,
)
print(result.output_dir)
print(result.main_file)
print(result.run_command)You can also use the lower-level steps:
paper = agent.parse("1706.03762")
analysis = agent.analyze(paper)
print(analysis.paper_type)
print(analysis.demo_form)
print(analysis.demo_subtype)run_from_pdf() is available for UI-style byte uploads.
paper_demo_agent/
|-- agent.py
|-- cli.py
|-- config.py
|-- ui/app.py
|-- analysis/
|-- paper/
|-- providers/
|-- generation/
| |-- generator.py
| |-- runner.py
| `-- tools.py
|-- graphics/
`-- skills/
Important top-level docs:
IMPROVEMENT_LOG.mdCONTRIBUTING.md
Examples:
examples/demo_attention_paper.pyexamples/demo_imagenet_dataset.pyexamples/demo_survey_paper.py
- Large single-file outputs are handled with
write_fileplusappend_file; the hard 300-line write limit described in older docs is no longer enforced. validate_outputexists as an internal generation tool, not as a public CLI command.- Figure and table extraction are available to the generator through
extract_pdf_page,extract_figure,extract_tables, andlist_pdf_pages. - Generated demos are written under
demos/unless--outputis provided.
git clone https://github.com/wshuai190/PaperDemoAgent
cd PaperDemoAgent
pip install -e ".[dev]"
pytest tests/See CONTRIBUTING.md.
MIT. See LICENSE.