{
  "schemaVersion": "1.0",
  "item": {
    "slug": "google-chat",
    "name": "Google Chat",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/darconada/google-chat",
    "canonicalUrl": "https://clawhub.ai/darconada/google-chat",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/google-chat",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=google-chat",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "references/config-example.json",
      "scripts/send_oauth.py",
      "scripts/send_webhook.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/google-chat"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/google-chat",
    "agentPageUrl": "https://openagent3.xyz/skills/google-chat/agent",
    "manifestUrl": "https://openagent3.xyz/skills/google-chat/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/google-chat/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Google Chat Messaging",
        "body": "Send messages to Google Chat using two methods:\n\nWebhooks - Fast, pre-configured channels (messages appear as a bot)\nOAuth - Dynamic messaging to any space or user (requires authentication)"
      },
      {
        "title": "Method 1: Webhooks (Recommended for Known Channels)",
        "body": "Send to a pre-configured channel:\n\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Your message here\"\n\nExample with threading:\n\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Reply message\" --thread_key \"unique-thread-id\"\n\nConfiguration: Store webhooks in google-chat-config.json:\n\n{\n  \"webhooks\": {\n    \"acs_engineering_network\": \"https://chat.googleapis.com/v1/spaces/...\",\n    \"general\": \"https://chat.googleapis.com/v1/spaces/...\"\n  }\n}\n\nRead config and send:\n\nWEBHOOK_URL=$(jq -r '.webhooks.acs_engineering_network' google-chat-config.json)\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Deploy completed ✅\""
      },
      {
        "title": "Method 2: OAuth (For Dynamic Messaging)",
        "body": "First-time setup:\n\nSave OAuth credentials to a file (e.g., google-chat-oauth-credentials.json)\nRun initial authentication (opens browser, saves token):\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"General\" \\\n  \"Test message\"\n\nSend to a space by name:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"Engineering Network\" \\\n  \"Deploy completed\"\n\nNote: OAuth messages automatically include 🤖 emoji prefix. Use --no-emoji to disable this:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"Engineering Network\" \\\n  \"Message without emoji\" \\\n  --no-emoji\n\nList available spaces:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --list-spaces\n\nSend to a DM (requires existing space ID):\n\n# Note: Google Chat API doesn't support creating new DMs by email\n# You need the space ID of an existing DM conversation\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space-id \"spaces/xxxxx\" \\\n  \"The report is ready\"\n\nSend to space by ID (faster):\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space-id \"spaces/AAAALtlqgVA\" \\\n  \"Direct message to space\""
      },
      {
        "title": "Dependencies",
        "body": "Install required Python packages:\n\npip install google-auth-oauthlib google-auth-httplib2 google-api-python-client\n\nRequired OAuth Scopes:\n\nhttps://www.googleapis.com/auth/chat.messages - Send messages\nhttps://www.googleapis.com/auth/chat.spaces - Access space information\nhttps://www.googleapis.com/auth/chat.memberships.readonly - List space members (for DM identification)"
      },
      {
        "title": "OAuth Setup Guide",
        "body": "If OAuth credentials don't exist yet:\n\nGo to Google Cloud Console\nSelect your project or create one\nEnable Google Chat API\nGo to APIs & Services → Credentials\nCreate OAuth 2.0 Client ID (Desktop app type)\nDownload JSON and save as google-chat-oauth-credentials.json\n\nThe credentials JSON should look like:\n\n{\n  \"installed\": {\n    \"client_id\": \"...apps.googleusercontent.com\",\n    \"client_secret\": \"GOCSPX-...\",\n    \"redirect_uris\": [\"http://localhost\"],\n    ...\n  }\n}"
      },
      {
        "title": "Webhook Setup Guide",
        "body": "To create a webhook for a Google Chat space:\n\nOpen Google Chat in browser\nGo to the space\nClick space name → Apps & integrations\nClick Manage webhooks → Add webhook\nGive it a name (e.g., \"Agustin Networks\")\nCopy the webhook URL\nAdd to google-chat-config.json"
      },
      {
        "title": "Choosing the Right Method",
        "body": "Use Webhooks when:\n\nSending to the same channels repeatedly\nMessages should appear as a bot/service\nSpeed is important (no OAuth handshake)\nConfiguration is static\n\nUse OAuth when:\n\nSending to different spaces dynamically\nMessages should appear from your configured Google Chat App\nSpace names are determined at runtime\nNeed to list and discover available spaces\n\nOAuth Limitations:\n\nCannot create new DMs by email address (Google Chat API restriction)\nTo send DMs, you need the space ID of an existing conversation\nUse --list-spaces to find available DM space IDs"
      },
      {
        "title": "Message Formatting",
        "body": "Both methods support simple text. For advanced formatting (cards, buttons), construct JSON payloads:\n\nWebhook with card:\n\nimport json\nimport urllib.request\n\npayload = {\n    \"cardsV2\": [{\n        \"cardId\": \"unique-card-id\",\n        \"card\": {\n            \"header\": {\"title\": \"Deploy Status\"},\n            \"sections\": [{\n                \"widgets\": [{\n                    \"textParagraph\": {\"text\": \"Production deploy completed successfully\"}\n                }]\n            }]\n        }\n    }]\n}\n\ndata = json.dumps(payload).encode(\"utf-8\")\nreq = urllib.request.Request(webhook_url, data=data, headers={\"Content-Type\": \"application/json\"})\nurllib.request.urlopen(req)"
      },
      {
        "title": "Troubleshooting",
        "body": "Webhook errors:\n\nVerify webhook URL is correct and active\nCheck space still exists and webhook wasn't deleted\nEnsure message isn't empty\n\nOAuth errors:\n\nRun authentication flow again if token expired\nVerify Google Chat API is enabled in Cloud Console\nCheck user has access to the target space\nFor DMs, ensure user email is correct and in same workspace\n\nPermission errors:\n\nWebhooks: Must be member of the space\nOAuth: Must have access to target space or user\nCorporate Workspace: Some features may be restricted by admin policies"
      },
      {
        "title": "Examples",
        "body": "Deploy notification to engineering channel:\n\nWEBHOOK=$(jq -r '.webhooks.acs_engineering_network' google-chat-config.json)\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"🚀 Production deploy v2.1.0 completed\"\n\nAlert specific user about task:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --dm juan@empresa.com \\\n  \"Your report is ready for review: https://docs.company.com/report\"\n\nThread multiple messages together (webhook):\n\nWEBHOOK=$(jq -r '.webhooks.general' google-chat-config.json)\nTHREAD_KEY=\"deploy-$(date +%s)\"\n\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"Starting deploy...\" --thread_key \"$THREAD_KEY\"\n# ... deployment happens ...\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"Deploy completed ✅\" --thread_key \"$THREAD_KEY\""
      }
    ],
    "body": "Google Chat Messaging\n\nSend messages to Google Chat using two methods:\n\nWebhooks - Fast, pre-configured channels (messages appear as a bot)\nOAuth - Dynamic messaging to any space or user (requires authentication)\nQuick Start\nMethod 1: Webhooks (Recommended for Known Channels)\n\nSend to a pre-configured channel:\n\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Your message here\"\n\n\nExample with threading:\n\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Reply message\" --thread_key \"unique-thread-id\"\n\n\nConfiguration: Store webhooks in google-chat-config.json:\n\n{\n  \"webhooks\": {\n    \"acs_engineering_network\": \"https://chat.googleapis.com/v1/spaces/...\",\n    \"general\": \"https://chat.googleapis.com/v1/spaces/...\"\n  }\n}\n\n\nRead config and send:\n\nWEBHOOK_URL=$(jq -r '.webhooks.acs_engineering_network' google-chat-config.json)\npython3 scripts/send_webhook.py \"$WEBHOOK_URL\" \"Deploy completed ✅\"\n\nMethod 2: OAuth (For Dynamic Messaging)\n\nFirst-time setup:\n\nSave OAuth credentials to a file (e.g., google-chat-oauth-credentials.json)\nRun initial authentication (opens browser, saves token):\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"General\" \\\n  \"Test message\"\n\n\nSend to a space by name:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"Engineering Network\" \\\n  \"Deploy completed\"\n\n\nNote: OAuth messages automatically include 🤖 emoji prefix. Use --no-emoji to disable this:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space \"Engineering Network\" \\\n  \"Message without emoji\" \\\n  --no-emoji\n\n\nList available spaces:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --list-spaces\n\n\nSend to a DM (requires existing space ID):\n\n# Note: Google Chat API doesn't support creating new DMs by email\n# You need the space ID of an existing DM conversation\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space-id \"spaces/xxxxx\" \\\n  \"The report is ready\"\n\n\nSend to space by ID (faster):\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --space-id \"spaces/AAAALtlqgVA\" \\\n  \"Direct message to space\"\n\nDependencies\n\nInstall required Python packages:\n\npip install google-auth-oauthlib google-auth-httplib2 google-api-python-client\n\n\nRequired OAuth Scopes:\n\nhttps://www.googleapis.com/auth/chat.messages - Send messages\nhttps://www.googleapis.com/auth/chat.spaces - Access space information\nhttps://www.googleapis.com/auth/chat.memberships.readonly - List space members (for DM identification)\nOAuth Setup Guide\n\nIf OAuth credentials don't exist yet:\n\nGo to Google Cloud Console\nSelect your project or create one\nEnable Google Chat API\nGo to APIs & Services → Credentials\nCreate OAuth 2.0 Client ID (Desktop app type)\nDownload JSON and save as google-chat-oauth-credentials.json\n\nThe credentials JSON should look like:\n\n{\n  \"installed\": {\n    \"client_id\": \"...apps.googleusercontent.com\",\n    \"client_secret\": \"GOCSPX-...\",\n    \"redirect_uris\": [\"http://localhost\"],\n    ...\n  }\n}\n\nWebhook Setup Guide\n\nTo create a webhook for a Google Chat space:\n\nOpen Google Chat in browser\nGo to the space\nClick space name → Apps & integrations\nClick Manage webhooks → Add webhook\nGive it a name (e.g., \"Agustin Networks\")\nCopy the webhook URL\nAdd to google-chat-config.json\nChoosing the Right Method\n\nUse Webhooks when:\n\nSending to the same channels repeatedly\nMessages should appear as a bot/service\nSpeed is important (no OAuth handshake)\nConfiguration is static\n\nUse OAuth when:\n\nSending to different spaces dynamically\nMessages should appear from your configured Google Chat App\nSpace names are determined at runtime\nNeed to list and discover available spaces\n\nOAuth Limitations:\n\nCannot create new DMs by email address (Google Chat API restriction)\nTo send DMs, you need the space ID of an existing conversation\nUse --list-spaces to find available DM space IDs\nMessage Formatting\n\nBoth methods support simple text. For advanced formatting (cards, buttons), construct JSON payloads:\n\nWebhook with card:\n\nimport json\nimport urllib.request\n\npayload = {\n    \"cardsV2\": [{\n        \"cardId\": \"unique-card-id\",\n        \"card\": {\n            \"header\": {\"title\": \"Deploy Status\"},\n            \"sections\": [{\n                \"widgets\": [{\n                    \"textParagraph\": {\"text\": \"Production deploy completed successfully\"}\n                }]\n            }]\n        }\n    }]\n}\n\ndata = json.dumps(payload).encode(\"utf-8\")\nreq = urllib.request.Request(webhook_url, data=data, headers={\"Content-Type\": \"application/json\"})\nurllib.request.urlopen(req)\n\nTroubleshooting\n\nWebhook errors:\n\nVerify webhook URL is correct and active\nCheck space still exists and webhook wasn't deleted\nEnsure message isn't empty\n\nOAuth errors:\n\nRun authentication flow again if token expired\nVerify Google Chat API is enabled in Cloud Console\nCheck user has access to the target space\nFor DMs, ensure user email is correct and in same workspace\n\nPermission errors:\n\nWebhooks: Must be member of the space\nOAuth: Must have access to target space or user\nCorporate Workspace: Some features may be restricted by admin policies\nExamples\n\nDeploy notification to engineering channel:\n\nWEBHOOK=$(jq -r '.webhooks.acs_engineering_network' google-chat-config.json)\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"🚀 Production deploy v2.1.0 completed\"\n\n\nAlert specific user about task:\n\npython3 scripts/send_oauth.py \\\n  --credentials google-chat-oauth-credentials.json \\\n  --token google-chat-token.json \\\n  --dm juan@empresa.com \\\n  \"Your report is ready for review: https://docs.company.com/report\"\n\n\nThread multiple messages together (webhook):\n\nWEBHOOK=$(jq -r '.webhooks.general' google-chat-config.json)\nTHREAD_KEY=\"deploy-$(date +%s)\"\n\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"Starting deploy...\" --thread_key \"$THREAD_KEY\"\n# ... deployment happens ...\npython3 scripts/send_webhook.py \"$WEBHOOK\" \"Deploy completed ✅\" --thread_key \"$THREAD_KEY\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/darconada/google-chat",
    "publisherUrl": "https://clawhub.ai/darconada/google-chat",
    "owner": "darconada",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/google-chat",
    "downloadUrl": "https://openagent3.xyz/downloads/google-chat",
    "agentUrl": "https://openagent3.xyz/skills/google-chat/agent",
    "manifestUrl": "https://openagent3.xyz/skills/google-chat/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/google-chat/agent.md"
  }
}