Complete workflow for generating academic research posters from PDF literature; use when you need to extract paper content from PDFs and produce a LaTeX-based poster (beamerposter/tikzposter/baposter) with mandatory figure generation and a final rendered HTML deliverable.
68
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
poster.rendered.html) rather than a compiled PDF (PDF compilation is optional).assets/templates/beamerposter-template.texassets/templates/tikzposter-template.texassets/templates/baposter-template.texposter.rendered.html + figures/references/poster_quality_checklist.mdreferences/design_principles.md>=3.8pypdf (version not pinned)pdfplumber (version not pinned)pdf2image (version not pinned)pytesseract (version not pinned; required for OCR on scanned PDFs)pandas (version not pinned; optional for table handling)Pillow (version not pinned)matplotlib (version not pinned)Install (example):
pip install pypdf pdfplumber pdf2image pytesseract pandas pillow matplotlibtesseract-ocr (for OCR; required only for scanned PDFs)pdf2image, e.g., pdftoppm)tlmgr, names may vary by distribution):
beamerpostertikzposterbaposterqrcodexcolortcolorboxsubcaptiongraphicsExample:
tlmgr install beamerposter tikzposter baposter qrcode xcolor tcolorbox subcaption graphicspandoc (required for --html-only base HTML generation)pdf2htmlEX (optional; only if doing PDF → HTML rendering)Creates a timestamped directory under output/ and supports HTML-only mode.
python scripts/run_poster_pipeline.py paper.pdf --html-onlyExpected final structure:
output/YYYYMMDD_HHMMSS/
├── poster.rendered.html
└── figures/
├── mechanism.png
├── process_flowchart.png
└── comparison_chart.pngpython scripts/extract_metadata.py paper.pdf metadata.json
python scripts/structure_content.py paper.pdf --json poster_content.json --latex content.tex --max-words 800
python scripts/convert_pdf_to_images.py paper.pdf paper_images/ --dpi 600At least 2–3 figures are required.
python scripts/generate_figures.py schematic "Cell signaling pathway" mechanism.png
python scripts/generate_figures.py flowchart "Step 1;Step 2;Step 3" process_flowchart.png
python scripts/generate_figures.py comparison '{"Control":[65],"Our Method":[87]}' comparison_chart.pngOr generate from a config:
python scripts/generate_figures.py config figures_config.jsoncp assets/templates/beamerposter-template.tex poster.tex
# (Edit poster.tex: title/authors/institute + paste structured content)python scripts/insert_figures.py poster.tex --all
# or:
python scripts/insert_figures.py poster.tex --config figures_config.jsonpython scripts/convert_poster.py poster.tex --html-only
# Agent step: read poster.html, validate <img> paths, inject CSS/layout, output poster.rendered.htmlpython scripts/check_poster_quality.py poster.rendered.htmlAll generated files must be placed under output/ (preferably a timestamped subdirectory). Only the following are considered final deliverables:
poster.rendered.htmlfigures/ directory (PNG figures)All other files are intermediate/temporary and must not be returned to the user, including (non-exhaustive):
poster.tex, poster.htmlmetadata.json, poster_content.json, figures_config.json, figures.json.aux, .log, .out, etc.)Conceptual flow:
PDF → metadata extraction (temp) → content structuring (temp) → figure generation (final figures/)
→ LaTeX poster (temp) → base HTML (temp) → agent rendering → poster.rendered.html (final)pdfplumber.pdf2image) and running pytesseract.Typical extraction targets:
Supported figure categories:
Use one of the supported poster packages depending on style needs:
Templates are provided in assets/templates/.
After pandoc produces poster.html, the renderer must:
<img> references exist and paths resolve to figures/.poster.rendered.html as the only final HTML artifact.Minimum layout expectations:
Run scripts/check_poster_quality.py on the final output:
References:
references/design_principles.mdreferences/poster_quality_checklist.md63c61d3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.