From paper-to-notion
Evidence-driven paper reading and Notion publishing workflow. Use when an agent needs to set up a Notion paper-reading database, read an academic paper from a local PDF, arXiv URL, DOI, paper URL, or title, extract metadata and source-grounded evidence, generate an English-by-default report with embedded figures, formulas, tables, code/reproducibility notes, optional Chinese or bilingual output, and create or update a record in a Notion paper database across Codex, Claude, WorkBuddy, or compatible MCP/CLI runtimes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/paper-to-notion:paper-to-notion-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to turn papers into durable Notion records: a lean database row for indexing, plus a rich Notion page report that carries the actual reading work. Default to English reports unless the user requests Chinese or bilingual output.
agents/openai.yamlconfig/notion_schema.yamlreferences/deep-reading-contract.mdreferences/environment-setup.mdreferences/notion-database-schema.mdreferences/notion-publishing.mdreferences/positioning.mdreferences/prompt-pack.mdreferences/runtime-connectors.mdreferences/schema-customization.mdrequirements.txtscripts/bootstrap_uv.ps1scripts/bootstrap_uv.shscripts/build_evidence_pack.pyscripts/build_notion_payload.pyscripts/fetch_arxiv_html.pyscripts/publish_notion_payload.pyscripts/schema_tool.pyscripts/setup_environment.pyscripts/smoke_test_attention.pyUse this skill to turn papers into durable Notion records: a lean database row for indexing, plus a rich Notion page report that carries the actual reading work. Default to English reports unless the user requests Chinese or bilingual output.
All scripts/... and references/... paths in this skill are relative to the skill root (the directory that contains this SKILL.md). Resolve that root for the current runtime before running any command:
python "<skill-root>/scripts/setup_environment.py" .... Do not assume scripts/... resolves from the current directory.scripts/... form works as written.Durable, user-owned state (the virtual environment, environment reports, config) is written to the active workspace (the current working directory) under .paper-notion/, never into the skill/plugin directory, so it survives plugin-cache refreshes and stays editable by the user.
references/runtime-connectors.md, references/environment-setup.md, references/notion-database-schema.md, references/schema-customization.md, and the setup prompt in references/prompt-pack.md.references/deep-reading-contract.md, then publish with references/notion-publishing.md.notion_payload.json, skip PDF reading and run only the Notion publishing and validation steps.Keep routing practical and limited to common cases:
scripts/fetch_arxiv_html.py. If official HTML is available, use it for sections, formulas, tables, and verified figure URLs. If HTML is unavailable or incomplete, fall back to the PDF path.notion_payload.json, deduplicate, publish, and verify.For arXiv HTML figures, official https://arxiv.org/html/... image URLs may be used directly as hosted external image links in Notion only when they are present and accessible. Use the URLs emitted by scripts/fetch_arxiv_html.py; it resolves relative image paths against the actual HTML page and marks image_accessible. If an image URL is missing or inaccessible, do not embed it in Notion. Fall back to PDF crops plus a local evidence pack, or cite the figure/table label in text. For long-term public archives or high-traffic use, prefer caching accessible images to a user-controlled host such as GitHub/jsDelivr or Cloudinary.
references/environment-setup.md..paper-notion/.venv.python scripts/setup_environment.py --use-uv --install..\scripts\bootstrap_uv.ps1 -InstallUv on Windows, or INSTALL_UV=1 sh scripts/bootstrap_uv.sh on macOS/Linux.python scripts/smoke_test_attention.py after dependency setup when network access is available.config/notion_schema.yaml as the machine-readable schema source.scripts/schema_tool.py --command validate.Paper Reading Library..paper-notion/config.json in the active workspace.
runtime, notion_database_id, notion_data_source_id, schema_version, and default_report_language.[TEST] Attention Is All You Need database page and fetch it back.Read references/deep-reading-contract.md before processing a paper. The reading layer must:
https://arxiv.org/html/<arxiv_id> when available. Use scripts/fetch_arxiv_html.py to build a structured reading pack with validated figure URLs before falling back to PDF text/crops.Read references/notion-publishing.md before writing to Notion. The writing layer must:
scripts/build_evidence_pack.py and link or mention that single HTML file in the Notion page instead of only listing an image folder.scripts/validate_report_quality.py on the report before building or publishing the Notion payload. Treat validation errors as a stop condition: fix the report instead of publishing a shallow page.notion_payload.json before writing when possible, then validate it with scripts/validate_notion_payload.py. If content.image_status is hosted, run the validator with --check-image-urls before writing to Notion.scripts/publish_notion_payload.py only after the user explicitly chooses a token-based fallback.Report Language database property.Use this compact schema unless the user asks to customize it:
NameOriginal TitleAuthorsPublication DateYearCreated DateVenueFieldTypeKeywordsReading StatusRead DateRatingDOIarXivCodeReport LanguageDo not add long analytical fields such as contribution, technical core, limitations, or evidence summary to the database by default. Put those in the report page.
scripts/setup_environment.py: Check Python/PDF dependencies and optionally create the workspace .paper-notion/.venv.scripts/fetch_arxiv_html.py: Fetch official arXiv HTML renderings and extract title, authors, abstract, sections, verified figures, tables, and equation counts into a reading pack.scripts/smoke_test_attention.py: Download and parse the Attention Is All You Need paper, then generate a local test report and payload.scripts/schema_tool.py: Validate config/notion_schema.yaml and render Notion DDL/add-column statements.scripts/build_notion_payload.py: Normalize metadata and report paths into a notion_payload.json file.scripts/build_evidence_pack.py: Build a self-contained local HTML evidence pack from Markdown image links.scripts/validate_report_quality.py: Validate report depth, required sections, bilingual overview, image policy, code audit, source registry, and arXiv hosted-figure usage before payload creation or publishing.scripts/validate_notion_payload.py: Validate required fields, language, rating, URLs, dedup key, report existence, and optionally hosted image reachability before publishing.scripts/publish_notion_payload.py: Single-paper Notion REST fallback. Validates a payload, deduplicates by DOI/arXiv/title, then creates or updates one Notion page.Read references/positioning.md when preparing GitHub copy, roadmap notes, or comparisons with adjacent paper-to-Notion tools.
When the task completes, report only the useful handoff details:
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub guesswhat-studio/paper-to-notion-skill --plugin paper-to-notion