Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when turning an academic paper PDF/arXiv/OpenReview page/local LaTeX source into a single-file Chinese HTML deep-reading page, especially when the user wants a Cheat-Sheet style explanation, KaTeX formulas, figure/table evidence, validation, or a publishable research page.
.claude/skills/cnfjlhj-paper2html/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 227% | 0% |
Create one self-contained Chinese index.html that lets the user read the page and understand the paper without reopening the PDF. Default style: clear Cheat-Sheet page, focused evidence, KaTeX formulas, no decorative complexity.
Use scripts first. Keep this skill as workflow/quality gates, not a long prompt.
bashcd /path/to/paper2html # 1) Create workspace + source-boundary note + starter index.html python scripts/bootstrap_paper2html.py \ --title "Paper Title" \ --slug paper-slug \ --out /path/to/output/paper-slug-html-YYYYMMDD \ --arxiv 2504.07952 \ --github https://github.com/org/repo \ --publish-to self-evolving-agent/topic/paper-slug # 2) If TeX/source exists, create a structural inventory python scripts/tex_inventory.py \ /path/to/output/source/unpacked \ --out /path/to/output/notes/tex-inventory.md \ --json /path/to/output/notes/tex-inventory.json # 3) Optimize figures and get data URIs for single-file HTML python scripts/optimize_paper_images.py \ paper_figures/*.pdf paper_figures/*.png \ --out-dir /path/to/output/assets/optimized \ --width 1600 \ --data-uri-json /path/to/output/assets/data-uris.json # 4) Optional but preferred: ask Gemini for a visual draft on a copy scripts/gemini_frontend_pass.sh \ /path/to/output/index.html \ --reference /path/to/good-reference.html \ --timeout 240 # To inspect the exact Gemini prompt and attached materials without spending a model call: scripts/gemini_frontend_pass.sh \ /path/to/output/index.html --dry-run # 5) Validate final HTML after Codex merges the useful visual changes and # fills/repairs the paper details. scripts/validate_paper_html.sh \ /path/to/output/index.html --public # 6) Optional: publish through a compatible research-page importer. # Requires PAPER2HTML_BLOG_ROOT and a repo that provides `pnpm research:publish`. PAPER2HTML_BLOG_ROOT=/path/to/blog \ PAPER2HTML_PUBLIC_BASE_URL=https://example.com/research \ scripts/publish_paper2html.sh \ /path/to/output/index.html \ --to self-evolving-agent/topic/paper-slug \ --title "Paper Title" \ --description "One sentence summary" \ --tags "paper-reading,agent" \ --ship
bootstrap_paper2html.py when starting from a known title/arXiv/GitHub. Otherwise manually create the same notes/source-boundary.md.tex_inventory.py when source exists.pdftotext is only an auxiliary index.index.gemini-draft.html withgemini_frontend_pass.sh, using prompts/gemini-initial-html.md as the initial prompt. The script auto-attaches common notes from <output>/notes/: material-pack.md, tex-inventory.md, figure-table-map.md, and source-boundary.md.
index.html, then adds missing paper details, formulas, figures, tables, evidence boundaries, and reviewer comments.
responsive behavior, and component composition. It must not become the source of factual paper content.
先给结论, 研究动机, 数学表示及建模, 算法流程/方法, 实验设计, 实验结果, 我的评论, One More Thing, Reference / Evidence.
\(...\) or $...$; block math uses $$...$$ or \[...\].One More Thing is for bounded research insight, not unsupported extrapolation.Reference / Evidence contains only public online links./home/..., main.tex, sections/..., appendices/..., private PDF paths, hidden prompts, unpublished logs, or private run roots.scripts/validate_paper_html.sh <index.html> from this skill.katex-error, desktop screenshot, mobile screenshot, no mobile horizontal overflow.index.gemini-draft.html was created, compare it against index.htmland merge only design improvements that preserve source-faithful content.
pnpm research:publish command, use the optional one-step publisher:PAPER2HTML_BLOG_ROOT=/path/to/blog scripts/publish_paper2html.sh <index.html> --to=<topic/series/slug> --title="..." --description="..." --tags="..." --ship
--check for import plus local validation without commit/push.--ship runs: paper HTML validation, public evidence guard, import, Prettier formatting of touched research files, format:check, lint, build, commit, push, deploy-workflow watch, and remote URL verification.pnpm research:publish control script, so the target repo owns staging, commit, and deploy behavior.--no-watch or --no-remote-verify.assets/cheatsheet-template.html is the fixed visual skeleton. Copy it into the output directory when starting a new page, then fill content and embed images.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 28,520 | 7,978 | -72% | 1 | 1 | 0% | 6,229 | 2,252 | -64% | 0 | 0 | — |
case-02 | fail→fail | 32,936 | 6,636 | -80% | 1 | 1 | 0% | 5,829 | 2,272 | -61% | 0 | 0 | — |
case-03 | fail→fail | 33,681 | 6,476 | -81% | 1 | 1 | 0% | 6,214 | 2,194 | -65% | 0 | 0 | — |
case-04 | fail→pass | 15,267 | 8,556 | -44% | 1 | 1 | 0% | 2,516 | 3,367 | +34% | 0 | 0 | — |
case-05 | pass→pass | 15,237 | 13,304 | -13% | 1 | 1 | 0% | 2,428 | 4,100 | +69% | 0 | 0 | — |
case-06 | fail→pass | 30,866 | 2,911 | -91% | 1 | 1 | 0% | 2,687 | 2,481 | -8% | 0 | 0 | — |
case-07 | pass→pass | 12,391 | 4,772 | -61% | 1 | 1 | 0% | 1,980 | 2,794 | +41% | 0 | 0 | — |
case-08 | fail→pass | 11,704 | 11,613 | -1% | 1 | 1 | 0% | 1,840 | 3,570 | +94% | 0 | 0 | — |
case-09 | pass→pass | 11,055 | 7,734 | -30% | 1 | 1 | 0% | 1,653 | 3,205 | +94% | 0 | 0 | — |
case-10 | fail→pass | 9,388 | 2,788 | -70% | 1 | 1 | 0% | 1,527 | 2,474 | +62% | 0 | 0 | — |
case-11 | pass→pass | 8,304 | 2,703 | -67% | 1 | 1 | 0% | 1,196 | 2,417 | +102% | 0 | 0 | — |
case-12 | fail→pass | 4,958 | 3,638 | -27% | 1 | 1 | 0% | 813 | 2,656 | +227% | 0 | 0 | — |
case-13 | fail→pass | 8,138 | 3,173 | -61% | 1 | 1 | 0% | 1,335 | 2,513 | +88% | 0 | 0 | — |
case-14 | fail→pass | 8,786 | 1,929 | -78% | 1 | 1 | 0% | 1,412 | 2,305 | +63% | 0 | 0 | — |
case-15 | fail→pass | 8,490 | 4,522 | -47% | 1 | 1 | 0% | 1,238 | 2,763 | +123% | 0 | 0 | — |
case-16 | pass→pass | 13,907 | 14,707 | +6% | 1 | 1 | 0% | 2,278 | 4,382 | +92% | 0 | 0 | — |
case-17 | pass→pass | 12,335 | 8,031 | -35% | 1 | 1 | 0% | 1,687 | 3,193 | +89% | 0 | 0 | — |
case-18 | pass→pass | 10,258 | 3,938 | -62% | 1 | 1 | 0% | 1,600 | 2,628 | +64% | 0 | 0 | — |
case-19 | fail→pass | 13,062 | 3,159 | -76% | 1 | 1 | 0% | 1,061 | 2,633 | +148% | 0 | 0 | — |
case-20 | pass→pass | 6,599 | 5,151 | -22% | 1 | 1 | 0% | 1,166 | 2,819 | +142% | 0 | 0 | — |
case-21 | pass→pass | 5,424 | 4,036 | -26% | 1 | 1 | 0% | 930 | 2,673 | +187% | 0 | 0 | — |
case-22 | pass→pass | 14,691 | 11,137 | -24% | 1 | 1 | 0% | 2,838 | 4,181 | +47% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.