Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zai-org/GLM-skills --skill glmv-pdf-to-webgit clone --depth 1 https://github.com/zai-org/GLM-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zai-org/glm-skills/glmv-pdf-to-web)<a href="https://agentmods.dev/skills/zai-org/glm-skills/glmv-pdf-to-web"><img src="https://agentmods.dev/badge/skills/zai-org/glm-skills/glmv-pdf-to-web/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zai-org/glm-skills/glmv-pdf-to-web"><img src="https://agentmods.dev/badge/skills/zai-org/glm-skills/glmv-pdf-to-web.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00063 | $0.03093 |
| Opus 5 | $0.00032 | $0.01546 |
| Sonnet 5 | $0.00013 | $0.00619 |
| Haiku 4.5 | $0.00006 | $0.00309 |
Grade A, and why
glmv-pdf-to-web scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
System tools: `curl` (pre-installed on macOS/Linux). How it starts
The opening of the file, as written. The whole thing — 362 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PDF → Academic Project Website Skill
Convert a research paper or technical document PDF into a polished single-page project website — the kind used for NeurIPS/CVPR/ICLR paper releases. Pages are converted locally at DPI 120, a structured outline.json is saved, images are cropped locally, and the final page is saved with generate_web.py.
Scripts are in: {SKILL_DIR}/scripts/
Dependencies
Python packages (install once):
pip install pymupdf pillow
System tools: curl (pre-installed on macOS/Linux).
When to Use
Trigger when the user asks to create a webpage or project page from a PDF — phrases like: "make a project page from a PDF", "create a paper website", "build an academic website for this paper", "论文主页", "做项目主页", "根据pdf做网页", "把论文做成主页", or any similar intent in Chinese or English.
Output Directory Convention
All output goes under {WORKSPACE}/web/<pdf_stem>_<timestamp>/:
web/
└── <pdf_stem>_<timestamp>/
├── outline.json ← structured web plan (WebPlan schema)
├── crops/ ← locally-saved cropped images
│ ├── fig_arch_crop.png
│ ├── table_results_crop.png
│ └── ...
└── index.html ← the website
<pdf_stem>= PDF filename without extension<timestamp>= formatYYYYMMDD_HHMMSS- HTML references images via relative path
crops/<name>_crop.png
Input
$ARGUMENTS is the path to the PDF file (local) or an HTTP/HTTPS URL.
- If user provides a URL: download with curl first, then convert
- If user provides a local PDF path: convert directly
Workflow
Phase 0 — Create Output Directory
import os, datetime
pdf_stem = os.path.splitext(os.path.basename(pdf_path))[0]
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
out_dir = os.path.join(workspace, "web", f"{pdf_stem}_{timestamp}")
mkdir -p "<out_dir>/crops"
Phase 1 — Convert PDF Pages to Images (DPI 120)
If the input is a URL, download it first:
pdf_stem=$(basename "$ARGUMENTS" .pdf)
curl -L -o "/tmp/${pdf_stem}.pdf" "$ARGUMENTS"
Then convert (pass either the downloaded path or the original local path):
python {SKILL_DIR}/scripts/pdf_to_images.py "<pdf_path>" --dpi 120
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 362 lines · 63 tokens per session scan A e218f827b860
glmv-pdf-to-web is a skill published in the GitHub repository zai-org/GLM-skills (474 stars, last pushed 4mo ago), licensed Apache-2.0. It adds 63 tokens to every session and 3,093 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
paper2html
Convert an academic paper PDF into a publish-ready, self-contained single-page project homepage (a self-contained index.html) — the kind of paper landing page researchers host on GitHub Pages. Triggers when the user says "turn a paper into a project page/webpage", "paper2html", "generate a paper landing page / project…
mk:multimodal
Process images, video, audio, PDFs with Gemini API. Generate images (Nano Banana 2), videos (Veo 3), speech (MiniMax TTS), music (MiniMax). Convert documents to Markdown. Multi-provider fallback (Gemini → MiniMax → OpenRouter). Activate when task references media files, asks to…
A set of instructions for working with PDF files, which are documents designed to preserve their layout across devices.
paddleocr-doc-parsing
A document-parsing tool configuration for extracting structured Markdown or JSON from complex PDFs and document images, including tables, formulas, charts, and multi-column pages.
paddleocr-text-recognition
An optical character recognition tool configuration for extracting text from images, photos, scans, screenshots, and scanned PDFs. OCR means converting text visible in an image into machine-readable text.
invoice-document-pdf
Generating invoices, contracts, forms, receipts, and business documents as professional PDFs.