Google Document Import
Importing a Google Doc into Imagine
When you create a new adventure, you can pick a Google Doc instead of starting blank. Imagine reads the doc, breaks it into Acts and Scenes, and creates the adventure for you.
This guide describes exactly how the importer maps your doc to an adventure so you can author your docs in a way that gives you the result you want.
Structure
The importer reads the structural pieces of your doc and turns them into adventure pieces.
Tabs become Acts
If your Google Doc uses tabs, every tab becomes an Act in the adventure. The tab’s name is the Act’s name.
Nested tabs become nested Acts — a sub-tab is an Act whose parent is the surrounding Act.
If your doc has no tabs, no Acts are created.
H1 headings become Pages (Scenes)
Inside any tab, every Heading 1 becomes a Page under that Act. The H1 text is the page name. Everything below the H1, until the next H1 (or the end of the tab), is the page body.
If your doc has no tabs, H1s still become Pages — they’re created at the top level of the adventure with no Act above them.
Empty H1s (a heading with no text) are skipped. Stray blank heading lines from formatting churn won’t create empty pages.
Content before the first H1
Anything in a tab before its first H1 goes into the Act’s own body. Anything in a no-tab doc before its first H1 goes into the adventure’s description.
Lower-level headings (H2, H3, etc.)
Lower-level headings stay where they are inside the page body. They render as ##, ###, etc. in the markdown.
Special blocks
Read-aloud — use a one-cell table
Adventures use boxed text for read-aloud narration. Put your read-aloud text inside a Google Docs table. Any table whose cells contain only text — single-cell or multi-cell, any layout — is wrapped with [[read-aloud]]...[[end-read-aloud]] markers in the imported markdown so it renders as a read-aloud block.
If a table has any non-text content (an embedded image, a footnote, etc.), it falls back to inline text and is flagged in Dropped Imports so you can rebuild the table by hand.
Skill checks and saves — write them naturally
Any phrase that opens with DC <number> and ends with check, checks, throw, or throws on the same line is automatically wrapped with [[skill]]...[[endskill]] so it renders as a clickable die roll.
Examples that match:
DC 13 Constitution saving throw3 successful DC 15 ability checks(the wrap coversDC 15 ability checks)DC 17 Survival check
Patterns that won’t match:
DC 15on its own (nocheck/throwword)- A check that spans multiple lines or is split by a sentence-ending period
You don’t need any special formatting in the doc — just write the check naturally and the importer will mark it up.
Formatting
Bold, italic, strikethrough, links
These all carry over from your doc:
- Bold →
**bold** - Italic →
*italic* Strikethrough→~~strikethrough~~- Hyperlinks →
[text](url)
Combinations work too (bold + italic, link + bold, etc.).
Lists
Bulleted and numbered lists both convert. Nested lists keep their indentation.
Headings
Heading 1 inside a tab becomes a page break (see above). H2 through H6 stay as ## through ###### markdown.
Page breaks and section breaks
Both render as paragraph breaks in the imported markdown.
What doesn’t import — and how you find out
The importer never silently drops content. Anything it can’t bring across is recorded on an auto-generated Dropped Imports page at the bottom of your adventure. Each entry tells you:
- Which Act / Page the missing content was in (when applicable)
- The nearest preceding heading, so you can locate it
- The kind of content that was lost
The kinds we currently flag:
| Kind | What it means |
|---|---|
| Embedded image | An inline or floating image in your doc |
| Footnote | A footnote reference |
| Equation | A Google Docs equation |
| Table of contents | An auto-generated ToC |
| Table | A multi-column table that contained non-text cells. Cell text was preserved inline; the column layout wasn’t |
If your import generates no Dropped Imports page, every block in your doc came across.
Tips for a clean import
- Use tabs for Acts. If you want explicit Act structure, use Google Docs tabs. Don’t try to mark Acts with H1s — H1s become Pages, not Acts.
- One H1 per Page. Use H1 only for the names of Pages (Scenes). Use H2 and below for sub-sections inside a page.
- Use tables for read-aloud. Drop the read-aloud text into a single-cell table. The importer will wrap it for you.
- Avoid stray empty headings. If you reformat content, check that no blank lines kept the H1 style. (The importer skips empties anyway, but it’s cleaner.)
- Replace embedded images with image references. Until image import is supported, swap inline images for a placeholder line you can fill in inside Imagine.
- Spell out skill checks the standard way.
DC <num> <ability/skill> <check/throw>is the pattern that gets auto-wrapped.
What you can do after the import
The imported adventure is fully editable. You can:
- Rename, reorder, or delete any Act or Page
- Edit the markdown body of any page
- Reassign Page document types (Scene → Encounter, Location, Handout, etc.)
- Delete the Dropped Imports page once you’ve reconciled what’s in it
Re-importing the same Google Doc creates a fresh adventure each time — it doesn’t update an existing one.