Notion Doc Workflow
Overview
This skill is the Notion delivery adapter for research documents. Content contracts (what sections mean, what counts as complete) stay in task skills such as paper-card-delivery, paper-deep-dive, survey-builder. This skill owns Notion destination resolution, native block representation, narrow writes, and post-write verification.
Always use research-doc-workflow as the platform router. Use this skill only when the durable target is Notion.
When To Use
- User supplies a
notion.so / www.notion.so URL or Notion page/database ID.
- User explicitly says write to Notion / 写到 Notion.
- An existing durable document already lives in Notion and must be updated in place.
Do not silently redirect a Notion target to Feishu or Obsidian. If Notion tools/MCP/connectors are unavailable, report that Notion must be connected and stop; do not claim a write succeeded elsewhere.
Tooling
Prefer the available Notion connector / MCP / API tools in the current agent environment:
- Search or resolve the destination page or database.
- Fetch the current page (and parent / data source / required properties when creating database rows).
- Apply the narrowest update that preserves trusted blocks.
- Re-fetch and verify title, parent/database, properties, section order, links, media, formulas, and content presence.
Page Icon System
For every Notion page creation, hierarchy build, or explicit icon-cleanup task, read and apply references/icon-system.md. New pages should receive an icon during creation whenever their role or topic can be identified. Use the reference's precedence rules so repeated page types receive the same icon across different repositories.
Preserve an existing icon by default. Do not normalize or replace it unless the user explicitly asks to standardize existing icons. When filling missing icons in a subtree, enumerate the full requested subtree, skip archived/in-trash pages, update only the page icon property, and verify that title, parent, and blocks remain unchanged.
If the environment exposes no Notion write path, state the blocker explicitly.
Shared Write Workflow
For migrations into Notion, follow research-doc-workflow → Migration Rules: “迁移” includes the source root and all descendants by default. Enumerate the source subtree before writing, recreate it as native Notion subpages, and verify every mapped page and parent relationship. A successful root-page write is not completion of a subtree migration.
- Read the task-specific content skill and keep its semantic contract unchanged.
- Confirm the Notion destination from the user's URL or explicit instruction.
- Fetch the current page/database state before editing.
- Prepare one canonical Markdown draft for the shared body, then convert only Notion-required deltas below.
- Write with the smallest safe change. For an existing page, especially a PDF-imported page, use native block edits or targeted replacements by known block ID/span. Never use whole-page
replace_content, full-page Markdown replacement, or delete-and-recreate unless the user explicitly authorizes destructive replacement. If the available write path cannot address a known block or span, stop and report the blocker.
- Before each write batch, save a recovery snapshot of page properties and the complete block tree, including block types, hierarchy, images, equations, tables, captions, links, and text. Keep the batch small, re-fetch immediately after writing, and stop if untouched blocks or structural counts change unexpectedly.
- Notion body citations — write-time escape (required): canonical drafts still use
[[n](url)] / [[n](url), [m](url)]. Immediately before any Notion Markdown write (ntn pages create|edit, MCP markdown update), escape the outer opening bracket so the first cite is not stored as link text [n:python3 ".tools/skills/notion-doc-workflow/scripts/prepare-notion-citation-markdown.py" draft.md -o notion-ready.md
# writes \[[n](url)] / \[[n](url), [m](url)] — verified: link text is digits only
Do not write bare [[n](url)] into Notion: single or multi cluster, the importer always absorbs the first [ into the first link.
- Mandatory after any Markdown write that contains numeric body citations: run the citation rich_text fixer as a safety net (covers older pages and any write that skipped step 7):
python3 ".tools/skills/notion-doc-workflow/scripts/fix-notion-citation-rich-text.py" <page-id-or-url>
Do not treat Markdown re-fetch alone as proof that link ranges are correct; verify via Blocks API / this script (--check-only must exit 0).
- Re-fetch native blocks/properties and verify. Run any content-skill validator that applies to Notion drafts when available. For imported PDF pages, verify that untouched block IDs, block types, hierarchy, media, formulas, tables, captions, and links were preserved.
Notion Format Deltas
Assume Markdown parity first. Convert only what Notion cannot represent the same way as Obsidian or Feishu:
| Concern |
Notion rule |
| Hierarchy |
Parent page + subpages, or database relations; do not invent Feishu wiki tokens |
| Callouts |
Native Notion callout blocks; do not leave Obsidian > [!type] as reader-facing text |
| Metadata |
Database/page properties for queryable fields; no YAML frontmatter in reader-facing body |
| Paper-card metadata |
Full Paper Card: one paragraph with four logical rows joined by exactly three <br> tags. Paper Abstract Card: one resource paragraph with Paper / optional Project / optional Code joined by native hard breaks. Never split either metadata/resource block into separate paragraphs. |
| Math |
Native inline/block equations from TeX; keep $...$ / $$...$$ only in the intermediate Markdown if the importer maps them to equations |
| Inline code |
For paths, filenames, commands, config keys: Notion inline code with default/black color (annotations.color="default"); do not color code gray/brown/red |
| Images |
Native image blocks + native captions; no duplicate caption paragraph after a successful native caption. When converting a web video to GIF, also use web-video-to-gif; default to an uncropped 960 px-wide asset and preserve the full source unless the user explicitly requests an excerpt. |
| Wikilinks |
Convert [[Note]] to Notion page links or plain titles; do not leave Obsidian wikilink chrome |
| References |
Keep [n] plain labels; append . URL [url](url) (or URL [url](url) after an existing period) with display text equal to URL; do not turn References into numbered 1. lists |
| Body citations |
Reader goal: plain outer [], digit-only link text (6, not [6). Canonical draft: [[n](pdf-url)] / [[n](url), [m](url)]. Notion write form: escape the outer [ → \[[n](url)] / \[[n](url), [m](url)] via scripts/prepare-notion-citation-markdown.py (single and multi: the first cite is always the one Notion corrupts). After write, still run scripts/fix-notion-citation-rich-text.py <page> until --check-only exits 0. The fixer splits text.content >2000 and sanitizes nested/overlong link.url. Rare mangled blobs ([[[[9](url)](url)…) may need a one-block manual rewrite. |
| Editable trees |
Nested headings/toggles, linked subpages, or supported embeds; not Feishu whiteboard tokens |
Forbidden Cross-Platform Residue
Reader-facing Notion pages must not contain:
- Feishu Docx/XML fragments,
block_id, docs +media-insert scratch, or Feishu whiteboard PlantUML dumps meant only for Lark boards
- Obsidian
> [!paper] / other callout fences left as literal Markdown when a native callout was intended
- YAML frontmatter fences (
---\nkey:) as visible body text
- Absolute machine paths,
.tools/tmp/, MinerU scratch directories, EW_IMG_…, or ![[wikilink-image]] vault embeds
- Paper-card metadata split into four separate Notion paragraphs
Paper Cards on Notion
Content and field rules: paper-card-delivery. This skill only maps them to Notion:
- Determine whether the requested unit is a full Paper Card or a Paper Abstract Card; do not mix their schemas.
- Full Paper Card: title as Notion heading; metadata as one hard-break paragraph; native image + caption; then seven bullet slots.
- After write, re-fetch and confirm the metadata region is one paragraph containing three newline/hard-break characters.
- Verify no Obsidian asset-path labels remain in visible text.
Paper Abstract Cards on Notion
- Use a Notion
heading_4 block for the exact official English title.
- Store
Paper:https://…, optional Project:https://…, and optional Code:https://… in one paragraph block with native line breaks. Apply rich-text links to the URL spans and verify them through the Blocks API; visible URL text without a link object is invalid.
- Follow with one paragraph containing the complete Chinese translation of the official abstract.
- Use native image blocks and native captions containing complete Chinese translations of the original captions. Do not add duplicate caption paragraphs.
- One image remains a normal image block. For two images, create one native
column_list containing two equal-width column blocks with one image in each. For three or more images, use successive balanced two-column rows unless preserving an existing user-designed layout.
- Before changing an existing abstract card, fetch the complete nested block tree. Preserve correct user-authored
column_list / column structures and do not flatten, recreate, or resize them merely to enforce the default.
- After writing, re-fetch nested children and verify heading type, one resource paragraph, rich-text link objects, abstract presence, image count, column count/order, and caption association.
Deep Dives / Surveys / Meetings
- Structure and completion standards come from
paper-deep-dive, survey-builder, or the relevant content skill.
- Deep-dive Notion mapping: one self-contained main page whose primary body is the complete
原文中译稿, followed by a clearly separated, embedded 精读稿 section containing the Paper Card, editable tree, source-order close reading, and mechanism synthesis. 英文原文稿 and standalone 精读稿 child pages are optional and explicit-only. Use native equations/images and an editable outline or supported embed for trees—not Feishu mind-map tokens.
- Preserve existing Notion layout and media unless the user asks to restructure.
Manually Imported pdf2zh-next Pages
Treat a manually imported translated PDF as a draft. For a deep-dive translation page:
For the pdf2zh-next imported-page repair path, the existing Chinese manuscript page is the primary deliverable. Do not require or create 英文原文稿 and 精读稿 child pages unless the user explicitly requests them. Apply the source-fidelity, formula, figure/caption, table, appendix, reference/citation, required 精读部分, and read-back checks to the Chinese page itself. This is the same one-page delivery structure used for new Notion deep dives.
- rename the page to the verified Chinese paper title; keep the official English title in the opening block;
- add the latest arXiv PDF, Project Page, and Code links above the abstract when those resources exist; do not add child-artifact links by default on this imported-page repair path;
- restore heading levels from the source paper and reconstruct every paragraph boundary from the official HTML/LaTeX source map. Repair PDF-induced paragraph splits, falsely fused paragraphs, reordered columns, duplicated overlap, headers, and footers across the complete manuscript rather than sampling only major sections. Use Chinese punctuation and adjacency only to locate candidates; never use them as the final boundary authority when HTML/LaTeX is available;
- normalize numbered headings at every depth from their prefixes rather than imported font levels:
N is a top-level heading, N.M a subsection, N.M.K a sub-subsection, and the same component-count rule continues deeper. Convert full-width heading punctuation . to ASCII . before parsing, so 4.2.方法 becomes 4.2. 方法. In ordinary structural text, convert / to /, - to -, and citation/list brackets [] to []; protect formulas, code, URLs, paths, and backslash-escaped sequences before cleanup and restore them exactly. Preserve unrelated Chinese punctuation in prose. Use one punctuation style throughout, defaulting to N. Title / N.M. Subtitle unless the source consistently uses N Title / N.M Subtitle;
- convert inline/display formulas to native Notion equations where possible, preserving exact TeX when native conversion is unavailable;
- use native image captions for complete translated figure captions and do not leave duplicate caption paragraphs;
- before writing native image captions, sanitize parser-sensitive escaped citation markers such as
\[33\] inside the caption only (use ordinary visible parentheses if required); keep the manuscript body citations unchanged and verify the caption survives fetch/read-back;
- keep author email addresses as non-link text; because Notion auto-links bare email addresses, use inline code or another visible non-link representation when the user requests plain text;
- keep author emails as ordinary visible text; do not intentionally add Markdown/
mailto: links or code formatting. Notion may auto-link a bare email during rendering;
- for the opening resource block of a deep-dive Chinese manuscript only, omit a standalone
来源 label and make each link's visible text equal to its URL; do not apply this rule to English manuscripts or general Notion documents;
- keep table cells in English, translate only table titles/notes, and preserve an original screenshot when an imported table is visually unreliable;
- audit imported tables for garbled cells, broken row/column boundaries, duplicated pipe-table remnants, fused captions, and repeated table data. Keep one authoritative native table, repair it against the official PDF/HTML, and use an official table screenshot when the editable extraction cannot be trusted;
- in References, allow the cited paper title to be translated, but keep authors, venue, year, pages, identifiers, URLs, and other metadata in the source language; restore one reference per paragraph and the shared body-citation PDF URL map.
After repair, fetch the page again and verify title, links, headings, formulas, captions, tables, references, and citation URLs. Do not report the import as a completed deep dive until this read-back passes.
For a pdf2zh-next repair, the final read-back must also compare fresh Notion blocks with the official HTML/LaTeX-derived source map and report zero unexplained missing, duplicate, split, fused, or reordered source paragraphs. Preserving image/table/equation counts does not prove prose fidelity. If official HTML/LaTeX is unavailable, record every attempted official route and use the best structured publisher source; PDF extraction plus heuristics is a documented fallback, not equivalent evidence.
Workspace Hygiene
- Keep downloads, MinerU outputs, and fetch dumps under
.tools/tmp/<task-slug>/ (or system temp), not the vault root.
- Delete task-local scratch after the Notion page is re-fetched and verified, unless the user asks to keep audit artifacts under
.tools/outputs/<task-slug>/.
Acceptance Checklist
- Destination is Notion (URL or explicit instruction), not a silent redirect.
- Newly created pages and icon-cleanup targets follow
references/icon-system.md; existing icons are preserved unless replacement was explicitly requested.
- Content-skill contract passes without Notion-specific omissions.
- Title, parent/database, properties, section order, links, formulas, media, and captions verified via re-fetch.
- For migrations, the full source subtree is enumerated and mapped to verified Notion pages with matching parent-child relationships, unless the user explicitly narrowed the scope; report unresolved descendants rather than declaring completion.
- No Feishu/Obsidian syntax residue in reader-facing content.
- Paper-card metadata (if any) is one paragraph with three hard breaks.
- Response names Notion and the actual write/verify status.
1---2name: notion-doc-workflow3description: Notion document and database workflow for reading, editing, structuring, and verifying pages used by research skills (paper cards, deep dives, surveys, meeting notes, bilingual archives). Use when the user provides a notion.so URL, names Notion as the destination, asks to create or update a Notion page/database, or research-doc-workflow routes a durable write to Notion. Applies Notion-native format deltas so Feishu/Obsidian syntax does not leak into reader-facing content.4---56# Notion Doc Workflow78## Overview910This skill is the Notion delivery adapter for research documents. Content contracts (what sections mean, what counts as complete) stay in task skills such as `paper-card-delivery`, `paper-deep-dive`, `survey-builder`. This skill owns Notion destination resolution, native block representation, narrow writes, and post-write verification.1112Always use [`research-doc-workflow`](../research-doc-workflow/SKILL.md) as the platform router. Use this skill only when the durable target is Notion.1314## When To Use1516- User supplies a `notion.so` / `www.notion.so` URL or Notion page/database ID.17- User explicitly says write to Notion / 写到 Notion.18- An existing durable document already lives in Notion and must be updated in place.1920Do not silently redirect a Notion target to Feishu or Obsidian. If Notion tools/MCP/connectors are unavailable, report that Notion must be connected and stop; do not claim a write succeeded elsewhere.2122## Tooling2324Prefer the available Notion connector / MCP / API tools in the current agent environment:25261. Search or resolve the destination page or database.272. Fetch the current page (and parent / data source / required properties when creating database rows).283. Apply the narrowest update that preserves trusted blocks.294. Re-fetch and verify title, parent/database, properties, section order, links, media, formulas, and content presence.3031## Page Icon System3233For every Notion page creation, hierarchy build, or explicit icon-cleanup task, read and apply [`references/icon-system.md`](references/icon-system.md). New pages should receive an icon during creation whenever their role or topic can be identified. Use the reference's precedence rules so repeated page types receive the same icon across different repositories.3435Preserve an existing icon by default. Do not normalize or replace it unless the user explicitly asks to standardize existing icons. When filling missing icons in a subtree, enumerate the full requested subtree, skip archived/in-trash pages, update only the page `icon` property, and verify that title, parent, and blocks remain unchanged.3637If the environment exposes no Notion write path, state the blocker explicitly.3839## Shared Write Workflow4041For migrations into Notion, follow [research-doc-workflow → Migration Rules](../research-doc-workflow/SKILL.md#migration-rules): “迁移” includes the source root and all descendants by default. Enumerate the source subtree before writing, recreate it as native Notion subpages, and verify every mapped page and parent relationship. A successful root-page write is not completion of a subtree migration.42431. Read the task-specific content skill and keep its semantic contract unchanged.442. Confirm the Notion destination from the user's URL or explicit instruction.453. Fetch the current page/database state before editing.464. Prepare one canonical Markdown draft for the shared body, then convert only Notion-required deltas below.475. Write with the smallest safe change. For an existing page, especially a PDF-imported page, use native block edits or targeted replacements by known block ID/span. Never use whole-page `replace_content`, full-page Markdown replacement, or delete-and-recreate unless the user explicitly authorizes destructive replacement. If the available write path cannot address a known block or span, stop and report the blocker.486. Before each write batch, save a recovery snapshot of page properties and the complete block tree, including block types, hierarchy, images, equations, tables, captions, links, and text. Keep the batch small, re-fetch immediately after writing, and stop if untouched blocks or structural counts change unexpectedly.497. **Notion body citations — write-time escape (required):** canonical drafts still use `[[n](url)]` / `[[n](url), [m](url)]`. Immediately before any Notion Markdown write (`ntn pages create|edit`, MCP markdown update), escape the outer opening bracket so the first cite is not stored as link text `[n`:50 ```bash51 python3 ".tools/skills/notion-doc-workflow/scripts/prepare-notion-citation-markdown.py" draft.md -o notion-ready.md52 # writes \[[n](url)] / \[[n](url), [m](url)] — verified: link text is digits only53 ```54 Do **not** write bare `[[n](url)]` into Notion: single or multi cluster, the importer always absorbs the first `[` into the first link.558. **Mandatory after any Markdown write that contains numeric body citations:** run the citation rich_text fixer as a safety net (covers older pages and any write that skipped step 7):56 ```bash57 python3 ".tools/skills/notion-doc-workflow/scripts/fix-notion-citation-rich-text.py" <page-id-or-url>58 ```59 Do not treat Markdown re-fetch alone as proof that link ranges are correct; verify via Blocks API / this script (`--check-only` must exit 0).609. Re-fetch native blocks/properties and verify. Run any content-skill validator that applies to Notion drafts when available. For imported PDF pages, verify that untouched block IDs, block types, hierarchy, media, formulas, tables, captions, and links were preserved.6162## Notion Format Deltas6364Assume Markdown parity first. Convert only what Notion cannot represent the same way as Obsidian or Feishu:6566| Concern | Notion rule |67|---|---|68| Hierarchy | Parent page + subpages, or database relations; do not invent Feishu wiki tokens |69| Callouts | Native Notion callout blocks; do not leave Obsidian `> [!type]` as reader-facing text |70| Metadata | Database/page properties for queryable fields; no YAML frontmatter in reader-facing body |71| Paper-card metadata | Full Paper Card: one paragraph with four logical rows joined by exactly three `<br>` tags. Paper Abstract Card: one resource paragraph with `Paper` / optional `Project` / optional `Code` joined by native hard breaks. Never split either metadata/resource block into separate paragraphs. |72| Math | Native inline/block equations from TeX; keep `$...$` / `$$...$$` only in the intermediate Markdown if the importer maps them to equations |73| Inline code | For paths, filenames, commands, config keys: Notion inline `code` with default/black color (`annotations.color="default"`); do not color code gray/brown/red |74| Images | Native image blocks + native captions; no duplicate caption paragraph after a successful native caption. When converting a web video to GIF, also use `web-video-to-gif`; default to an uncropped 960 px-wide asset and preserve the full source unless the user explicitly requests an excerpt. |75| Wikilinks | Convert `[[Note]]` to Notion page links or plain titles; do not leave Obsidian wikilink chrome |76| References | Keep `[n]` plain labels; append `. URL [url](url)` (or ` URL [url](url)` after an existing period) with display text equal to URL; do not turn References into numbered `1.` lists |77| Body citations | Reader goal: plain outer `[]`, digit-only link text (`6`, not `[6`). Canonical draft: `[[n](pdf-url)]` / `[[n](url), [m](url)]`. **Notion write form:** escape the outer `[` → `\[[n](url)]` / `\[[n](url), [m](url)]` via `scripts/prepare-notion-citation-markdown.py` (single and multi: the first cite is always the one Notion corrupts). After write, still run `scripts/fix-notion-citation-rich-text.py <page>` until `--check-only` exits 0. The fixer splits `text.content` >2000 and sanitizes nested/overlong `link.url`. Rare mangled blobs (`[[[[9](url)](url)…`) may need a one-block manual rewrite. |78| Editable trees | Nested headings/toggles, linked subpages, or supported embeds; not Feishu whiteboard tokens |7980## Forbidden Cross-Platform Residue8182Reader-facing Notion pages must not contain:8384- Feishu Docx/XML fragments, `block_id`, `docs +media-insert` scratch, or Feishu whiteboard PlantUML dumps meant only for Lark boards85- Obsidian `> [!paper]` / other callout fences left as literal Markdown when a native callout was intended86- YAML frontmatter fences (`---\nkey:`) as visible body text87- Absolute machine paths, `.tools/tmp/`, MinerU scratch directories, `EW_IMG_…`, or `![[wikilink-image]]` vault embeds88- Paper-card metadata split into four separate Notion paragraphs8990## Paper Cards on Notion9192Content and field rules: [`paper-card-delivery`](../paper-card-delivery/SKILL.md). This skill only maps them to Notion:9394- Determine whether the requested unit is a full Paper Card or a Paper Abstract Card; do not mix their schemas.95- Full Paper Card: title as Notion heading; metadata as one hard-break paragraph; native image + caption; then seven bullet slots.96- After write, re-fetch and confirm the metadata region is **one** paragraph containing three newline/hard-break characters.97- Verify no Obsidian asset-path labels remain in visible text.9899### Paper Abstract Cards on Notion100101- Use a Notion `heading_4` block for the exact official English title.102- Store `Paper:https://…`, optional `Project:https://…`, and optional `Code:https://…` in one paragraph block with native line breaks. Apply rich-text links to the URL spans and verify them through the Blocks API; visible URL text without a link object is invalid.103- Follow with one paragraph containing the complete Chinese translation of the official abstract.104- Use native image blocks and native captions containing complete Chinese translations of the original captions. Do not add duplicate caption paragraphs.105- One image remains a normal image block. For two images, create one native `column_list` containing two equal-width `column` blocks with one image in each. For three or more images, use successive balanced two-column rows unless preserving an existing user-designed layout.106- Before changing an existing abstract card, fetch the complete nested block tree. Preserve correct user-authored `column_list` / `column` structures and do not flatten, recreate, or resize them merely to enforce the default.107- After writing, re-fetch nested children and verify heading type, one resource paragraph, rich-text link objects, abstract presence, image count, column count/order, and caption association.108109## Deep Dives / Surveys / Meetings110111- Structure and completion standards come from `paper-deep-dive`, `survey-builder`, or the relevant content skill.112- Deep-dive Notion mapping: one self-contained main page whose primary body is the complete `原文中译稿`, followed by a clearly separated, embedded `精读稿` section containing the Paper Card, editable tree, source-order close reading, and mechanism synthesis. `英文原文稿` and standalone `精读稿` child pages are optional and explicit-only. Use native equations/images and an editable outline or supported embed for trees—not Feishu mind-map tokens.113- Preserve existing Notion layout and media unless the user asks to restructure.114115### Manually Imported `pdf2zh-next` Pages116117Treat a manually imported translated PDF as a draft. For a deep-dive translation page:118119For the `pdf2zh-next` imported-page repair path, the existing Chinese manuscript page is the primary deliverable. Do not require or create `英文原文稿` and `精读稿` child pages unless the user explicitly requests them. Apply the source-fidelity, formula, figure/caption, table, appendix, reference/citation, required `精读部分`, and read-back checks to the Chinese page itself. This is the same one-page delivery structure used for new Notion deep dives.120121- rename the page to the verified Chinese paper title; keep the official English title in the opening block;122- add the latest arXiv PDF, Project Page, and Code links above the abstract when those resources exist; do not add child-artifact links by default on this imported-page repair path;123- restore heading levels from the source paper and reconstruct every paragraph boundary from the official HTML/LaTeX source map. Repair PDF-induced paragraph splits, falsely fused paragraphs, reordered columns, duplicated overlap, headers, and footers across the complete manuscript rather than sampling only major sections. Use Chinese punctuation and adjacency only to locate candidates; never use them as the final boundary authority when HTML/LaTeX is available;124- normalize numbered headings at every depth from their prefixes rather than imported font levels: `N` is a top-level heading, `N.M` a subsection, `N.M.K` a sub-subsection, and the same component-count rule continues deeper. Convert full-width heading punctuation `.` to ASCII `.` before parsing, so `4.2.方法` becomes `4.2. 方法`. In ordinary structural text, convert `/` to `/`, `-` to `-`, and citation/list brackets `[]` to `[]`; protect formulas, code, URLs, paths, and backslash-escaped sequences before cleanup and restore them exactly. Preserve unrelated Chinese punctuation in prose. Use one punctuation style throughout, defaulting to `N. Title` / `N.M. Subtitle` unless the source consistently uses `N Title` / `N.M Subtitle`;125- convert inline/display formulas to native Notion equations where possible, preserving exact TeX when native conversion is unavailable;126- use native image captions for complete translated figure captions and do not leave duplicate caption paragraphs;127- before writing native image captions, sanitize parser-sensitive escaped citation markers such as `\[33\]` inside the caption only (use ordinary visible parentheses if required); keep the manuscript body citations unchanged and verify the caption survives fetch/read-back;128- keep author email addresses as non-link text; because Notion auto-links bare email addresses, use inline code or another visible non-link representation when the user requests plain text;129- keep author emails as ordinary visible text; do not intentionally add Markdown/`mailto:` links or code formatting. Notion may auto-link a bare email during rendering;130- for the opening resource block of a deep-dive Chinese manuscript only, omit a standalone `来源` label and make each link's visible text equal to its URL; do not apply this rule to English manuscripts or general Notion documents;131- keep table cells in English, translate only table titles/notes, and preserve an original screenshot when an imported table is visually unreliable;132- audit imported tables for garbled cells, broken row/column boundaries, duplicated pipe-table remnants, fused captions, and repeated table data. Keep one authoritative native table, repair it against the official PDF/HTML, and use an official table screenshot when the editable extraction cannot be trusted;133- in References, allow the cited paper title to be translated, but keep authors, venue, year, pages, identifiers, URLs, and other metadata in the source language; restore one reference per paragraph and the shared body-citation PDF URL map.134135After repair, fetch the page again and verify title, links, headings, formulas, captions, tables, references, and citation URLs. Do not report the import as a completed deep dive until this read-back passes.136137For a `pdf2zh-next` repair, the final read-back must also compare fresh Notion blocks with the official HTML/LaTeX-derived source map and report zero unexplained missing, duplicate, split, fused, or reordered source paragraphs. Preserving image/table/equation counts does not prove prose fidelity. If official HTML/LaTeX is unavailable, record every attempted official route and use the best structured publisher source; PDF extraction plus heuristics is a documented fallback, not equivalent evidence.138139## Workspace Hygiene140141- Keep downloads, MinerU outputs, and fetch dumps under `.tools/tmp/<task-slug>/` (or system temp), not the vault root.142- Delete task-local scratch after the Notion page is re-fetched and verified, unless the user asks to keep audit artifacts under `.tools/outputs/<task-slug>/`.143144## Acceptance Checklist145146- Destination is Notion (URL or explicit instruction), not a silent redirect.147- Newly created pages and icon-cleanup targets follow `references/icon-system.md`; existing icons are preserved unless replacement was explicitly requested.148- Content-skill contract passes without Notion-specific omissions.149- Title, parent/database, properties, section order, links, formulas, media, and captions verified via re-fetch.150- For migrations, the full source subtree is enumerated and mapped to verified Notion pages with matching parent-child relationships, unless the user explicitly narrowed the scope; report unresolved descendants rather than declaring completion.151- No Feishu/Obsidian syntax residue in reader-facing content.152- Paper-card metadata (if any) is one paragraph with three hard breaks.153- Response names Notion and the actual write/verify status.