Install
openclaw skills install @shiguili/1shotposterCreate print-ready academic posters from papers or project pages in one request, producing editable source, final PDF/PNG, local assets, logos, QR codes, and...
openclaw skills install @shiguili/1shotposterThe task is not complete until the poster package contains:
poster.html;GATE_REPORT.json or an equivalent validation report;A browser screenshot alone is a failure. An interactive editor alone is a failure. A poster that only looks good in screen mode is a failure. If any required artifact or hard gate cannot be produced, say the poster is blocked or incomplete and name the missing gate.
One-shot means one user request, not zero internal iteration. Drive the work end-to-end with minimal clarification: ask at most one compact clarification batch, then make reasonable choices, render, measure, fix, and re-render internally until the hard gates pass. Do not imply that the first draft is final; the promise is that the user does not need to manually coordinate the production pipeline.
Use this order:
posterly when available, or build an equivalent exact-size HTML/CSS workflow with Chromium print rendering and hard gates. This is the only default path for a final PDF.ethanweber/posterskill ideas for reference-poster matching, web/project asset discovery, aspect-ratio-aware image placement, and window.posterAPI whitespace optimization. Bake the resulting layout back into stable source and still run the production gates.Never choose a path whose natural output is only a screenshot. See references/engine-selection.md and references/failure-analysis.md before using a non-posterly path.
Create a single working folder, for example:
poster/
poster.html
poster.pdf
poster.png
GATE_REPORT.json
CLAIM_EVIDENCE.md
POSTER_STATE.json
images/
sources/
Record every source decision in POSTER_STATE.json: paper path or URL, venue page URL, canvas size, poster date/time, room, poster number, QR target, logo sources, figure sources, and user constraints.
Prefer paper source over PDF. If only PDF is available, extract text and render page images so figures can be checked visually against the source.
Use official sources for current or externally changing facts:
Store fetched assets locally. Do not leave remote image URLs in the final poster.
Logo discovery is active, not passive. If the user says "ICML poster," look for an official ICML logo. If the user says "CVPR poster," look for an official CVPR logo. Then identify author affiliations from the paper source/PDF/arXiv/OpenReview page and fetch key institution logos. When the author list is long, keep a compact set: first-author affiliation, corresponding-author affiliation, and any dominant shared affiliation; omit secondary logos that would crowd the title. Record omitted logos and why.
Before writing final poster prose, create a compact table:
poster claim | source | evidence | status
Statuses: OK, NUMERIC-MISMATCH, OVERCLAIM, MISSING-PRECONDITION, NOT-IN-SOURCE, INTENTIONAL-SUMMARY.
Audit these especially carefully:
Do not invent numbers. If the paper gives a nuanced or conditional statement, preserve the condition or weaken the poster text.
Use real paper figures/tables unless the user requests a conceptual redraw. For each used paper figure:
data-source="paper" and data-asset-id="fig5";scripts/figure_edge_audit.py on figure crops and visually inspect any edge warning.For logos:
scripts/logo_asset_plan.py for raster logos;scripts/logo_selection_plan.py when author/affiliation metadata is available;For QR codes:
Use a print canvas with a real @page { size: ... } rule. Match official dimensions rather than assuming a default venue size.
Design rules:
object-fit: contain, not hard clipping;overflow: hidden on a figure container unless the crop has been audited;Header and footer rules:
For posterly, use the canonical loop:
python tools/run_gates.py poster.html --report GATE_REPORT.json
python tools/render_preview.py poster.html --pdf poster.pdf --png poster.png
python tools/poster_check.py verify-final poster.pdf --from-html poster.html
python scripts/check_poster_deliverables.py poster
If FIGURE_MANIFEST.json exists, run:
python tools/run_gates.py poster.html --manifest FIGURE_MANIFEST.json --report GATE_REPORT.json
If using a fallback engine, reproduce the same gate meanings:
Do not report success until every hard gate passes or an explicitly user-approved waiver is recorded.
Inspect the final rendered PNG, not only the HTML. Check:
Run scripts/audit_poster_text.py on the final HTML and remove repeated phrases unless they serve distinct reader modes: scan, mechanism, evidence, practical deployment, or logistics.
Return the paths to the final PDF, PNG, HTML/source, local assets, and gate report. State any non-running optional gates, such as a missing figure manifest, clearly.
From posterly:
preflight -> style -> asset -> measure -> polish gates;From ethanweber/posterskill:
window.posterAPI.getWaste() or equivalent browser measurement to reduce wasted figure space;The combined skill succeeds when the interactive/editor ideas feed the production renderer, not when they replace it.
references/engine-selection.md: when to use posterly, posterskill, or fallback HTML.references/failure-analysis.md: why screenshot-only outputs happen and the design rules that prevent them.references/logo-discovery.md: active conference and affiliation logo discovery, prioritization, and provenance rules.references/poster-system-comparison.md: detailed comparison of the three workflows.references/content-qa.md: claim-evidence and duplicate-content review rules.references/visual-qa.md: figure completeness, logo handling, and final render inspection rules.scripts/check_poster_deliverables.py: hard check for required final artifacts and local assets.scripts/audit_poster_text.py: extract poster text and flag repeated phrases/sections.scripts/figure_edge_audit.py: detect figure crops with ink touching edges.scripts/logo_selection_plan.py: prioritize conference, first-author, corresponding-author, and dominant-affiliation logos.scripts/logo_asset_plan.py: inspect logo dimensions, transparency, white backgrounds, and placement treatment.