google-deep-research
Google Deep Research Skill
This skill provides access to Google's Deep Research API, which runs comprehensive research queries server-side for 5-20 minutes, searching multiple web sources and synthesizing findings into detailed reports.
When to Use This Skill
Use Google Deep Research when:
- User explicitly asks for "deep research" on a topic
- Research requires comprehensive multi-source investigation
- Topic needs 10+ web sources synthesized
- User wants a detailed report (5,000-40,000 chars)
- Standard web searches would be insufficient
Do NOT use for:
- Quick factual lookups (use WebSearch instead)
- Single-source questions
- Time-sensitive queries needing instant answers
API Configuration
Endpoint
POST https://generativelanguage.googleapis.com/v1beta/interactions
Required Headers
Content-Type: application/json
x-goog-api-key: <API_KEY>
Request Payload
{
"input": "Your detailed research query here",
"agent": "deep-research-pro-preview-12-2025",
"background": true
}
Response (Success)
{
"id": "v1_ChdXXXXXXXXX...",
"status": "pending"
}
Workflow
Step 1: Submit Research Query
Use Python to submit the query:
import requests
import json
API_KEY = "<user's API key>"
URL = "https://generativelanguage.googleapis.com/v1beta/interactions"
headers = {
"Content-Type": "application/json",
"x-goog-api-key": API_KEY
}
payload = {
"input": "Research query here - be specific and detailed",
"agent": "deep-research-pro-preview-12-2025",
"background": True
}
response = requests.post(URL, headers=headers, json=payload)
data = response.json()
interaction_id = data.get("id")
print(f"Started research: {interaction_id}")
Step 2: Poll for Completion
Research takes 5-20 minutes. Poll the status:
import time
def check_status(interaction_id, api_key):
url = f"https://generativelanguage.googleapis.com/v1beta/interactions/{interaction_id}"
headers = {"x-goog-api-key": api_key}
while True:
resp = requests.get(url, headers=headers)
data = resp.json()
status = data.get("status") or data.get("state")
if status == "completed":
# Get the report text
outputs = data.get("outputs", [])
if outputs:
return outputs[-1].get("text", "")
return None
elif status in ["failed", "cancelled"]:
return None
else:
print(f"Status: {status} - waiting...")
time.sleep(30)
Step 3: Save Results
Save the report to a markdown file with metadata:
from datetime import datetime
from pathlib import Path
def save_report(name, report_text, output_dir="research_results"):
Path(output_dir).mkdir(parents=True, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{name}_{timestamp}.md"
filepath = Path(output_dir) / filename
with open(filepath, "w") as f:
f.write(f"# Deep Research Report: {name}\n\n")
f.write(f"**Generated:** {datetime.now().isoformat()}\n\n")
f.write("---\n\n")
f.write(report_text)
return filepath
Query Design Best Practices
Good Queries
Be specific with names, locations, and what you want:
Research solar panel installations at Norwegian shopping centers including
Citycon properties, Steen & Strøm centers, and AMFI centers. For each,
find: building name, address, installation size (kWp), installer company,
and completion year. Search ESG reports, press releases, and sustainability reports.
Bad Queries
Too vague:
Tell me about solar panels in Norway
Include in Your Queries
- Specific entities - Company names, building names, locations
- Data fields needed - Address, size, date, installer, etc.
- Source hints - "Search ESG reports, press releases, LinkedIn..."
- Geographic scope - Cities, regions, countries
- Time frame - "2020-2024", "recent", etc.
Quota Management
Tier 1 Limits
- ~3 Deep Research queries per API key per day
- Rate limit resets at midnight Pacific Time
Multi-Key Strategy
If you have multiple API keys, rotate through them:
API_KEYS = [
"AIzaSy...", # Key 1
"AIzaSy...", # Key 2
"AIzaSy...", # Key 3
]
for key in API_KEYS:
response = submit_query(query, key)
if response.status_code == 200:
break
elif response.status_code == 429:
continue # Try next key
Tracking Interactions
Maintain a JSON log to track all research jobs:
{
"started": "2025-01-01T00:00:00",
"interactions": [
{
"name": "research_topic_name",
"id": "v1_ChdXXXX...",
"started_at": "2025-01-01T00:00:00",
"status": "completed",
"api_key_used": "...last8chars",
"output_file": "path/to/report.md",
"report_length": 25000
}
]
}
Error Handling
Common Errors
| Status | Meaning | Action |
|---|---|---|
| 400 | Invalid API key | Check key format, regenerate if needed |
| 429 | Quota exceeded | Use different API key or wait 24h |
| 500 | Server error | Retry after 1 minute |
Invalid API Key Response
{
"error": {
"code": 400,
"message": "API key not valid",
"status": "INVALID_ARGUMENT"
}
}
Getting API Keys
- Go to https://aistudio.google.com/apikey
- Create a new API key
- Store securely (environment variable or secure storage)
Example: Full Research Script
See ~/.claude/skills/google-deep-research/deep_research.py for a complete implementation.
Output Format
Deep Research reports typically include:
- Executive summary
- Detailed findings organized by topic
- Source citations with URLs
- Data tables where applicable
- Recommendations or conclusions
Reports range from 5,000 to 40,000 characters depending on topic complexity.
More from simonstrumse/vibelabs-skills
bunny-net
Use Bunny.net for CDN, image hosting, video hosting, edge storage, image optimization, AI image generation, edge scripting, container hosting, DNS, and security (WAF/DDoS). Trigger when user mentions bunny, cdn, image hosting, video hosting, media storage, edge storage, image optimization, video streaming, pull zone, storage zone, WebP conversion, AVIF, lazy loading, DRM, video encoding, edge functions, serverless edge, container hosting, WAF, DDoS protection, bot detection, or content delivery.
25klarsprak
Norwegian plain language (klarspråk) guidelines from Språkrådet. Use when writing Norwegian website copy, marketing text, UI labels, documentation, or any user-facing Norwegian content. Triggers on Norwegian text, norsk tekst, klarspråk, markedsføring, nettsidetekst, brukergrensesnitt, or when reviewing/improving Norwegian copy quality.
5transcribe
>
4fiken
|
3company-research
Company research using Exa search. Finds company info, competitors, news, tweets, financials, LinkedIn profiles, builds company lists.
3soft-glass-ui
Design system for creating premium glass UI using iOS 26 native Liquid Glass APIs (.glassEffect modifier) or fallback gradient-based approaches for older iOS versions. Use when building SwiftUI iOS apps with glassmorphism, premium UI, translucent cards, or modern Apple-style interfaces. Triggers on requests for liquid glass, glassmorphism, iOS 26 design, premium UI, or translucent interfaces.
3