Pasting from AI tools
Copy from ChatGPT, Claude, Gemini, Perplexity, Copilot, paste into a sweetdocs doc. Headings stay headings, code stays code, lists stay lists. How the round-trip actually works.
Every major AI chat outputs Markdown-shaped text. sweetdocs preserves that shape on paste — headings stay headings, code blocks stay code blocks, lists stay lists. Cmd-V is the whole workflow.
Three-day Kyoto itinerary
Here's a tight three-day plan that prioritises the most photogenic spots:
- Day 1: Arashiyama at dawn, Tenryū-ji, then Nishiki market.
- Day 2: Fushimi Inari (full morning), Gion in the evening.
- Day 3: Kinkaku-ji, Ryōan-ji, and a slow walk along the Philosopher's Path.
// quick budget per day
const perDay = 12000 // JPY
const total = perDay * 3Three-day Kyoto itinerary
Here's a tight three-day plan that prioritises the most photogenic spots:
- Day 1: Arashiyama at dawn, Tenryū-ji, then Nishiki market.
- Day 2: Fushimi Inari (full morning), Gion in the evening.
- Day 3: Kinkaku-ji, Ryōan-ji, and a slow walk along the Philosopher's Path.
// quick budget per day
const perDay = 12000 // JPY
const total = perDay * 3How the paste actually works
When you copy from an AI chat in your browser, the clipboard usually contains two formats:
text/plain— the raw Markdown source the AI generatedtext/html— the rendered HTML the page is showing you
sweetdocs prefers the HTML and parses it through the Tiptap schema. That gives clean structure for everything the schema knows about: headings, bold, italic, links, lists, blockquotes, code blocks, tables.
There’s one special case — code-editor pastes — handled by the MarkdownPaste extension. If the HTML signature looks like it came from VS Code, Cursor, JetBrains, or a terminal (the giveaway is <pre> or white-space: pre styling), sweetdocs ignores the HTML and parses the plain-text payload through the Markdown parser instead. That stops AI-assistant code that you happened to copy from your editor from becoming a single dumb code block.
What round-trips cleanly
Coming from ChatGPT, Claude, Gemini, Perplexity, or Copilot:
| Element | Paste result |
|---|---|
| Headings (H1-H6) | Real heading blocks (H4-H6 keep their level, just no toolbar surface) |
| Bold / italic / strikethrough | Real inline marks |
| Inline code | Inline <code> |
| Links | Real link marks with href preserved |
| Bullet lists | Real bullet list with proper nesting |
| Numbered lists | Real ordered list |
| Blockquotes | Real blockquote |
| Fenced code blocks | Real code block; language hint preserved when the AI tool emits a language-… class |
| Tables | Real GFM tables when the source uses HTML <table> |
| Horizontal rules | Real <hr> divider |
The pasted content lands at the cursor position, indistinguishable from text you typed yourself.
What gets stripped or normalized
| Thing in the source | Becomes |
|---|---|
Inline styles (style="color: …; font-family: …") | Stripped — the doc’s theme controls all colors and fonts |
Non-Markdown HTML elements (e.g., <details>, <summary>) | Dropped to text content, since the schema doesn’t model them |
| Source-tool wrappers (chat avatars, message metadata) | Discarded — only the body content survives |
| Image URLs typed as plain text | Stay as plain text — they don’t auto-upload (see Adding images for upload paths) |
| Markdown footnotes / task lists / math | Land as the source string, since v1 doesn’t render them (see Markdown essentials) |
When the AI fence-syntax wins out
Some AI tools, especially when rendering very long replies or when their UI is degraded, output literal Markdown (the fence characters, the asterisks) rather than rendered HTML.
When you paste literal Markdown into the editor, it lands as text — the live Markdown shortcuts (# , ** **, etc.) only fire on fresh typing, not on pasted content.
Two ways out:
- Re-copy from a rendered area. Most AI tools have a “Copy” button on each message that emits both formats; copying from the message bubble (not the page text) usually preserves HTML.
- Use the AI Author panel (AI Author) — it writes directly into the doc, so there’s no clipboard round-trip at all.
Per-tool quirks
What we see in practice as of this writing:
| Tool | Notes |
|---|---|
| ChatGPT | Reliable HTML; code blocks include language class; headings, lists, tables come through cleanly |
| Claude | Reliable HTML; identical experience to ChatGPT for body content |
| Gemini | HTML present; some replies wrap content in extra <div>s that get flattened to paragraphs |
| Perplexity | HTML present; citation footnotes paste as plain superscript text |
| Copilot (chat) | HTML present; code blocks include language hint |
Vendor UIs change. If a paste comes in looking degraded, copying again from the message’s “Copy” button instead of the raw browser selection usually fixes it.
Where this beats copy-paste
For most edits, the AI Author panel (AI Author) is the better option:
- The AI sees your existing document, not a fresh prompt
- Changes show as a diff before they land
- No format conversion happens — the AI writes Markdown directly into the doc
- The conversation persists on the document so you can iterate
Use paste when you’re bringing in content the AI generated standalone — drafts, outlines, research notes. Use AI Author when you want the AI to edit this document.