Skills google-doc-format
Create professionally formatted Google Docs from markdown using gog docs create. Produces clean documents with proper heading hierarchy, real Google Docs tables (not tab-separated text), bold text, bullet lists, numbered lists, and clickable hyperlinks. Use when creating or recreating Google Docs that need proper formatting, especially documents with data tables, link indexes, or structured reports. Triggers on: format google doc, create formatted doc, fix google doc tables, google doc formatting, format doc for client, create master index, create deliverable doc, format audit report.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/brandrainmakerai/google-doc-format" ~/.claude/skills/clawdbot-skills-google-doc-format && rm -rf "$T"
skills/brandrainmakerai/google-doc-format/SKILL.mdGoogle Doc Format Skill
Create professionally formatted Google Docs from markdown using
gog docs create --file. The key insight: markdown tables and formatting render properly as native Google Docs elements when passed through the --file flag.
Core Method
Always use
gog docs create with --file to import markdown. Never use gog docs write or gog docs insert for full documents — those don't parse markdown tables.
gog docs create "Doc Title" --file source.md --parent "FOLDER_ID" --pageless --force --no-input
Flags:
— Import markdown file (required for proper table rendering)--file
— Google Drive folder ID--parent
— Use pageless layout (recommended for reports/audits)--pageless
— Skip confirmations--force
Markdown → Google Docs Mapping
| Markdown | Google Docs Element |
|---|---|
| HEADING_1 |
| HEADING_2 |
| HEADING_3 |
| Bold text |
| Italic text |
or | Bullet list |
| Numbered list |
| Native TABLE element |
| Clickable hyperlink |
| Horizontal rule |
| Indented text |
Table Formatting Rules
Markdown pipe tables render as native Google Docs tables — this is the main value of this skill. Tables are the element most likely to break when creating docs any other way.
Correct format:
| # | Document | Link | |---|----------|------| | 01 | Technical SEO Audit | [Open doc](https://docs.google.com/document/d/DOC_ID/edit) | | 02 | On-Page SEO Audit | [Open doc](https://docs.google.com/document/d/DOC_ID/edit) |
What NOT to do:
- ❌ Tab-separated values (no
between columns)\t - ❌ Plain text pretending to be a table
- ❌ Using
with raw text (doesn't parse markdown)gog docs write - ❌ Putting tables inside code blocks (won't render as tables)
Document Templates
Master Index / Link Index Doc
# Project Name — Deliverables Master Index *Last updated: DATE* --- ## 📋 Section Name ### Subsection | # | Document | Link | |---|----------|------| | 01 | Document Name | [Open doc](https://docs.google.com/document/d/DOC_ID/edit) | | 02 | Document Name | [Open doc](https://docs.google.com/document/d/DOC_ID/edit) | --- ## 🎨 Another Section ### Subsection | # | Document | Link | |---|----------|------| | 01 | Document Name | [Open doc](https://docs.google.com/document/d/DOC_ID/edit) | --- ## 📂 Folder Structure - **Root:** Folder Name - **Subfolder** - Document 1 - Document 2
Audit/Report Doc
# Report Title: Descriptive Subtitle **URL:** /page-slug/ **Target Keywords:** keyword1, keyword2, keyword3 **Meta Title:** SEO Title (60 chars) **Meta Description:** Meta description (155 chars) --- ## Section Heading Body paragraph with **bold key terms** and normal text. ### Subsection | Metric | 2024 | 2023 | Change | |--------|------|------|--------| | Value 1 | 232 | 274 | -15% | **Key takeaway:** Summary sentence after the table. ### Another Subsection - **Bold label** — Description text - **Bold label** — Description text
Workflow
- Write markdown to temp file —
cat > /tmp/doc_name.md << 'EOF' - Create doc —
gog docs create "Title" --file /tmp/doc_name.md --parent FOLDER_ID --pageless --force --no-input - Verify structure —
gog docs structure DOC_ID --no-input | grep -i table - Verify content —
gog docs cat DOC_ID --no-input | head -20
Verification Checklist
After creating, verify:
-
shows TABLE elements (not just NORMAL_TEXT with pipe characters)gog docs structure - Table row counts match expected dimensions (e.g.,
)[table 6x3] - Links are clickable:
renders as hyperlinks[Open doc](url) - Heading hierarchy is correct (H1 > H2 > H3)
- Bold text renders (check structure output for inline formatting)
Replacing an Existing Doc
To replace a badly formatted doc:
- Create new doc with
flag--file - Verify formatting on the new doc
- Rename new doc to match old name:
gog drive rename NEW_ID "Original Name" --force --no-input - Delete old doc:
gog drive delete OLD_ID --force --no-input - Move new doc to correct folder if needed:
gog drive move NEW_ID --parent FOLDER_ID --force --no-input
Common Issues
| Problem | Cause | Fix |
|---|---|---|
| Tables show as pipe-separated text | Used instead of | Recreate with |
| Links not clickable | Used plain URLs, not markdown link syntax | Use format |
| No headings | Used underline-style headings | Use prefix headings |
| Missing bold | Used HTML tags | Use markdown |
| Rate limit (429) | Too many API calls in short time | Add between operations |
Rate Limiting
Google Docs API has per-minute write quotas. When creating multiple docs:
- Add
between create operationssleep 3 - If you get 429 errors, wait 60 seconds and retry
- For large batches (5+ docs), add
between eachsleep 5
Getting Doc IDs for Link Tables
To build a link index:
- List folder contents:
gog drive ls --parent FOLDER_ID --json --no-input - Extract IDs and names with:
python3 -c "import json,sys; data=json.load(sys.stdin); [print(f'{f[\"name\"]} | {f[\"id\"]}') for f in data.get('files',[])]" - Build Google Doc URLs:
https://docs.google.com/document/d/DOC_ID/edit