paperfactory
AI agent for civil engineering research papers — 15 journals, 18 utilities, 4 templates, CLI + Web UI + Docker, PaperBanana diagrams, 245 tests. v1.0.0 released.
Install / Use
claude mcp add concrete-sangminlee -- npx -y github:concrete-sangminlee/paperfactoryIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Our assessment of paperfactory
paperfactory scores 78/100 on our quality scale, 1701st of 2,125 Automation skills we index.
Its MCP Server is 20 KB long, well organised into 45 sections with 24 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 6 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- Our last check on 2026-09-18 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 86/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the first 100 KB of the file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-09-29. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
paperfactory compared with similar skills
All 4 of these similar skills score higher than paperfactory; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| paperfactory (this skill)by concrete-sangminlee | 78 | 3 | 6mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 86.0k | 13d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.0k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install paperfactory?
- Run
claude mcp add concrete-sangminlee -- npx -y github:concrete-sangminlee/paperfactory. The install tabs above show the steps for each supported agent. - Which AI agents does paperfactory work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is paperfactory safe to use?
- Our scan of the first 100 KB of the file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 86/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is paperfactory still maintained?
- The repository was last updated about 6 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubPaperFactory
AI agent that writes research papers for structural engineering.
Tell it your topic and target journal — it handles the rest.
</div>What It Does
PaperFactory is a Claude Code native agent that automates the full lifecycle of research paper writing — from literature search to a submission-ready manuscript. You have a natural conversation in your terminal: describe your research topic, pick a journal, and the agent executes a 5-step pipeline, asking for your approval at every stage.
You: "고층건물 풍압계수의 ML 예측" 주제로 JWEIA에 낼 논문 써줘
PaperFactory: [searches 15+ real papers] → [designs methodology] → [writes & runs Python code]
→ [analyzes results] → [generates JWEIA-formatted Word document]
How It Works
flowchart LR
A["**You**\nTopic + Journal"] --> B
subgraph PaperFactory["PaperFactory Pipeline"]
direction LR
B["Step 1\nLiterature\nReview"] --> C["Step 2\nResearch\nDesign"]
C --> D["Step 3\nCode\nExecution"]
D --> E["Step 4\nResult\nAnalysis"]
E --> F["Step 5\nPaper\nWriting"]
end
F --> G["**.docx / .tex**\nJournal-formatted\nManuscript"]
style A fill:#4A90D9,color:#fff,stroke:none
style G fill:#2ECC71,color:#fff,stroke:none
style B fill:#E8F4FD,stroke:#4A90D9
style C fill:#E8F4FD,stroke:#4A90D9
style D fill:#E8F4FD,stroke:#4A90D9
style E fill:#E8F4FD,stroke:#4A90D9
style F fill:#E8F4FD,stroke:#4A90D9
Each step runs inside Claude Code using native tools:
| Step | What Happens | Tools Used |
|:----:|:-------------|:-----------|
| 1 | Searches Google Scholar, ScienceDirect for real papers. Collects 15+ references with DOIs. Identifies research gaps. | WebSearch WebFetch |
| 2 | Designs hypothesis, methodology, experiment plan. Plans 6+ figures and 3+ tables. Checks journal scope fit. | Read (guidelines JSON) |
| 3 | Writes Python code, executes it, auto-debugs errors (up to 5 retries). Generates publication-quality figures. | Bash Write |
| 4 | Statistical interpretation, comparison with prior work, honest limitations. Drafts Results & Discussion. | Read (outputs) |
| 5 | Assembles full manuscript per journal guidelines. Validates references. Exports Word (default) or LaTeX. | utils/ |
Human-in-the-loop: After each step, you review the output and can request changes before proceeding.
Supported Journals
<table> <tr> <td>| Journal | Key | Field |
|:--------|:----|:------|
| ASCE J. Structural Engineering | asce_jse | Structural |
| ACI Structural Journal | aci_sj | Concrete |
| J. Wind Eng. & Ind. Aerodynamics | jweia | Wind |
| J. Building Engineering | jbe | Building |
| Engineering Structures | eng_structures | Structural |
| Journal | Key | Field |
|:--------|:----|:------|
| Earthquake Eng. & Struct. Dynamics | eesd | Seismic |
| Thin-Walled Structures | thin_walled | Structural |
| Cement & Concrete Composites | cem_con_comp | Concrete |
| Computers & Structures | comput_struct | Computational |
| Automation in Construction | autom_constr | AI + Construction |
| Journal | Key | Field |
|:--------|:----|:------|
| Structural Safety | struct_safety | Reliability |
| Construction & Building Materials | const_build_mat | Materials |
| J. Constructional Steel Research | steel_comp_struct | Steel |
| Journal | Key | Field |
|:--------|:----|:------|
| KSCE J. Civil Engineering | ksce_jce | General (Korean) |
| Buildings (MDPI) | buildings_mdpi | Open Access |
Each journal has a detailed JSON guideline file in guidelines/ covering: manuscript structure, formatting (font, spacing, margins), citation style, figure/table rules, and submission requirements.
Quick Start
1. Install
# Install Claude Code CLI
npm install -g @anthropic-ai/claude-code
# Clone and set up PaperFactory
git clone https://github.com/concrete-sangminlee/paperfactory.git paperfactory
cd paperfactory
pip install -r requirements.txt
2. Run
claude
3. Tell it what you want
> "Deep learning-based seismic damage detection in RC frame structures" 주제로
Engineering Structures 저널에 낼 논문 써줘
Claude will execute the 5-step pipeline, showing results and asking for your approval at each step. The final .docx file appears in outputs/papers/.
Example Topics
<table> <tr> <td width="50%">Wind Engineering
CFD-validated ML model for across-wind response prediction of super-tall buildings above 300m
Seismic Engineering
</td> <td width="50%">Deep learning-based rapid seismic damage assessment of RC frame structures using acceleration sensor data
Concrete
Ensemble ML prediction of compressive strength of recycled aggregate concrete with fly ash and slag
AI + Structural
</td> </tr> </table>Physics-informed neural network for real-time structural health monitoring of cable-stayed bridges
Architecture
graph TB
subgraph "CLAUDE.md"
direction TB
A["Agent Instructions\n5-step pipeline definition\nQuality criteria per step\nFailure handling"]
end
subgraph "guidelines/"
direction TB
B["10 Journal JSONs\nManuscript structure\nFormatting rules\nCitation styles"]
end
subgraph "utils/"
direction TB
C["word_generator.py\nJournal-formatted .docx"]
D["latex_generator.py\nJournal-formatted .tex + .bib"]
E["figure_utils.py\nStandardized matplotlib style"]
F["reference_utils.py\nDOI/format validation"]
end
subgraph "outputs/"
direction TB
G["figures/ — PNG plots"]
H["data/ — CSV results"]
I["papers/ — .docx / .tex"]
end
A --> |reads| B
A --> |calls| C
A --> |calls| D
A --> |calls| E
A --> |calls| F
C --> I
D --> I
E --> G
style A fill:#FFF3E0,stroke:#F57C00
style B fill:#E3F2FD,stroke:#1976D2
style C fill:#E8F5E9,stroke:#388E3C
style D fill:#E8F5E9,stroke:#388E3C
style E fill:#E8F5E9,stroke:#388E3C
style F fill:#E8F5E9,stroke:#388E3C
style G fill:#F3E5F5,stroke:#7B1FA2
style H fill:#F3E5F5,stroke:#7B1FA2
style I fill:#F3E5F5,stroke:#7B1FA2
PaperBanana Integration
PaperFactory uses two different tools for figure generation depending on the type:
| Figure Type | Tool | Examples |
|:------------|:-----|:--------|
| Diagrams | PaperBanana (Nano Banana Pro) | Methodology overview, framework architecture, pipeline illustration |
| Data plots & tables | matplotlib + figure_utils.py | Scatter, box plot, contour, bar chart, time series, polar plot |
Why the split? AI image generation (PaperBanana) excels at conceptual diagrams but cannot render accurate numerical data — axis scales, data points, and legends will be wrong. Data-driven figures must be generated from code for reproducibility and accuracy.
flowchart LR
subgraph "Diagrams"
A1["Methodology text"] --> B1["PaperBanana\nNano Banana Pro"]
B1 --> C1["diagram.png"]
end
subgraph "Data Plots"
A2["Research data"] --> B2["matplotlib +\nfigure_utils.py"]
B2 --> C2["plot.png"]
end
C1 --> D["outputs/figures/\n→ Paper"]
C2 --> D
style B1 fill:#FFF3E0,stroke:#F57C00
style B2 fill:#E8F4FD,stroke:#4A90D9
style D fill:#E8F5E9,stroke:#388E3C
Supported Image Models (Nano Banana Family)
| Model | ID | Quality | Speed | Recommended |
|:------|:---|:--------|:------|:------------|
| Nano Banana | gemini-2.5-flash-image | Basic | Fast | |
| Nano Banana 2 | gemini-3.1-flash-image-preview | Good | Fast | |
| Nano Banana Pro | gemini-3-pro-image-preview | Best | Medium | Yes |
Setup
Important: A Google Cloud project with billing enabled (not free trial) is required. Free trial accounts are treated as free tier with
limit: 0on image generation. Upgrade to a full account — remaining free credits are preserved.
- Get an API key at Google AI Studio — create it in a billing-enabled project
- Create
.mcp.jsonin the project root (gitignored):
{
"mcpServers": {
"paperbanana": {
"command": ".venv/bin/paperbanana-mcp",
"args": [],
"env": { "GOOGLE_API_KEY": "your-api-key" }
}
}
}
- Install dependencies:
pip install "paperbanana[mcp] @ git+https://github.com/llmsresearch/paperbanana.git"
CLI Usage (without MCP)
paperbanana generate \
--input method.txt \
--caption "Overview of the proposed framework" \
--vlm-model gemini-2.5-flash \
--image-model gemini-3-pro-image-preview \
--optimize --auto --aspect-ratio 16:9
Once configured, Claude will automatically use PaperBanana when methodology diagrams are needed.
Utilities
PaperFactory includes Python utilities that Claude calls during the pipeline. They can also be used independently in your own research scripts.
<details> <summary><b>figure_utils.py</b> — Publication-quality figure styling</summary>from utils.figure_utils import setup_style, save_figure, get_colors, get_figsize
setup_style() # Times New Roman, DPI 300, inward ticks
colors = get_colors() # 8 distinct colors (B&W print safe)
w, h = get_figsize("single") # 3.5 x 2.8 in (single column)
fig, ax = plt.subplots(figsize=get_figsize("double"))
ax.plot(x, y, color=colors[0])
save_figure(fig, "fig_1_model_comparison") # → outputs/figures/
| Size Preset | Dimensions | Use Case |
|:------------|:-----------|:---------|
| single | 3.5 x 2.8 in | Single column figure |
| double | 7.0 x 4.5 in | Full width figure |
| square | 3.5 x 3.5 in | Correlation plots |
from utils.word_generator import generate_word
paper_content = {
"title": "Paper Title",
"authors": "A. Author, B. Author",
"abstract": "Abstract text...",
"keywords": "keyword1; keyword2",
"sections": [
{"heading": "INTRODUCTION", "content": "...", "subsections": [
{"heading": "Background", "content": "..."},
]},
],
"tables": [{"caption": "Table 1.", "headers": ["A", "B"], "rows": [["1", "2"]]}],
"references": ["[1] Author, Title, Journal..."],
"data_availability": "Data available on request.",
}
output_path = generate_word(paper_content, "asce_jse", figures=["outputs/figures/fig1.png"])
</details>
<details>
<summary><b>latex_generator.py</b> — LaTeX + BibTeX output</summary>
from utils.latex_generator import generate_latex
tex_path, bib_path = generate_latex(paper_content, "eng_structures", figures=["fig1.png"])
# → outputs/papers/Paper_Title_eng_structures.tex
# → outputs/papers/Paper_Title.bib
Automatically selects document class: elsarticle (Elsevier), ascelike (ASCE), article (others).
<deta
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
86.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.4k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.2kOpen-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
