Skip to content
Back to skills

Pdf To Markdown

ASecurity

Use when research-paper analysis requires readable source or text that is not already available. Do not use for generic non-research PDFs.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsgobashgitapibackendsecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add MoeenNehzati/famulus --skill pdf-to-markdown --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pdf To Markdown?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pdf To Markdown
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/moeennehzati-pdf-to-markdown/badge)](https://www.skillsdirectory.com/skills/moeennehzati-pdf-to-markdown)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pdf-to-markdown
description: >-
  Use when research-paper analysis requires readable source or text that is not already available. Do not use for generic non-research PDFs.
tools:
  - marker_single
---


<!-- BEGIN BLUEPRINT INTERFACES -->
> Generated from `blueprint.yaml`. Do not edit this block by hand.

Executable Interfaces:

Send the required `caller` (caller skill), `interface`, `version`, and `arguments`; optional `dry_run` defaults to false. Compact uses ordered `positionals` plus an option mapping; ordered raw argv uses `positionals: []` plus every argv token in list `options`. Never mix forms.
- `pdf-to-markdown._rtx.interface.scripts-check-marker-models` — Check whether required Marker/Surya models are downloaded and cached locally.
  - Caller: `pdf-to-markdown`
  - Version: 1
  - Security level: 0
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": [], "stdin": null}
    Required options: []; positional arity: 0..0; stdin: forbidden
- `pdf-to-markdown._rtx.interface.scripts-fetch-arxiv-source` — Download and extract the LaTeX source tarball for a paper from arXiv.
  - Caller: `pdf-to-markdown`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": ["arxiv-id", "output-dir"], "stdin": null}
    Required options: []; positional arity: 1..2; stdin: forbidden

<!-- END BLUEPRINT INTERFACES -->
# PDF to Markdown

## Overview

Convert a research paper to LLM-readable text. Prefer LaTeX source over PDF conversion — LaTeX preserves math, structure, and cross-references that PDF-to-text destroys.

## Step 1 — Find LaTeX source (do this first)

**Input required:** paper title and authors. arXiv ID if known.

### arXiv (check first — highest hit rate for CS/math/econ)

1. No arXiv ID? Search `arxiv [title] [authors]` via WebSearch to find one.
2. Run the `scripts-fetch-arxiv-source` interface with `<arxiv-id> [<output-dir>]`.
   - Script downloads `arxiv.org/src/<id>`, extracts, lists `.tex` files found.
   - If arXiv returns HTML instead of a tarball, the paper has no source — move on.
3. Root file is usually `main.tex`; if absent, scan for the file that `\begin{document}`.
4. **Done — hand `.tex` files to the LLM.**

### If not on arXiv — check in order

- **Author GitHub:** WebSearch `"[title]" site:github.com` — look for a repo with `.tex` files
- **Author personal/institutional page:** WebSearch `[title] [author] latex source`
- **OpenReview** (`openreview.net/search?term=[title]`) — Attachments tab, look for source zip
- **ACL Anthology** (`aclanthology.org`) — NLP venues; links to arXiv preprint when one exists

If LaTeX source found anywhere: download, extract, done.

## Step 2 — PDF fallback via `marker_single`

If no LaTeX source found, convert the PDF directly.

**Before running:** check whether models are cached using the `scripts-check-marker-models` interface.
If any models are missing, warn the user: "Running marker will download missing models (~3GB total to `~/.cache/datalab/models/`). Proceed?" Do not run `marker_single` until confirmed.

**Standard invocation** (good typeset PDF, no extra cost):
```bash
marker_single paper.pdf --output_dir ./output --disable_image_extraction
```
Always specify `--output_dir` — the default buries output in the anaconda site-packages directory.

**Math-heavy paper** (ask user before using — slower, better equation/table output):
```bash
marker_single paper.pdf \
  --output_dir ./output \
  --disable_image_extraction \
  --llm_service <configured-marker-llm-service> \
  --use_llm \
  --redo_inline_math \
  --highres_image_dpi 300
```
Requires a configured Marker LLM backend, such as an Anthropic-backed Marker
service with `ANTHROPIC_API_KEY` in the environment or the matching API-key
flag. Uses the selected provider API (pay-per-token where applicable).

**Other useful flags:**
- `--page_range 0,5-10` — convert specific pages only
- `--output_format json` — structured output instead of flat markdown
- `--disable_ocr` — skip OCR for faster conversion (safe if PDF has selectable text)

Files in this skill

  • SKILL.md4.9 KB
  • _rtx/__init__.py53 B
  • _rtx/_marker_probe.py1.5 KB
  • _rtx/_source_fetcher.py1.9 KB
  • _rtx/blueprint.yaml1.9 KB
  • _rtx/blueprints/rtx-marker-probe.yaml3.7 KB
  • _rtx/blueprints/rtx-source-fetcher.yaml6.9 KB
  • _rtx/tests/test_skill_contract.py1.1 KB
  • blueprint.yaml1.4 KB
  • blueprints/gateway.yaml4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.