Logo
Apdf tutorials September 2026 4 min read

How to Extract PDF Content into Markdown Notes with an Agent

The naive way to get a PDF into your notes is to paste the whole thing into a chat window and hope the model keeps its footing — burning context on page headers and boilerplate, and losing every page number in the process.

The better way: give the agent tools instead of tokens. Connected to Apdf over MCP, it pulls exactly the text it needs — structured, page by page — and writes the note your vault actually wants, with citations that survive.

What you'll build
A benchmark report turned into a vault-ready Markdown note — this conversation, working end to end: “Turn this PDF into a note” → front matter, key stat with page cite, section map
MCP access needs Pro (14-day trial, no card)
1

Connect the agent to Apdf

One OAuth endpoint covers Claude Desktop, Claude Code, Cursor — anything that speaks MCP:

claude mcp add --transport http apdf https://apdf.io/mcp/main
2

Ask for the note, not the text

You
Turn this report into a Markdown note for my vault — front matter, the headline stat, and a section map with page numbers:
https://files.northlight.example/research/benchmark-report.pdf
Claude
apdf · read-pdf-metadata, read-pdf-content
Done — it's an 8-page A4 report. I've read the full text page by page and written the note below, with every claim carrying its page number.

The read-pdf-content tool is what keeps the note honest — text arrives already segmented by page, so citations come free:

{
    "pages_total": 8,
    "characters_total": 934,
    "pages": [
        {
            "page": 1,
            "characters": 128,
            "content": "2026 Client Reporting Benchmark\nHow 400 agencies deliver, and what clients actually read.\n\nPage 1 of 8 - Northlight Consulting\n\n"
        },
        {
            "page": 3,
            "characters": 109,
            "content": "Key Findings\nReport length is up 31%. Client reading time is down 47%.\n\nPage 3 of 8 - Northlight Consulting\n\n"
        }
    ]
}

(Two of the eight page objects shown.) And the note the agent writes from it:

---
source: 2026 Client Reporting Benchmark (PDF, 8 pages)
captured: 2026-07-23
tags: [reporting, benchmarks, agencies]
---

# 2026 Client Reporting Benchmark

> How 400 agencies deliver, and what clients actually read.

**Key stat:** report length is up 31% while client reading time
is down 47% (p. 3).

## Section map
- Executive Summary — five findings on packaging monthly reports (p. 2)
- Benchmarks by Agency Size — cadence, format, tooling (p. 4)
- Case Study: Halstrom & Co — 40-page decks → 6-page narratives,
  doubled replies (p. 5)
- Methodology (p. 6) · Recommendations (p. 7)
3

Pull quotes without re-reading

Weeks later, you need the exact line for a citation — no need to re-extract the document. search-pdf-content finds it with its position:

You
What was the exact wording of that reading-time stat, and which page?
Claude
apdf · search-pdf-content
Page 3: “Report length is up 31%. Client reading time is down 47%.”
{
    "search_text": "reading time",
    "results_total": 1,
    "results_pages": 1,
    "results": [
        {
            "page": "3",
            "matched_line": "Report length is up 31%. Client reading time is down 47%.",
            "exact_word": "reading time"
        }
    ]
}
Tip: Scanned source? Swap in read-pdf-content-with-ocr and search-pdf-content-with-ocr — same shapes, OCR pass included. The OCR tutorial walks through it.

Where to go from here

The same connection carries every PDF operation — and the engagement layer behind them.

After the API call

Your code made the PDF.
Then it went dark.

Opened, read, re-read, dropped on page 4 — you never see any of it. Share the PDFs you generate through Apdf recipient links, and every signal becomes something you can act on: ping Slack, update the CRM, let an agent follow up. Same account, same API token, one more call.

Your PDF, after sending Live
document:loaded CFO
page:read p4 · 38s
link:clicked pricing

API · Webhook · MCP