Notion Print: From Notion Page to Paper in One Step

Two Claude Code skills that fetch Notion pages, convert them to print-ready Markdown, and optionally send them straight to the printer.

The Problem

Notion's built-in export is clunky for printing. You get a Markdown file with broken image links, no page formatting, and no way to control margins or paper size. If you export to PDF, you get Notion's web layout — sidebars, navigation, and all — not a clean document. For a household that prints Notion pages daily (lesson plans, checklists, reference materials), this is a daily annoyance.

Two Skills, One Pipeline

The project splits this into two composable skills:

notion-printable-markdown

This skill handles the Notion-to-Markdown conversion. Give it a page title or a Notion URL, and it:

  1. Extracts the 32-character page ID from the URL (or searches Notion by title)
  2. Fetches the full page content via the Notion MCP's notion-fetch tool
  3. Appends sub-pages and linked databases below horizontal rules if the page has child content
  4. Writes the result to /tmp/notion-print-<page-id>.md with A4 PDF front-matter (format, margins, print background)
  5. Returns the file path for downstream use

This skill is the bridge between Notion and the local filesystem. It doesn't print anything — it just produces a file that's ready for md-to-pdf conversion.

notion-print

This skill is the end-to-end version. It does everything notion-printable-markdown does, then adds:

  1. Converts the Markdown to PDF via npx md-to-pdf
  2. Sends to the Brother printer via lp
  3. Reports the print job ID
  4. Optionally keeps the PDF for re-printing (default: keep)

Say "print the Week 3 lesson plan from Notion" and paper comes out.

Why Two Skills?

Separation of concerns. The print-lesson-plans orchestration skill needs the intermediate Markdown file — it fetches multiple Notion pages and prints them in a batch. If the Notion fetch and the printing were fused into one skill, the orchestrator couldn't control the flow. By splitting them, each step is independently usable and composable.

Handling Notion's Quirks

  • Expiring image URLs. Notion's S3 image URLs have short TTLs. If images appear broken in the output, the skill downloads them locally and rewrites the Markdown paths to local file URIs.
  • Inline databases and child pages. Notion doesn't auto-expand these in the API response. The skill explicitly fetches each child page and appends it below a separator.
  • Page ID extraction. Notion URLs come in several formats — with dashes, without dashes, with or without a title slug. The skill strips everything to get the raw 32-character hex ID.

Both skills support the same natural language modifiers as the Markdown print skills:

  • Multiple copies, duplex, landscape, no margins
  • "Just save the PDF" or "just save the Markdown" to stop at intermediate steps
  • "Print the whole database" to loop over all results from a Notion search and print each page