notion-to-markdown
Skill19 starsChanged 5 months agoMITView on GitHub
Directly convert Notion pages to Obsidian-friendly Markdown using MCP fetch and local processing. Use this skill when you need to migrate specific Notion pages identified by URL or ID into the local Obsidian vault, ensuring LaTeX normalization, image localization, and property-to-frontmatter mapping.
- Installs packages
In this repository14 other files it gives its agents.
- good-questionSkill
- knowledge-distillation-from-discussionSkill
- mao-semantic-searchSkill
- markdown-to-htmlSkill
- markitdown-convertSkill
- obsidian-auto-classifierSkill
- obsidian-batch-yamlSkill
- obsidian-semantic-searchSkill
- paper-code-auditSkill
- paper-deep-readerSkill
- paper-finderSkill
- paper-quick-readSkill
- tech-doc-writingSkill
- weekly-report-generatorSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 3 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Use notion-search to find the exact page ID or URL.
- Distinctive: line 31
Run the migration script to convert the JSON content to localized Markdown.
- Distinctive: line 38
Normalize Indentation: Ensure consistent 2 or 4-space indentation for nested blocks.
- Distinctive: line 39
Fix Block Spacing: Ensure double newlines exist between headings, details blocks, and paragraphs.
- Very specific: line 40
Verify Equations: Check that all $$ blocks are correctly populated with recovered LaTeX.
- Very specific: line 41
Final Polish: Remove any redundant HTML tags or artifacts (e.g., empty <span> tags).
- Very specific: line 52
Conda Environment: Must use the jarvis environment (conda activate jarvis).
- Very specific: line 54
stable_jarvispackage: Must be installed in editable mode (pip install -e .) within the jarvis environment. - Very specific: line 60
Missing Content: If the fetch result is truncated, ensure you are capturing the full output of the notion-fetch tool.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Notion to Markdown
This skill provides a high-level workflow for fetching live Notion pages and converting them into clean, localized Markdown files suitable for an Obsidian vault.
Overview
Unlike bulk migration from exports, this skill leverages the Notion MCP (notion-fetch) to retrieve page content directly and then uses the stable_jarvis.notion_to_obsidian toolkit to perform surgical processing.
Execution Workflow
Step 1: Precise Identification
Use notion-search to find the exact page ID or URL.
# Example search
notion-search query="Leveraging Skills from Unlabeled Prior Data"Step 2: Fetch and Save Content
Retrieve the raw Notion content and save it to a temporary JSON file.
# Fetch content via MCP
notion-fetch id="[PAGE_ID]" > temp_fetch.jsonStep 3: Local Processing
Run the migration script to convert the JSON content to localized Markdown.
python skills/notion-to-markdown/scripts/migrate.py temp_fetch.json [OUTPUT_DIR]Step 4: Verification and Refinement
Inspect the output Markdown. Notion content can sometimes be "jammed" or have deep indentation that script-based normalization might miss. Use the replace tool to:
- Normalize Indentation: Ensure consistent 2 or 4-space indentation for nested blocks.
- Fix Block Spacing: Ensure double newlines exist between headings, details blocks, and paragraphs.
- Verify Equations: Check that all
$$blocks are correctly populated with recovered LaTeX. - Final Polish: Remove any redundant HTML tags or artifacts (e.g., empty
<span>tags).
Key Capabilities
- LaTeX Normalization: Converts Notion's
$ \dots $and$ \dots $to standard$...$and$$...$$syntax. - Image Localization: Automatically detects and downloads Notion S3-hosted images, saving them to a local
assets/folder and updating Markdown links. - Frontmatter Mapping: Extracts Notion properties (Status, Tags, Journal Name, etc.) and maps them to YAML frontmatter.
- Style Conversion: Transforms Notion-specific spans (e.g., color backgrounds) to Obsidian highlights (
==text==).
Dependencies
- Conda Environment: Must use the
jarvisenvironment (conda activate jarvis). notion-fetchMCP Tool: Required to retrieve page data.stable_jarvispackage: Must be installed in editable mode (pip install -e .) within thejarvisenvironment.httpx: Used for reliable image downloads.
Troubleshooting
- Expired Image URLs: Notion S3 URLs are temporary. Ensure the
migrate.pyscript is run immediately afternotion-fetch. - Missing Content: If the fetch result is truncated, ensure you are capturing the full output of the
notion-fetchtool.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

