{
  "schemaVersion": "1.0",
  "item": {
    "slug": "instagram-content-studio",
    "name": "Instagram Content Studio",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/uyeong/instagram-content-studio",
    "canonicalUrl": "https://clawhub.ai/uyeong/instagram-content-studio",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/instagram-content-studio",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=instagram-content-studio",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      ".env.example.txt",
      "README.md",
      "package-lock.json",
      "package.json",
      "SKILL.md",
      "SPEC.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. 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/instagram-content-studio"
    },
    "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/instagram-content-studio",
    "agentPageUrl": "https://openagent3.xyz/skills/instagram-content-studio/agent",
    "manifestUrl": "https://openagent3.xyz/skills/instagram-content-studio/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/instagram-content-studio/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": "Instagram API Skill",
        "body": "A skill for managing an Instagram account via the Instagram Graph API. Supports profile viewing, post management, image publishing, video/Reels publishing, and comment operations."
      },
      {
        "title": "Prerequisites",
        "body": "A .env file with credentials must be configured.\n\nRequired: INSTAGRAM_ACCESS_TOKEN\nRecommended (for comment/reply via Facebook Graph): FACEBOOK_USER_ACCESS_TOKEN\nRequired for FB token refresh: FACEBOOK_APP_ID, FACEBOOK_APP_SECRET\n\n\ncloudflared must be installed for local image/video posting.\nIf the user specifies a .env file path, append --env <path> to every command.\n\nExample: node scripts/get-profile.js --env /home/user/.instagram-env\n\n\nAll scripts must be run with this project root as the working directory."
      },
      {
        "title": "Available Commands",
        "body": "All commands automatically refresh the token before execution. No manual refresh needed."
      },
      {
        "title": "Refresh Token",
        "body": "# Instagram token refresh\nnode scripts/refresh-token.js\n\n# Facebook user token refresh (for comments/replies flow)\nnode scripts/refresh-facebook-token.js\n\nManually refreshes token(s) and returns expiration info."
      },
      {
        "title": "View Profile",
        "body": "node scripts/get-profile.js\n\nReturns profile info (name, username, account type, media count)."
      },
      {
        "title": "List Posts",
        "body": "node scripts/get-posts.js [--limit 10]\n\nReturns the user's post list. Use --limit to set the count (default: 10)."
      },
      {
        "title": "View Post Detail",
        "body": "node scripts/get-post.js <media-id>\n\nReturns post detail including like count and comment count."
      },
      {
        "title": "Publish Image",
        "body": "# Single image (URL)\nnode scripts/post-image.js --caption \"Caption\" https://example.com/photo.jpg\n\n# Single image (local file)\nnode scripts/post-image.js --caption \"Caption\" ./photos/image.png\n\n# Carousel — multiple images (URL)\nnode scripts/post-image.js --caption \"Caption\" https://example.com/a.jpg https://example.com/b.jpg\n\n# Carousel — multiple images (local files)\nnode scripts/post-image.js --caption \"Caption\" ./img1.png ./img2.png ./img3.jpg\n\n1 image → single post, 2+ images → automatically posted as carousel (max 10).\nBoth URLs (http://, https://) and local file paths are supported, but mixing is not allowed.\nSupported local file formats: jpg, jpeg, png, gif, webp, heic/heif (HEIC is automatically converted to JPEG)."
      },
      {
        "title": "Publish Video (Reels)",
        "body": "# Single video (URL)\nnode scripts/post-video.js --caption \"Caption\" https://example.com/video.mp4\n\n# Single video (local file)\nnode scripts/post-video.js --caption \"Caption\" ./videos/clip.mp4\n\n# With cover image and options\nnode scripts/post-video.js --caption \"Caption\" --cover https://example.com/cover.jpg --thumb-offset 5000 --share-to-feed true https://example.com/video.mp4\n\n# Video carousel — multiple videos (URL)\nnode scripts/post-video.js --caption \"Caption\" https://example.com/a.mp4 https://example.com/b.mp4\n\n# Video carousel — multiple videos (local files)\nnode scripts/post-video.js --caption \"Caption\" ./clip1.mp4 ./clip2.mov\n\n1 video → Reels post, 2+ videos → automatically posted as carousel (max 10).\nBoth URLs and local file paths are supported, but mixing is not allowed.\nSupported formats: mp4, mov (max 100MB per file).\n--cover, --thumb-offset, --share-to-feed options are only available for single video posts (not carousels).\nVideo processing takes longer than images; the script waits up to 10 minutes."
      },
      {
        "title": "View Comments",
        "body": "node scripts/get-comments.js <media-id>\n\nReturns comments and replies for a specific post."
      },
      {
        "title": "Post Comment",
        "body": "node scripts/post-comment.js <media-id> --text \"Comment text\""
      },
      {
        "title": "Reply to Comment",
        "body": "node scripts/reply-comment.js <comment-id> --text \"Reply text\""
      },
      {
        "title": "Workflow Guidelines",
        "body": "When publishing images or videos, always confirm the caption with the user before executing.\nAfter publishing, report the result ID and permalink to the user (both are included in the output).\nVideo processing takes longer than images. Inform the user that it may take a few minutes.\nWhen writing comments/replies, confirm the content with the user before executing.\nAll command outputs are in JSON format."
      },
      {
        "title": "Error Handling",
        "body": "If the output contains an error field, an error has occurred. Explain the cause to the user and suggest a resolution.\n\n{ \"error\": \"error message\" }"
      },
      {
        "title": "Token storage",
        "body": "refreshIgToken() and refreshFbToken() overwrite tokens in the .env file in plaintext. Do not commit .env to version control.\nCreate a dedicated Meta app with minimum required permissions (see below)."
      },
      {
        "title": "Local file upload",
        "body": "Local image/video posting starts a temporary cloudflared Quick Tunnel to expose files so Instagram servers can download them.\nThe tunnel is active only during the upload and is shut down immediately after.\nOnly provide file paths you are comfortable briefly exposing to the internet."
      },
      {
        "title": "Minimum required permissions",
        "body": "When creating your Meta app, grant only these permissions:\n\ninstagram_business_basic — profile and media read\ninstagram_content_publish — image/video publishing\ninstagram_manage_comments — comment read/write\npages_read_engagement — required for comment API via Facebook Graph\npages_show_list — required for page-linked Instagram accounts"
      }
    ],
    "body": "Instagram API Skill\n\nA skill for managing an Instagram account via the Instagram Graph API. Supports profile viewing, post management, image publishing, video/Reels publishing, and comment operations.\n\nPrerequisites\nA .env file with credentials must be configured.\nRequired: INSTAGRAM_ACCESS_TOKEN\nRecommended (for comment/reply via Facebook Graph): FACEBOOK_USER_ACCESS_TOKEN\nRequired for FB token refresh: FACEBOOK_APP_ID, FACEBOOK_APP_SECRET\ncloudflared must be installed for local image/video posting.\nIf the user specifies a .env file path, append --env <path> to every command.\nExample: node scripts/get-profile.js --env /home/user/.instagram-env\nAll scripts must be run with this project root as the working directory.\nAvailable Commands\n\nAll commands automatically refresh the token before execution. No manual refresh needed.\n\nRefresh Token\n# Instagram token refresh\nnode scripts/refresh-token.js\n\n# Facebook user token refresh (for comments/replies flow)\nnode scripts/refresh-facebook-token.js\n\n\nManually refreshes token(s) and returns expiration info.\n\nView Profile\nnode scripts/get-profile.js\n\n\nReturns profile info (name, username, account type, media count).\n\nList Posts\nnode scripts/get-posts.js [--limit 10]\n\n\nReturns the user's post list. Use --limit to set the count (default: 10).\n\nView Post Detail\nnode scripts/get-post.js <media-id>\n\n\nReturns post detail including like count and comment count.\n\nPublish Image\n# Single image (URL)\nnode scripts/post-image.js --caption \"Caption\" https://example.com/photo.jpg\n\n# Single image (local file)\nnode scripts/post-image.js --caption \"Caption\" ./photos/image.png\n\n# Carousel — multiple images (URL)\nnode scripts/post-image.js --caption \"Caption\" https://example.com/a.jpg https://example.com/b.jpg\n\n# Carousel — multiple images (local files)\nnode scripts/post-image.js --caption \"Caption\" ./img1.png ./img2.png ./img3.jpg\n\n1 image → single post, 2+ images → automatically posted as carousel (max 10).\nBoth URLs (http://, https://) and local file paths are supported, but mixing is not allowed.\nSupported local file formats: jpg, jpeg, png, gif, webp, heic/heif (HEIC is automatically converted to JPEG).\nPublish Video (Reels)\n# Single video (URL)\nnode scripts/post-video.js --caption \"Caption\" https://example.com/video.mp4\n\n# Single video (local file)\nnode scripts/post-video.js --caption \"Caption\" ./videos/clip.mp4\n\n# With cover image and options\nnode scripts/post-video.js --caption \"Caption\" --cover https://example.com/cover.jpg --thumb-offset 5000 --share-to-feed true https://example.com/video.mp4\n\n# Video carousel — multiple videos (URL)\nnode scripts/post-video.js --caption \"Caption\" https://example.com/a.mp4 https://example.com/b.mp4\n\n# Video carousel — multiple videos (local files)\nnode scripts/post-video.js --caption \"Caption\" ./clip1.mp4 ./clip2.mov\n\n1 video → Reels post, 2+ videos → automatically posted as carousel (max 10).\nBoth URLs and local file paths are supported, but mixing is not allowed.\nSupported formats: mp4, mov (max 100MB per file).\n--cover, --thumb-offset, --share-to-feed options are only available for single video posts (not carousels).\nVideo processing takes longer than images; the script waits up to 10 minutes.\nView Comments\nnode scripts/get-comments.js <media-id>\n\n\nReturns comments and replies for a specific post.\n\nPost Comment\nnode scripts/post-comment.js <media-id> --text \"Comment text\"\n\nReply to Comment\nnode scripts/reply-comment.js <comment-id> --text \"Reply text\"\n\nWorkflow Guidelines\nWhen publishing images or videos, always confirm the caption with the user before executing.\nAfter publishing, report the result ID and permalink to the user (both are included in the output).\nVideo processing takes longer than images. Inform the user that it may take a few minutes.\nWhen writing comments/replies, confirm the content with the user before executing.\nAll command outputs are in JSON format.\nError Handling\n\nIf the output contains an error field, an error has occurred. Explain the cause to the user and suggest a resolution.\n\n{ \"error\": \"error message\" }\n\nSecurity\nToken storage\nrefreshIgToken() and refreshFbToken() overwrite tokens in the .env file in plaintext. Do not commit .env to version control.\nCreate a dedicated Meta app with minimum required permissions (see below).\nLocal file upload\nLocal image/video posting starts a temporary cloudflared Quick Tunnel to expose files so Instagram servers can download them.\nThe tunnel is active only during the upload and is shut down immediately after.\nOnly provide file paths you are comfortable briefly exposing to the internet.\nMinimum required permissions\n\nWhen creating your Meta app, grant only these permissions:\n\ninstagram_business_basic — profile and media read\ninstagram_content_publish — image/video publishing\ninstagram_manage_comments — comment read/write\npages_read_engagement — required for comment API via Facebook Graph\npages_show_list — required for page-linked Instagram accounts"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/uyeong/instagram-content-studio",
    "publisherUrl": "https://clawhub.ai/uyeong/instagram-content-studio",
    "owner": "uyeong",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/instagram-content-studio",
    "downloadUrl": "https://openagent3.xyz/downloads/instagram-content-studio",
    "agentUrl": "https://openagent3.xyz/skills/instagram-content-studio/agent",
    "manifestUrl": "https://openagent3.xyz/skills/instagram-content-studio/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/instagram-content-studio/agent.md"
  }
}