| name | content-gdocs |
| description | Push blog posts to Google Docs for review, then pull comments and suggestions back as feedback for discussion. |
/content-gdocs
Push content to Google Docs for collaborative review. Reviewers add comments and suggestions (tracked changes) in Google Docs, then pull that feedback back into the project for discussion with Claude.
Usage
uv run .claude/skills/content-gdocs/scripts/setup_auth.py
uv run .claude/skills/content-gdocs/scripts/push.py <project-dir>
uv run .claude/skills/content-gdocs/scripts/push.py <project-dir> --file content/blog.md
uv run .claude/skills/content-gdocs/scripts/push.py <project-dir> --share reviewer@example.com
uv run .claude/skills/content-gdocs/scripts/pull.py <project-dir>
uv run .claude/skills/content-gdocs/scripts/pull.py <project-dir> --file content/blog.md
Setup (One-Time)
1. Google Cloud Project
- Go to Google Cloud Console
- Create a new project (or select an existing one)
- Enable the Google Docs API and Google Drive API:
- APIs & Services > Library > search "Google Docs API" > Enable
- APIs & Services > Library > search "Google Drive API" > Enable
2. OAuth Credentials
- Go to APIs & Services > Credentials
- Click "Create Credentials" > "OAuth client ID"
- Application type: Desktop app
- Download the JSON file
- Save it to:
~/.content/google_credentials.json
3. System Dependency
brew install pandoc
Required for markdown-to-DOCX conversion with embedded images.
4. Authenticate
uv run .claude/skills/content-gdocs/scripts/setup_auth.py
This opens a browser for Google sign-in and saves a refresh token to ~/.content/google_token.json.
Workflow
Push
- Reads the markdown file (default:
content/blog.md)
- Converts to DOCX via pandoc (preserves headings, formatting, and images)
- Uploads to Google Drive as a native Google Doc
- Shares with specified reviewers as "commenter" (can view + suggest, not directly edit)
- Tracks the document in
docs.json
Re-pushing creates a new document (v2, v3...) to preserve comments on previous versions. Previous collaborators are auto-shared with the new doc.
Pull
- Reads
docs.json to find the Google Doc ID
- Fetches comments via Drive API (author, quoted text, replies)
- Fetches suggestions via Docs API (tracked insertions/deletions)
- Writes structured feedback to
content/feedback.md
The feedback file is context for discussion, not auto-apply. After pulling, review feedback.md with Claude to decide what to incorporate, what to push back on, and what to ignore.
Document Tracking: docs.json
Stored in the project directory. Maps local files to Google Doc IDs/URLs.
{
"files": [
{
"local_path": "content/blog.md",
"doc_id": "1a2b3c...",
"doc_url": "https://docs.google.com/document/d/1a2b3c.../edit",
"title": "How I Made My Website",
"pushed_at": "2026-03-02T14:00:00Z",
"last_pulled_at": null,
"version": 1,
"shared_with": ["reviewer@example.com"],
"history": []
}
]
}
Limitations
- Pandoc system dependency --
brew install pandoc needed for markdown+image conversion
- Feedback is discussion context, not auto-apply --
feedback.md is meant for reviewing with Claude
- New doc per push -- re-pushing creates a new Google Doc to preserve comments on old versions
- One-time GCP Console setup -- ~5 min manual process to create project and download credentials
- Suggestion parsing is best-effort -- simple word/phrase replacements parse cleanly; complex structural suggestions may be incomplete