{
  "schemaVersion": "1.0",
  "item": {
    "slug": "gram",
    "name": "Instagram Skill via cyberdrk/gram CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/arein/gram",
    "canonicalUrl": "https://clawhub.ai/arein/gram",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/gram",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gram",
    "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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/gram"
    },
    "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/gram",
    "agentPageUrl": "https://openagent3.xyz/skills/gram/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gram/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gram/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": "gram 📸",
        "body": "Instagram CLI using REST/GraphQL API + cookie auth."
      },
      {
        "title": "Install",
        "body": "# npm/pnpm/bun\nnpm install -g @cyberdrk/gram\n\n# One-shot (no install)\nbunx @cyberdrk/gram whoami"
      },
      {
        "title": "Authentication",
        "body": "gram uses cookie-based auth from your Instagram web session.\n\nUse --session-id, --csrf-token, and --ds-user-id to pass cookies directly, or --cookie-source for browser cookies.\n\nRun gram check to see which source is active. For Arc/Brave, use --chrome-profile-dir <path>."
      },
      {
        "title": "Account & Auth",
        "body": "gram whoami                    # Show logged-in account\ngram check                     # Show credential sources\ngram query-ids --refresh       # Refresh GraphQL query ID cache"
      },
      {
        "title": "Reading Posts",
        "body": "gram post <shortcode-or-url>   # View a post\ngram <shortcode-or-url>        # Shorthand for post\ngram comments <shortcode> -n 20 # View comments on a post\ngram likers <shortcode>        # View users who liked a post"
      },
      {
        "title": "Feeds",
        "body": "gram feed -n 20                # Home feed\ngram explore -n 20             # Explore/discover feed"
      },
      {
        "title": "User Profiles",
        "body": "gram user <username>           # View user profile\ngram user @instagram --json    # JSON output\ngram posts <username> -n 20    # User's posts\ngram following [username]      # Users someone follows (defaults to you)\ngram followers [username]      # Someone's followers (defaults to you)"
      },
      {
        "title": "Search",
        "body": "gram search \"query\"            # Search users, hashtags, places\ngram search \"coffee\" --type users\ngram search \"nyc\" --type places\ngram search \"#photography\" --type hashtags"
      },
      {
        "title": "Engagement Actions",
        "body": "gram like <shortcode>          # Like a post\ngram unlike <shortcode>        # Unlike a post\ngram save <shortcode>          # Save/bookmark a post\ngram unsave <shortcode>        # Unsave a post\ngram comment <shortcode> \"nice!\" # Comment on a post\ngram follow <username>         # Follow a user\ngram unfollow <username>       # Unfollow a user"
      },
      {
        "title": "Output Options",
        "body": "--json          # JSON output\n--json-full     # JSON with raw API response in _raw field\n--plain         # No emoji, no color (script-friendly)\n--no-emoji      # Disable emoji\n--no-color      # Disable ANSI colors (or set NO_COLOR=1)"
      },
      {
        "title": "Global Options",
        "body": "--session-id <token>           # Instagram sessionid cookie\n--csrf-token <token>           # Instagram csrftoken cookie\n--ds-user-id <id>              # Instagram ds_user_id cookie\n--cookie-source <source>       # Cookie source for browser cookies (repeatable)\n--chrome-profile <name>        # Chrome profile name\n--chrome-profile-dir <path>    # Chrome/Chromium profile dir or cookie DB path\n--firefox-profile <name>       # Firefox profile\n--timeout <ms>                 # Request timeout\n--cookie-timeout <ms>          # Cookie extraction timeout"
      },
      {
        "title": "Config File",
        "body": "~/.config/gram/config.json5 (global) or ./.gramrc.json5 (project):\n\n{\n  cookieSource: [\"safari\", \"chrome\"],\n  chromeProfile: \"Profile 1\",\n  timeoutMs: 60000\n}\n\nEnvironment variables: GRAM_TIMEOUT_MS, GRAM_COOKIE_TIMEOUT_MS"
      },
      {
        "title": "Query IDs stale (404 errors)",
        "body": "gram query-ids --refresh"
      },
      {
        "title": "Cookie extraction fails",
        "body": "Check browser is logged into Instagram\nTry different --cookie-source\nFor Arc/Brave: use --chrome-profile-dir\nProvide cookies manually: --session-id, --csrf-token, --ds-user-id"
      },
      {
        "title": "User-agent mismatch errors",
        "body": "The CLI uses desktop user-agent by default\nIf your session was created on mobile, it may fail\nCreate a new session by logging in via desktop browser\n\nTL;DR: View feeds, profiles, search, and engage with Instagram via CLI. 📸"
      }
    ],
    "body": "gram 📸\n\nInstagram CLI using REST/GraphQL API + cookie auth.\n\nInstall\n# npm/pnpm/bun\nnpm install -g @cyberdrk/gram\n\n# One-shot (no install)\nbunx @cyberdrk/gram whoami\n\nAuthentication\n\ngram uses cookie-based auth from your Instagram web session.\n\nUse --session-id, --csrf-token, and --ds-user-id to pass cookies directly, or --cookie-source for browser cookies.\n\nRun gram check to see which source is active. For Arc/Brave, use --chrome-profile-dir <path>.\n\nCommands\nAccount & Auth\ngram whoami                    # Show logged-in account\ngram check                     # Show credential sources\ngram query-ids --refresh       # Refresh GraphQL query ID cache\n\nReading Posts\ngram post <shortcode-or-url>   # View a post\ngram <shortcode-or-url>        # Shorthand for post\ngram comments <shortcode> -n 20 # View comments on a post\ngram likers <shortcode>        # View users who liked a post\n\nFeeds\ngram feed -n 20                # Home feed\ngram explore -n 20             # Explore/discover feed\n\nUser Profiles\ngram user <username>           # View user profile\ngram user @instagram --json    # JSON output\ngram posts <username> -n 20    # User's posts\ngram following [username]      # Users someone follows (defaults to you)\ngram followers [username]      # Someone's followers (defaults to you)\n\nSearch\ngram search \"query\"            # Search users, hashtags, places\ngram search \"coffee\" --type users\ngram search \"nyc\" --type places\ngram search \"#photography\" --type hashtags\n\nEngagement Actions\ngram like <shortcode>          # Like a post\ngram unlike <shortcode>        # Unlike a post\ngram save <shortcode>          # Save/bookmark a post\ngram unsave <shortcode>        # Unsave a post\ngram comment <shortcode> \"nice!\" # Comment on a post\ngram follow <username>         # Follow a user\ngram unfollow <username>       # Unfollow a user\n\nOutput Options\n--json          # JSON output\n--json-full     # JSON with raw API response in _raw field\n--plain         # No emoji, no color (script-friendly)\n--no-emoji      # Disable emoji\n--no-color      # Disable ANSI colors (or set NO_COLOR=1)\n\nGlobal Options\n--session-id <token>           # Instagram sessionid cookie\n--csrf-token <token>           # Instagram csrftoken cookie\n--ds-user-id <id>              # Instagram ds_user_id cookie\n--cookie-source <source>       # Cookie source for browser cookies (repeatable)\n--chrome-profile <name>        # Chrome profile name\n--chrome-profile-dir <path>    # Chrome/Chromium profile dir or cookie DB path\n--firefox-profile <name>       # Firefox profile\n--timeout <ms>                 # Request timeout\n--cookie-timeout <ms>          # Cookie extraction timeout\n\nConfig File\n\n~/.config/gram/config.json5 (global) or ./.gramrc.json5 (project):\n\n{\n  cookieSource: [\"safari\", \"chrome\"],\n  chromeProfile: \"Profile 1\",\n  timeoutMs: 60000\n}\n\n\nEnvironment variables: GRAM_TIMEOUT_MS, GRAM_COOKIE_TIMEOUT_MS\n\nTroubleshooting\nQuery IDs stale (404 errors)\ngram query-ids --refresh\n\nCookie extraction fails\nCheck browser is logged into Instagram\nTry different --cookie-source\nFor Arc/Brave: use --chrome-profile-dir\nProvide cookies manually: --session-id, --csrf-token, --ds-user-id\nUser-agent mismatch errors\nThe CLI uses desktop user-agent by default\nIf your session was created on mobile, it may fail\nCreate a new session by logging in via desktop browser\n\nTL;DR: View feeds, profiles, search, and engage with Instagram via CLI. 📸"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/arein/gram",
    "publisherUrl": "https://clawhub.ai/arein/gram",
    "owner": "arein",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/gram",
    "downloadUrl": "https://openagent3.xyz/downloads/gram",
    "agentUrl": "https://openagent3.xyz/skills/gram/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gram/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gram/agent.md"
  }
}