Skip to content
Back to skills

Arxiv2md

ASecurity

Convert arXiv papers to clean Markdown. Use when the user wants to read, fetch, or summarize an arXiv paper.

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added October 3, 2026
ai-agentspythonbashgitapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 3, 2026

npx -y skills add pengqianhan/AI-Human-Research-OS --skill arxiv2md --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Arxiv2md?

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

Security grade badge for Arxiv2md
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pengqianhan-arxiv2md/badge)](https://www.skillsdirectory.com/skills/pengqianhan-arxiv2md)

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: arxiv2md
description: Convert arXiv papers to clean Markdown. Use when the user wants to read, fetch, or summarize an arXiv paper.
---

# arxiv2md

Convert arXiv papers to LLM-ready Markdown. Parses arXiv's native HTML (not PDFs) for clean output with proper math, tables, and section structure.

## REST API (preferred for agents)

Base URL: `https://arxiv2md.org`

No auth, no key, no SDK. Rate limit: 30 requests/minute per IP. Results are cached server-side for 24h.

> **Don't just swap the hostname.** Visiting `https://arxiv2md.org/abs/2501.11120`
> (replacing `arxiv.org` → `arxiv2md.org`) returns the **HTML web app** for humans,
> not Markdown. For programmatic use always call `/api/markdown` or `/api/json` below.

### Get markdown

```bash
curl "https://arxiv2md.org/api/markdown?url=2501.11120"
```

Returns raw markdown as plain text.

### Get JSON (with metadata)

```bash
curl "https://arxiv2md.org/api/json?url=2501.11120"
```

Returns `{ "arxiv_id", "title", "source_url", "content" }`.

### Parameters

All optional query params for both endpoints:

| Param | Default | Description |
|-------|---------|-------------|
| `url` | required | arXiv URL or ID (e.g. `2501.11120v1` or `https://arxiv.org/abs/2501.11120`) |
| `remove_refs` | `true` | Remove references section |
| `remove_toc` | `true` | Remove table of contents |
| `remove_citations` | `true` | Remove inline citations |
| `frontmatter` | `false` | Prepend YAML metadata (`/api/markdown` only) |

### Examples

```bash
# Plain markdown for a paper
curl "https://arxiv2md.org/api/markdown?url=2501.11120"

# Keep references and citations intact
curl "https://arxiv2md.org/api/markdown?url=2501.11120&remove_refs=false&remove_citations=false"

# JSON with metadata
curl "https://arxiv2md.org/api/json?url=https://arxiv.org/abs/2501.11120v1"

# With frontmatter (title, authors, date as YAML header)
curl "https://arxiv2md.org/api/markdown?url=2501.11120&frontmatter=true"
```

## CLI

```bash
pip install arxiv2markdown

# Output to file
arxiv2md 2501.11120v1 -o paper.md

# Output to stdout
arxiv2md 2501.11120v1 -o -

# Only specific sections
arxiv2md 2501.11120v1 --section-filter-mode include --sections "Abstract,Introduction" -o -

# Strip refs and TOC
arxiv2md 2501.11120v1 --remove-refs --remove-toc -o -

# With YAML frontmatter
arxiv2md 2501.11120v1 --frontmatter -o paper.md
```

Section filtering (`--section-filter-mode` + `--sections`) is available in the CLI and
Python library, not the REST API.

## Python library

Import name is `arxiv2md`:

```python
from arxiv2md import ingest_paper_sync

result = ingest_paper_sync("2501.11120v1")
print(result.content)

# Async variant
from arxiv2md import ingest_paper
result = await ingest_paper("2501.11120v1")
```

Optional kwargs (same for both): `remove_refs`, `remove_toc`, `remove_inline_citations`
(all `True`), `section_filter_mode` (`"exclude"`), `sections` (`None` = all),
`include_frontmatter` (`False`).

> The REST API names the citation flag `remove_citations`; the CLI and Python library
> name it `remove_inline_citations`. Same behavior.

## Links

- Web app: https://arxiv2md.org
- Machine-readable guide: https://arxiv2md.org/llms.txt
- Source: https://github.com/timf34/arxiv2md
- PyPI: https://pypi.org/project/arxiv2markdown/

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.