notion-upload

Uploads local files to Notion pages as image or file blocks via the Notion API.

Updated Feb 27, 2026
One-click install
npx skills add https://github.com/Dawaad/skills --skill notion-upload-dawaad
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: notion-upload
Source: https://github.com/Dawaad/skills/tree/main/skills/notion-upload
Command: npx skills add https://github.com/Dawaad/skills --skill notion-upload-dawaad

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires httpx, and includes scripts (resource) components.

What problem does it solve? Attaching local files to Notion pages requires a multi-step API flow (create upload, PUT bytes, attach block) that is tedious to script by hand. This Skill handles the entire flow and returns a ready-to-use download URL. ## Core Features & Use Cases - Full Notion upload flow: Creates the file upload, sends the bytes, and attaches the result as a block on the target page in one command. - Automatic block-type detection: Image files become inline Notion image blocks; everything else becomes a file block, with manual override via --block-type. - Self-bootstrapping script: PEP 723 inline dependencies let uv run --script install httpx automatically on first run. - Use Case: You have a screenshot at /tmp/chart.png and a Notion page URL. Run the script with the file path and page ID to embed the image inline and get back a download URL, block ID, and expiry time as JSON. ## Quick Start Ask the AI to upload a local file to a Notion page by providing the absolute file path and the Notion page ID or URL, for example: "Upload /tmp/report.pdf to my Notion page 2785bbc0e5c281f48dfae9a48f53f6a6."

Frequently Asked Questions about notion-upload

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I upload a file to a Notion page with the API?

Run the bundled notion_upload.py script with the absolute file path and the Notion page ID. It performs the full flow: creating a file upload, sending the bytes, and attaching an image or file block to the page, then prints a JSON result with the download URL.

How to embed an image inline in a Notion page from the command line?

Pass the image file path to the script with the default --block-type auto. It detects image MIME types and creates a Notion image block that renders inline; other file types become generic file blocks.

What Notion API token do I need for file uploads?

You need a Notion internal integration token set as NOTION_API_TOKEN, created at notion.so/my-integrations. The integration must also be invited to the target page via Share → Add connections, or the attach step returns a 404.

What is the Notion file upload size limit?

The single-part upload flow supports files up to 20 MB. Larger files are rejected by the script before any API call; compress images or split files to stay under the limit.

Why does Notion file upload fail with 401 or 404 errors?

A 401 means NOTION_API_TOKEN is missing or invalid. A 404 on the attach step means the integration is not shared with the page; open the page in Notion, click Share, and add the integration as a connection.