google-docsGoogle Docs API integration with managed OAuth. Create documents, insert text, apply formatting, and manage content. Use this skill when users want to interact with Google Docs. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Install via ClawdBot CLI:
clawdbot install byungkyu/google-docsAccess the Google Docs API with managed OAuth authentication. Create documents, insert and format text, and manage document content.
# Get document
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-docs/v1/documents/{documentId}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
https://gateway.maton.ai/google-docs/{native-api-path}
Replace {native-api-path} with the actual Google Docs API endpoint path. The gateway proxies requests to docs.googleapis.com and automatically injects your OAuth token.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Manage your Google OAuth connections at https://ctrl.maton.ai.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-docs&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-docs'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "google-docs",
"metadata": {}
}
}
Open the returned url in a browser to complete OAuth authorization.
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple Google Docs connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-docs/v1/documents/{documentId}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection.
GET /google-docs/v1/documents/{documentId}
POST /google-docs/v1/documents
Content-Type: application/json
{
"title": "New Document"
}
POST /google-docs/v1/documents/{documentId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"insertText": {
"location": {"index": 1},
"text": "Hello, World!"
}
}
]
}
{
"insertText": {
"location": {"index": 1},
"text": "Text to insert"
}
}
{
"deleteContentRange": {
"range": {
"startIndex": 1,
"endIndex": 10
}
}
}
{
"replaceAllText": {
"containsText": {
"text": "{{placeholder}}",
"matchCase": true
},
"replaceText": "replacement value"
}
}
{
"insertTable": {
"location": {"index": 1},
"rows": 3,
"columns": 3
}
}
{
"updateTextStyle": {
"range": {
"startIndex": 1,
"endIndex": 10
},
"textStyle": {
"bold": true,
"fontSize": {"magnitude": 14, "unit": "PT"}
},
"fields": "bold,fontSize"
}
}
{
"insertPageBreak": {
"location": {"index": 1}
}
}
// Create document
const response = await fetch(
'https://gateway.maton.ai/google-docs/v1/documents',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ title: 'New Document' })
}
);
// Insert text
await fetch(
`https://gateway.maton.ai/google-docs/v1/documents/${docId}:batchUpdate`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({
requests: [{ insertText: { location: { index: 1 }, text: 'Hello!' } }]
})
}
);
import os
import requests
# Create document
response = requests.post(
'https://gateway.maton.ai/google-docs/v1/documents',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'title': 'New Document'}
)
endOfSegmentLocation to append at endfields parameter in style updates uses field mask syntaxcurl -g when URLs contain brackets (fields[], sort[], records[]) to disable glob parsingjq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments. You may get "Invalid API key" errors when piping.| Status | Meaning |
|--------|---------|
| 400 | Missing Google Docs connection |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 req/sec per account) |
| 4xx/5xx | Passthrough error from Google Docs API |
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
google-docs. For example:https://gateway.maton.ai/google-docs/v1/documents/{documentId}https://gateway.maton.ai/docs/v1/documents/{documentId}Generated Mar 1, 2026
Business intelligence tools can automatically generate weekly performance reports in Google Docs. The system creates new documents, inserts structured data with proper formatting, and shares them with stakeholders. This eliminates manual copy-pasting and ensures consistent reporting across teams.
Legal departments can automate the population of standard contract templates with client-specific information. The system replaces placeholder text with actual client data, applies consistent formatting, and saves completed contracts. This reduces manual errors and speeds up contract preparation.
Marketing teams can connect their CMS to automatically publish blog drafts to Google Docs for collaborative editing. The system creates formatted documents with headings, images, and proper styling before human review. This streamlines content creation workflows between writers and editors.
Educational platforms can generate personalized learning materials for students. The system creates documents with customized exercises, inserts tables for practice problems, and applies formatting for readability. Teachers can then review and modify before distribution.
Software development teams can automatically generate project documentation from code repositories. The system creates new documents with standard templates, inserts code snippets with proper formatting, and updates existing documents with change logs. This maintains up-to-date documentation with minimal manual effort.
Offer this Google Docs integration as part of a broader SaaS platform that connects multiple productivity tools. Charge monthly subscription fees based on usage tiers and number of connected applications. Provide value by reducing development time for businesses needing document automation.
Provide implementation and customization services for businesses wanting to automate their Google Docs workflows. Charge project-based fees for initial setup and ongoing retainer fees for maintenance and support. Focus on specific industries like legal, education, or marketing agencies.
License the integration technology to other software companies who want to embed Google Docs functionality in their own products. Charge annual licensing fees based on user count or revenue sharing. Provide technical support and customization options for enterprise clients.
💬 Integration Tip
Start by testing with simple text insertion operations before implementing complex formatting. Use the connection management API to handle multiple Google accounts securely.
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Gmail, Calendar, Drive, Docs, Sheets — NO Google Cloud Console required. Just OAuth sign-in. Zero setup complexity vs traditional Google API integrations.
Google Drive API integration with managed OAuth. List, search, create, and manage files and folders. Use this skill when users want to interact with Google D...
Google Sheets API integration with managed OAuth. Read and write spreadsheet data, create sheets, apply formatting, and manage ranges. Use this skill when users want to read from or write to Google Sheets. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).