Markdown to Google Doc
Convert .md files into Google Docs with proper heading styles, bold, code blocks, lists, links, and blockquotes.
Requirements
- gog — Google Workspace CLI (must be authenticated:
gog auth add <email>) - python3 — used for JSON parsing in the script
Quick Start
scripts/md-to-gdoc.sh <file.md> [--title "Title"] [--parent <folder-id>] [--account <email>]
Resolve scripts/ relative to this skill's directory.
Critical Rules
- Use
gog docs update --format=markdown— neverwrite --markdown, nevercreate --file. Theupdatepath is the only one that correctly applies Google Docs heading styles via the API. - Markdown must have proper
#headings. If the source has "heading-looking" plain text without#markers, add them before conversion. The script warns but proceeds. - Two-step process: create empty doc → populate with
update. This is deterministic and reliable. - Always verify heading syntax in the markdown before running. No
#= no formatted headings in the output.
What Works
#–######headings → Google Docs Heading 1–6**bold**→ bold text`inline code`→ Courier New- Fenced code blocks → Courier New + gray background
> blockquotes→ indented paragraphs- bullets→ bullet-prefixed text1. numbered→ number-prefixed text[text](url)→ hyperlinks- Markdown tables → native Google Docs tables
Known Limitations
*italic*may not render (gog CLI bug in inline formatting parser — italic detection fails in certain contexts)- Bullet/numbered lists use text prefixes (
•,1.), not native Google Docs list objects - Horizontal rules render as 40 dashes
Options
--title— Doc title. Defaults to filename with hyphens→spaces.--parent— Google Drive folder ID to place the doc in.--account— Google account email. Defaults to gog's default (first authenticated account).
Troubleshooting
- All body text, no headings: The markdown file lacks
#heading markers. Add them. - gog auth errors: Run
gog auth listto verify auth. May needgog auth add <email>. - Empty doc created: The
updatestep failed. Check gog output for API errors.