Turn a CVPR 2026 paper into a print-ready 84"×42" poster by chatting with an AI agent. No manual templating, no PowerPoint, no fighting with print dialogs.
This is a Claude Code / Codex skill — not a standalone CLI tool. You install it once into your agent, then talk to it in plain language.
Claude Code
git clone https://github.com/yunyiliu/cvpr-2026-poster-skill.git
mkdir -p ~/.claude/skills
ln -s "$(pwd)/cvpr-2026-poster-skill/cvpr-2026-poster" ~/.claude/skills/cvpr-2026-posterStart a new Claude Code session (existing sessions don't auto-pick-up
new skills). The skill appears in the available-skills list as
cvpr-2026-poster.
Codex / other agents: copy or symlink the same cvpr-2026-poster/
folder into your agent's skill location — refer to that tool's docs
for the exact path.
In a new session, write a single message like:
Use
$cvpr-2026-posterto create a poster workspace from my Overleaf folder at/path/to/your/overleaf-folder/. Fill the brief from LaTeX, copy figures, auto-fetch institution logos, and sync the editable poster.
The agent will:
- Run
init_poster_project.pyto scaffold the workspace - Run
fill_brief_from_latex.pyto extract your paper's title, authors, affiliations, abstract, and figures - Run
sync_poster_from_brief.pyto populate the editable HTML, copy figures into place, and fetch logos from your institutions' websites - Open the resulting
poster/index.htmlfor you to inspect
If you have multiple institutions, list them in the same order as
Affiliations in poster_brief.md and add one institution website
per school. The agent does this automatically when the LaTeX is clear.
Once the poster is open in the browser, just describe edits in chat:
Make the Results card use a side-by-side figure/text layout, and shrink the conference logo a bit.
The Contributions card is too long — keep it to one lead sentence and three bullets.
Move the Conclusion card to the bottom of the rightmost column.
The agent will edit poster-config.json (and re-embed it into
index.html) for you. Hard-refresh the browser tab to see the result.
You can also edit in the browser directly:
- Drag column dividers to change column widths
- Drag horizontal dividers to change card heights
- Drag a card's
◆handle (or click two handles in sequence) to swap card positions - Use
A+/A-to scale all fonts globally - Click Save when you're happy — that downloads
poster-config.jsonto~/Downloads/with your layout
After you click Save in the browser, in a terminal:
cd poster-workspace
bash bake_and_export.shThis picks up the saved poster-config.json from ~/Downloads/,
re-embeds it into index.html, and runs headless Chrome to produce
poster.pdf at exactly 84.01" × 42.01" (or the workshop size).
If you have not touched the layout in the browser since the last agent edit, just run:
bash export_pdf.shSend poster.pdf directly to your printer.
- Google Chrome (for the PDF export step)
- Python 3 (preinstalled on macOS and most Linux distros)
That's all. The skill ships the rest:
- LaTeX extractor
- Institution-logo auto-fetcher
- Editable HTML poster scaffold
- Headless-Chrome PDF exporter at the exact poster size
- Official CVPR 2026 Denver logo and template
A typical workspace looks like:
poster-workspace/
├── poster_brief.md ← human-readable summary of paper content
├── poster/
│ ├── index.html ← the editable poster, open in a browser
│ ├── poster-config.json ← serialized layout + content
│ ├── figures/ ← display copies of figures
│ └── logos/
│ ├── user/ ← school logos (top-left)
│ └── official/ ← CVPR conference logo (top-right)
├── assets/
│ ├── figures/ ← original figures from the LaTeX project
│ └── logos/ ← school / lab logos (user or auto-fetched)
├── references/
│ └── latex-extract.md ← summary of what was pulled from LaTeX
├── export_pdf.sh ← one-command headless-Chrome PDF export
└── bake_and_export.sh ← bake current browser layout, then export
| Track | Poster size | Aspect ratio |
|---|---|---|
| Main / Findings | 84" × 42" (2134 × 1067 mm) | 2 : 1 landscape |
| Workshop | 42" × 21" (1067 × 533 mm) | 2 : 1 landscape |
Output is PDF, no bleed. The exporter honors the poster's @page
declaration so the PDF page size matches the track exactly.
If you want to drive the scripts manually instead of through an agent, all of them are plain Python:
python3 cvpr-2026-poster/scripts/init_poster_project.py --project-dir ./poster-workspace --track main
python3 cvpr-2026-poster/scripts/fill_brief_from_latex.py --project-dir ./poster-workspace --latex-dir /path/to/overleaf --copy-figures
# edit poster-workspace/poster_brief.md
python3 cvpr-2026-poster/scripts/sync_poster_from_brief.py --project-dir ./poster-workspace --fetch-logos-if-missing
open poster-workspace/poster/index.html
# (edit in browser, click Save when done)
cd poster-workspace && bash bake_and_export.shMIT. See LICENSE.