{
  "schemaVersion": "1.0",
  "item": {
    "slug": "gworkspace-cli",
    "name": "Google Workspace CLI",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/robinsadeghpour/gworkspace-cli",
    "canonicalUrl": "https://clawhub.ai/robinsadeghpour/gworkspace-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/gworkspace-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gworkspace-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "gworkspace-cli",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T03:17:39.236Z",
      "expiresAt": "2026-05-07T03:17:39.236Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gworkspace-cli",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gworkspace-cli",
        "contentDisposition": "attachment; filename=\"gworkspace-cli-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "gworkspace-cli"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/gworkspace-cli"
    },
    "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/gworkspace-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/gworkspace-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gworkspace-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gworkspace-cli/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "gworkspace-cli",
        "body": "Manage Google Drive, Docs, and Sheets from the terminal with gw."
      },
      {
        "title": "Do This First",
        "body": "Ensure gw is installed: npm i -g @11x.agency/gworkspace\nEnsure authenticated: run gw auth --status. If not authenticated, run gw auth.\nIf targeting a Shared Drive, get the drive ID first: gw drive shared"
      },
      {
        "title": "Authentication",
        "body": "gw auth                 # Opens browser for Google sign-in\ngw auth --status        # Check current auth (email, scopes, expiry)\ngw logout               # Remove stored credentials\n\nToken stored at ~/.11x/gworkspace/token.json. OAuth credentials via env vars or .env file:\n\nGOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET\nGW_CLIENT_ID / GW_CLIENT_SECRET (aliases)"
      },
      {
        "title": "Drive",
        "body": "# List files\ngw drive ls                              # Root of My Drive\ngw drive ls /Projects                    # By path\ngw drive ls --folder <id>               # By folder ID\ngw drive ls --type doc                  # Filter: doc, sheet, folder, all\ngw drive ls --limit 50                  # Pagination\n\n# Create folder\ngw drive mkdir \"Folder Name\"\ngw drive mkdir \"Subfolder\" --folder <parent-id>\n\n# Search\ngw drive search \"quarterly report\"\ngw drive search \"budget\" --type sheet\n\n# Upload\ngw drive upload ./file.pdf\ngw drive upload ./data.csv --folder <id> --name \"Q4 Data\"\n\n# List Shared Drives\ngw drive shared"
      },
      {
        "title": "Shared Drives",
        "body": "Use the global --drive <id> flag before any subcommand:\n\ngw --drive <shared-drive-id> drive ls\ngw --drive <shared-drive-id> drive ls /Projects\ngw --drive <shared-drive-id> drive mkdir \"New Folder\"\ngw --drive <shared-drive-id> drive search \"report\"\ngw --drive <shared-drive-id> drive upload ./file.pdf\n\nTo create docs/sheets in a Shared Drive, use --folder with a Shared Drive folder ID:\n\ngw doc create \"Title\" --folder <shared-drive-folder-id>\ngw sheet create \"Title\" --folder <shared-drive-folder-id>"
      },
      {
        "title": "Docs",
        "body": "gw doc read <id|url>                    # Plain text output\ngw doc read <id|url> --markdown         # Markdown output\ngw doc create \"Title\"                   # Create empty doc, returns ID + URL\ngw doc create \"Title\" --folder <id>     # Create in specific folder\ngw doc append <id|url> \"text\"           # Append text to end of doc\ngw doc append <id|url> --file ./notes.txt  # Append from file"
      },
      {
        "title": "Sheets",
        "body": "gw sheet read <id|url>                  # Read entire first sheet (JSON rows)\ngw sheet read <id|url> \"Sheet1!A1:C10\"  # Read specific range\ngw sheet write <id|url> \"A1:B2\" '[[\"Name\",\"Score\"],[\"Alice\",\"95\"]]'\ngw sheet write <id|url> \"A1\" --file ./data.csv\ngw sheet append <id|url> '[[\"Bob\",\"88\"]]'\ngw sheet append <id|url> --file ./more.csv\ngw sheet create \"Title\"                 # Create spreadsheet\ngw sheet create \"Title\" --folder <id>\ngw sheet list <id|url>                  # List tabs/sheets"
      },
      {
        "title": "Output Modes",
        "body": "All commands support three output modes:\n\nFlagOutputUse case(default)JSONPiping, scripting--prettyHuman-readable tableTerminal viewing--quietIDs only, one per lineChaining commands"
      },
      {
        "title": "I/O Contract",
        "body": "stdout: Data output (JSON, table, or IDs)\nstderr: Errors, status messages, progress\nExit 0: Success\nExit 1: Any error (auth, not found, permission, network)"
      },
      {
        "title": "URLs and IDs",
        "body": "All commands accept either format — paste a full Google URL or just the ID:\n\ngw doc read https://docs.google.com/document/d/1abc.../edit\ngw doc read 1abc..."
      },
      {
        "title": "Error Messages",
        "body": "ConditionMessageNo tokenError: Not authenticated. Run 'gw auth' to get started.Token expiredError: Session expired. Run 'gw auth' to re-authenticate.File not foundError: File not found.Permission deniedError: No access to this file. Make sure it's shared with your account.Network errorError: Could not reach Google APIs. Check your connection."
      },
      {
        "title": "Browse a Shared Drive and read a doc",
        "body": "gw drive shared --quiet                          # Get drive IDs\ngw --drive <id> drive ls --pretty                # Browse root\ngw --drive <id> drive ls --folder <folder-id>    # Drill into folder\ngw doc read <doc-id>                             # Read the doc"
      },
      {
        "title": "Create a doc with content in a specific folder",
        "body": "gw drive mkdir \"Project X\"                       # Create folder, get ID\ngw doc create \"Requirements\" --folder <id>       # Create doc, get ID\ngw doc append <doc-id> \"# Requirements\\n\\n...\"   # Write content"
      },
      {
        "title": "Export sheet data for processing",
        "body": "gw sheet read <id> --quiet > data.tsv            # Tab-separated to file\ngw sheet read <id> \"Sheet1!A1:D100\" | jq '.'     # JSON for processing"
      },
      {
        "title": "Upload and organize files",
        "body": "gw drive mkdir \"Reports\" --folder <parent-id>\ngw drive upload ./q4-report.pdf --folder <new-folder-id> --name \"Q4 Report 2026\""
      }
    ],
    "body": "gworkspace-cli\n\nManage Google Drive, Docs, and Sheets from the terminal with gw.\n\nDo This First\nEnsure gw is installed: npm i -g @11x.agency/gworkspace\nEnsure authenticated: run gw auth --status. If not authenticated, run gw auth.\nIf targeting a Shared Drive, get the drive ID first: gw drive shared\nAuthentication\ngw auth                 # Opens browser for Google sign-in\ngw auth --status        # Check current auth (email, scopes, expiry)\ngw logout               # Remove stored credentials\n\n\nToken stored at ~/.11x/gworkspace/token.json. OAuth credentials via env vars or .env file:\n\nGOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET\nGW_CLIENT_ID / GW_CLIENT_SECRET (aliases)\nCommands\nDrive\n# List files\ngw drive ls                              # Root of My Drive\ngw drive ls /Projects                    # By path\ngw drive ls --folder <id>               # By folder ID\ngw drive ls --type doc                  # Filter: doc, sheet, folder, all\ngw drive ls --limit 50                  # Pagination\n\n# Create folder\ngw drive mkdir \"Folder Name\"\ngw drive mkdir \"Subfolder\" --folder <parent-id>\n\n# Search\ngw drive search \"quarterly report\"\ngw drive search \"budget\" --type sheet\n\n# Upload\ngw drive upload ./file.pdf\ngw drive upload ./data.csv --folder <id> --name \"Q4 Data\"\n\n# List Shared Drives\ngw drive shared\n\nShared Drives\n\nUse the global --drive <id> flag before any subcommand:\n\ngw --drive <shared-drive-id> drive ls\ngw --drive <shared-drive-id> drive ls /Projects\ngw --drive <shared-drive-id> drive mkdir \"New Folder\"\ngw --drive <shared-drive-id> drive search \"report\"\ngw --drive <shared-drive-id> drive upload ./file.pdf\n\n\nTo create docs/sheets in a Shared Drive, use --folder with a Shared Drive folder ID:\n\ngw doc create \"Title\" --folder <shared-drive-folder-id>\ngw sheet create \"Title\" --folder <shared-drive-folder-id>\n\nDocs\ngw doc read <id|url>                    # Plain text output\ngw doc read <id|url> --markdown         # Markdown output\ngw doc create \"Title\"                   # Create empty doc, returns ID + URL\ngw doc create \"Title\" --folder <id>     # Create in specific folder\ngw doc append <id|url> \"text\"           # Append text to end of doc\ngw doc append <id|url> --file ./notes.txt  # Append from file\n\nSheets\ngw sheet read <id|url>                  # Read entire first sheet (JSON rows)\ngw sheet read <id|url> \"Sheet1!A1:C10\"  # Read specific range\ngw sheet write <id|url> \"A1:B2\" '[[\"Name\",\"Score\"],[\"Alice\",\"95\"]]'\ngw sheet write <id|url> \"A1\" --file ./data.csv\ngw sheet append <id|url> '[[\"Bob\",\"88\"]]'\ngw sheet append <id|url> --file ./more.csv\ngw sheet create \"Title\"                 # Create spreadsheet\ngw sheet create \"Title\" --folder <id>\ngw sheet list <id|url>                  # List tabs/sheets\n\nOutput Modes\n\nAll commands support three output modes:\n\nFlag\tOutput\tUse case\n(default)\tJSON\tPiping, scripting\n--pretty\tHuman-readable table\tTerminal viewing\n--quiet\tIDs only, one per line\tChaining commands\nI/O Contract\nstdout: Data output (JSON, table, or IDs)\nstderr: Errors, status messages, progress\nExit 0: Success\nExit 1: Any error (auth, not found, permission, network)\nURLs and IDs\n\nAll commands accept either format — paste a full Google URL or just the ID:\n\ngw doc read https://docs.google.com/document/d/1abc.../edit\ngw doc read 1abc...\n\nError Messages\nCondition\tMessage\nNo token\tError: Not authenticated. Run 'gw auth' to get started.\nToken expired\tError: Session expired. Run 'gw auth' to re-authenticate.\nFile not found\tError: File not found.\nPermission denied\tError: No access to this file. Make sure it's shared with your account.\nNetwork error\tError: Could not reach Google APIs. Check your connection.\nCommon Agent Workflows\nBrowse a Shared Drive and read a doc\ngw drive shared --quiet                          # Get drive IDs\ngw --drive <id> drive ls --pretty                # Browse root\ngw --drive <id> drive ls --folder <folder-id>    # Drill into folder\ngw doc read <doc-id>                             # Read the doc\n\nCreate a doc with content in a specific folder\ngw drive mkdir \"Project X\"                       # Create folder, get ID\ngw doc create \"Requirements\" --folder <id>       # Create doc, get ID\ngw doc append <doc-id> \"# Requirements\\n\\n...\"   # Write content\n\nExport sheet data for processing\ngw sheet read <id> --quiet > data.tsv            # Tab-separated to file\ngw sheet read <id> \"Sheet1!A1:D100\" | jq '.'     # JSON for processing\n\nUpload and organize files\ngw drive mkdir \"Reports\" --folder <parent-id>\ngw drive upload ./q4-report.pdf --folder <new-folder-id> --name \"Q4 Report 2026\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/robinsadeghpour/gworkspace-cli",
    "publisherUrl": "https://clawhub.ai/robinsadeghpour/gworkspace-cli",
    "owner": "robinsadeghpour",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/gworkspace-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/gworkspace-cli",
    "agentUrl": "https://openagent3.xyz/skills/gworkspace-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gworkspace-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gworkspace-cli/agent.md"
  }
}