Convert PDF and image files into 10 document and data formats, with OCR and layout controls.
Documents
Pdf Rename
Try itRename academic PDF papers to a standardized format "[Year] [Venue] Title.pdf" using a three-stage pipeline (Extract → Verify → Rename). Use when the user as...
What it does
Rename academic PDF papers to a standardized format "[Year] [Venue] Title.pdf" using a three-stage pipeline (Extract → Verify → Rename). Use when the user asks to organize, batch-rename, or metadata-enrich PDF files in a folder. Activates on keywords like "rename PDFs", "organize papers", "batch rename PDFs", "rename papers by metadata", "pdf重命名", "文献整理".
The skill document
PDF Rename — Academic Paper Organizer
Rename academic PDFs to: [Year] [Venue] Title.pdf
Three-stage pipeline:
Extract → Verify → Rename
Anti-error principle: Never re-parse PDF content during Rename. The Manifest is the single source of truth.
Quick Start
# Stage 1: Extract raw text → manifest.json
python scripts/extract.py ""
# Stage 2: LLM parses raw_text → inject verified data → manifest_verified.json
# (Agent reads manifest.json raw_text field and writes to scripts/VERIFIED_DATA_*.py)
python scripts/apply_verified.py ""
# Stage 3: Preview / Execute
python scripts/execute.py "" --preview
python scripts/execute.py "" --execute
Stage 1: Extract
What it does:
- Reads first 3 pages of each PDF
- Stores raw text in
manifest.json→raw_textfield - Extracts
year_hintfrom filename prefix - Detects potential duplicates by filename similarity
Manifest schema — see references/manifest_spec.md
Stage 2: Verify
The agent reads manifest.json, parses each raw_text field, and writes verified metadata.
Steps:
- Read
manifest.json - For each entry, parse the
raw_textto extract: title, authors, venue, year, abstract - Create or update
scripts/VERIFIED_DATA_*.pywith verified entries
VERIFIED_DATA format:
VERIFIED_DATA = {
"OriginalFilename.pdf": {
"title": "Correct Paper Title",
"year": "2024",
"venue": "NeurIPS",
"confirmed": True # must be True to be renamed
},
}
Rules:
- Key must exactly match the original filename
confirmed: True→ status becomesready→ will be renamedconfirmed: Falseor omitted → skipped- Multiple
VERIFIED_DATA_*.pyfiles are auto-merged - Prefer venue/conference year over filename year (e.g., arXiv 2022 → NeurIPS 2024)
⚠️ Key gotchas during parsing:
- Multi-line titles: pypdf concatenates lines without spaces (e.g.,
"Direct score maximization outperformsplanning loss") — use context to infer correct split - Journal refs at top of page:
"Math. Program. (2012) 133..."is NOT the title — read further - arXiv papers: use conference year if published, otherwise use arXiv year
- Non-paper files (book chapters, lecture notes, loss curves): set
confirmed: Falseand skip
Then run:
python scripts/apply_verified.py ""
Stage 3: Rename
- Only
status == 'ready'files are renamed - Duplicate titles →
(1),(2)suffixes - Backup created at
/_backup_YYYYMMDD_HHMMSS/
python scripts/execute.py "" --preview # dry run
python scripts/execute.py "" --execute # rename
Scripts
| Script | Purpose |
|---|---|
scripts/extract.py | Stage 1: extract raw PDF text → manifest.json |
scripts/apply_verified.py | Stage 2: inject verified metadata → manifest_verified.json |
scripts/execute.py | Stage 3: rename files (preview or execute) |
scripts/llm_parse.py | (Optional) programmatic LLM parsing via gateway API |
Known Failure Modes
| Symptom | Cause | Fix |
|---|---|---|
raw_text empty | PDF is a scan | Skip (confirmed: False) or manually determine metadata |
| Title extracted without spaces | pypdf concatenates lines | LLM infers from context; use filename as hint |
| Wrong year (arXiv ≠ conference) | Used filename year | Use venue year from raw_text, not filename |
| DOI/journal ref at top of page | Metadata precedes title | Read past it — title is usually after |
| Middle-dot author lines misidentified | · separator in names | LLM handles via semantic understanding |
| Non-paper files renamed | No filter applied | Set confirmed: False for non-papers |
| Windows filename encoding garbled | Chinese/non-ASCII chars in PowerShell | Use Python scripts, not manual file ops |
| Ligature artifacts | PDF encoding (e.g., fi → fi) | clean_title_text() in extract.py handles these |
References
references/manifest_spec.md— Full manifest JSON schemareferences/venue_abbrev.md— Standard venue abbreviation map
Related skills
Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation.
Compare innovations across multiple academic papers in a folder and produce a rolling summ document. Use when Codex needs to batch-read up to 20 paper files,...
Convert PDF documents to PowerPoint presentations via GoAI API. Use when the user asks to convert PDF to PPT, turn a PDF into slides, make a presentation fro...
PDF toolkit: extract, merge, split, compress, convert, watermark, and protect PDFs.
Convert PDF to editable Word and automatically verify the conversion quality. Runs a four-way reconciliation (character count, table count, image count, table-cell count) plus a page-count reference after conversion, so content loss or redundancy is surfaced as evidence instead of guesswork. Use when the user asks to convert PDF to Word, convert PDF to docx, check conversion quality, verify a converted document, or worries that PDF-to-Word conversion dropped content.