원클릭으로
google-workspace
Automate Google Workspace — Gmail, Drive, Sheets, Docs, Calendar via Google API Python client or gcloud CLI.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Automate Google Workspace — Gmail, Drive, Sheets, Docs, Calendar via Google API Python client or gcloud CLI.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Compress conversation context — summarize the current session, extract key decisions and facts, then compact history to free up context window.
Generate insights about your Claude Code usage — what topics you work on most, common patterns, productivity trends.
Route Claude Code work by complexity, risk, and tool needs. Use when deciding how much reasoning depth a task needs, whether to read project memory first, whether the task should be decomposed, and whether the work is lightweight, standard, or investigation-heavy.
Query Polymarket prediction markets for probability data and research insights on real-world events.
Search and retrieve academic papers from arXiv using their free REST API. No API key needed.
Query Base (Ethereum L2) blockchain data — wallet balances, token info, transactions, gas analysis, contract inspection. No API key required.
| name | google-workspace |
| description | Automate Google Workspace — Gmail, Drive, Sheets, Docs, Calendar via Google API Python client or gcloud CLI. |
| version | 1.0.0 |
| author | hermes-CCC (ported from Hermes Agent by NousResearch) |
| license | MIT |
| metadata | {"hermes":{"tags":["Google","Gmail","Drive","Sheets","Docs","Calendar","Workspace","Automation"],"related_skills":[]}} |
Automate Gmail, Drive, Sheets, Docs, and Calendar via the Google API Python client.
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
Create credentials at console.cloud.google.com → APIs & Services → Credentials → OAuth 2.0.
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
import os, pickle
SCOPES = [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/calendar",
]
def get_credentials():
creds = None
if os.path.exists("token.pickle"):
with open("token.pickle", "rb") as f:
creds = pickle.load(f)
if not creds or not creds.valid:
flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
creds = flow.run_local_server(port=0)
with open("token.pickle", "wb") as f:
pickle.dump(creds, f)
return creds
service = build("gmail", "v1", credentials=get_credentials())
# List messages
msgs = service.users().messages().list(userId="me", q="is:unread", maxResults=10).execute()
# Read message
def read_email(msg_id):
msg = service.users().messages().get(userId="me", id=msg_id, format="full").execute()
headers = {h["name"]: h["value"] for h in msg["payload"]["headers"]}
return {
"subject": headers.get("Subject"),
"from": headers.get("From"),
"snippet": msg["snippet"]
}
# Send email
import base64
from email.mime.text import MIMEText
def send_email(to, subject, body):
msg = MIMEText(body)
msg["to"] = to
msg["subject"] = subject
raw = base64.urlsafe_b64encode(msg.as_bytes()).decode()
service.users().messages().send(userId="me", body={"raw": raw}).execute()
drive = build("drive", "v3", credentials=get_credentials())
# List files
files = drive.files().list(
q="mimeType='application/vnd.google-apps.spreadsheet'",
fields="files(id, name, modifiedTime)"
).execute()
# Upload file
from googleapiclient.http import MediaFileUpload
media = MediaFileUpload("report.pdf", mimetype="application/pdf")
drive.files().create(
body={"name": "report.pdf", "parents": ["FOLDER_ID"]},
media_body=media
).execute()
# Download file
import io
from googleapiclient.http import MediaIoBaseDownload
request = drive.files().get_media(fileId="FILE_ID")
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while not done:
_, done = downloader.next_chunk()
sheets = build("sheets", "v4", credentials=get_credentials())
SHEET_ID = "your-spreadsheet-id"
# Read range
result = sheets.spreadsheets().values().get(
spreadsheetId=SHEET_ID, range="Sheet1!A1:D10"
).execute()
rows = result.get("values", [])
# Write range
sheets.spreadsheets().values().update(
spreadsheetId=SHEET_ID,
range="Sheet1!A1",
valueInputOption="RAW",
body={"values": [["Name", "Score"], ["Alice", 95], ["Bob", 87]]}
).execute()
# Append rows
sheets.spreadsheets().values().append(
spreadsheetId=SHEET_ID,
range="Sheet1!A:A",
valueInputOption="RAW",
body={"values": [["New Row", "Data"]]}
).execute()
cal = build("calendar", "v3", credentials=get_credentials())
# List events
events = cal.events().list(
calendarId="primary",
maxResults=10,
singleEvents=True,
orderBy="startTime"
).execute()
for event in events.get("items", []):
print(event["summary"], event["start"].get("dateTime"))
# Create event
cal.events().insert(
calendarId="primary",
body={
"summary": "Team Meeting",
"start": {"dateTime": "2026-04-08T10:00:00+09:00"},
"end": {"dateTime": "2026-04-08T11:00:00+09:00"},
"attendees": [{"email": "colleague@example.com"}],
}
).execute()
# Auth
gcloud auth login
gcloud auth application-default login
# Drive: list files
gdrive list
# Sheets: export as CSV
gsheet export SHEET_ID --format csv