{
  "schemaVersion": "1.0",
  "item": {
    "slug": "meta-business-suite",
    "name": "Meta Business Suite",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Nachx639/meta-business-suite",
    "canonicalUrl": "https://clawhub.ai/Nachx639/meta-business-suite",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/meta-business-suite",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=meta-business-suite",
    "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/meta-business-suite"
    },
    "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/meta-business-suite",
    "agentPageUrl": "https://openagent3.xyz/skills/meta-business-suite/agent",
    "manifestUrl": "https://openagent3.xyz/skills/meta-business-suite/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/meta-business-suite/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": "Configuration",
        "body": "CRITICAL: Never hardcode tokens or IDs in commands. Always use variables."
      },
      {
        "title": "Option A: Environment variables (recommended)",
        "body": "Set these environment variables before using the skill:\n\nexport META_PAGE_ACCESS_TOKEN=\"your-page-access-token\"\nexport META_PAGE_ID=\"your-page-id\"\n\nThen use them directly:\n\nPAGE_TOKEN=\"$META_PAGE_ACCESS_TOKEN\"\nPAGE_ID=\"$META_PAGE_ID\"\n\nThe same Page Access Token works for both Facebook and Instagram (the IG Business account is linked to the Page)."
      },
      {
        "title": "Option B: Token cache file (alternative)",
        "body": "If environment variables are not set, credentials can be read from ~/.meta_tokens_cache.json (chmod 600):\n\nPAGE_TOKEN=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\npage_id = list(d['pages'].keys())[0]\nprint(d['pages'][page_id]['access_token'])\n\")\n\nPAGE_ID=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\nprint(list(d['pages'].keys())[0])\n\")\n\nIG_ID=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\nprint(list(d['instagram'].keys())[0])\n\")"
      },
      {
        "title": "API Version",
        "body": "Always use v25.0 in all API calls."
      },
      {
        "title": "Text post",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Tu mensaje aquí\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Post with image (URL)",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/photos\" \\\n  -d \"url=https://example.com/image.jpg\" \\\n  -d \"message=Texto del post\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Post with image (local file)",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/photos\" \\\n  -F \"source=@/path/to/image.jpg\" \\\n  -F \"message=Texto del post\" \\\n  -F \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Post with video",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/videos\" \\\n  -F \"source=@/path/to/video.mp4\" \\\n  -F \"description=Descripción del vídeo\" \\\n  -F \"title=Título del vídeo\" \\\n  -F \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Post with link",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Mira este artículo\" \\\n  -d \"link=https://example.com/article\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Schedule a post",
        "body": "# Get Unix timestamp: python3 -c \"from datetime import datetime; print(int(datetime(2026,3,1,9,0).timestamp()))\"\n\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Post programado\" \\\n  -d \"published=false\" \\\n  -d \"scheduled_publish_time=UNIX_TIMESTAMP\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nNote: Must be between 10 minutes and 75 days from now."
      },
      {
        "title": "List scheduled posts",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/scheduled_posts?access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Page info",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$PAGE_ID?fields=name,fan_count,followers_count,about&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Recent posts",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/feed?fields=message,created_time,id,shares,likes.summary(true),comments.summary(true)&limit=10&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Page insights",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/insights?metric=page_views_total,page_fan_adds,page_engaged_users&period=day&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Delete a post",
        "body": "curl -X DELETE \"https://graph.facebook.com/v25.0/POST_ID?access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Comment on a post",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/POST_ID/comments\" \\\n  -d \"message=Tu comentario\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Instagram — Publish",
        "body": "Instagram uses a 2-step process: create media container → publish."
      },
      {
        "title": "Photo post",
        "body": "# Step 1: Create container\nCONTAINER_ID=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/image.jpg\" \\\n  -d \"caption=Tu caption con #hashtags\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CONTAINER_ID\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Reel (video)",
        "body": "# Step 1: Create container\nCONTAINER_ID=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"media_type=REELS\" \\\n  -d \"video_url=https://example.com/video.mp4\" \\\n  -d \"caption=Caption del reel #reels\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Wait for processing\ncurl -s \"https://graph.facebook.com/v25.0/$CONTAINER_ID?fields=status_code&access_token=$PAGE_TOKEN\"\n# Poll until status_code = \"FINISHED\"\n\n# Step 3: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CONTAINER_ID\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Carousel (multiple images)",
        "body": "# Step 1: Create each item\nIMG1=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/img1.jpg\" \\\n  -d \"is_carousel_item=true\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\nIMG2=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/img2.jpg\" \\\n  -d \"is_carousel_item=true\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Create carousel container\nCAROUSEL=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"media_type=CAROUSEL\" \\\n  -d \"children=$IMG1,$IMG2\" \\\n  -d \"caption=Mi carrusel #carousel\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 3: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CAROUSEL\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Account info",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$IG_ID?fields=username,followers_count,follows_count,media_count&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Recent media",
        "body": "curl -s \"https://graph.facebook.com/v25.0/$IG_ID/media?fields=id,caption,media_type,timestamp,like_count,comments_count,permalink&limit=10&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Post insights",
        "body": "curl -s \"https://graph.facebook.com/v25.0/MEDIA_ID/insights?metric=impressions,reach,engagement&access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Delete a post",
        "body": "curl -X DELETE \"https://graph.facebook.com/v25.0/MEDIA_ID?access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Reply to a comment",
        "body": "curl -X POST \"https://graph.facebook.com/v25.0/COMMENT_ID/replies\" \\\n  -d \"message=Tu respuesta\" \\\n  -d \"access_token=$PAGE_TOKEN\""
      },
      {
        "title": "Page Token",
        "body": "Stored in ~/.meta_tokens_cache.json under pages.<PAGE_ID>.access_token\nNever expires (expires_at: 0)\nData access expires ~60 days — renew before"
      },
      {
        "title": "Renew tokens",
        "body": "Go to Graph API Explorer\nSelect app → Add permissions → Generate Access Token\nExchange for long-lived token via Graph API Explorer or the App Dashboard\nGet new page token:\n\ncurl -s \"https://graph.facebook.com/v25.0/me/accounts?access_token=LONG_LIVED_TOKEN\"\n\nUpdate ~/.meta_tokens_cache.json with new tokens"
      },
      {
        "title": "Tips",
        "body": "Never hardcode tokens or IDs — always use environment variables or read from ~/.meta_tokens_cache.json\nInstagram requires images/videos as public URLs (not local files)\nFor local files on Instagram, upload to hosting first or use Facebook's photo upload\nReels may take time to process — poll status before publishing\nSchedule Facebook posts at least 10 minutes in advance\nInstagram does NOT support native scheduling via API\nFile permissions on cache: chmod 600 ~/.meta_tokens_cache.json"
      }
    ],
    "body": "Meta Business Suite — Facebook & Instagram API\nConfiguration\n\nCRITICAL: Never hardcode tokens or IDs in commands. Always use variables.\n\nOption A: Environment variables (recommended)\n\nSet these environment variables before using the skill:\n\nexport META_PAGE_ACCESS_TOKEN=\"your-page-access-token\"\nexport META_PAGE_ID=\"your-page-id\"\n\n\nThen use them directly:\n\nPAGE_TOKEN=\"$META_PAGE_ACCESS_TOKEN\"\nPAGE_ID=\"$META_PAGE_ID\"\n\n\nThe same Page Access Token works for both Facebook and Instagram (the IG Business account is linked to the Page).\n\nOption B: Token cache file (alternative)\n\nIf environment variables are not set, credentials can be read from ~/.meta_tokens_cache.json (chmod 600):\n\nPAGE_TOKEN=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\npage_id = list(d['pages'].keys())[0]\nprint(d['pages'][page_id]['access_token'])\n\")\n\nPAGE_ID=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\nprint(list(d['pages'].keys())[0])\n\")\n\nIG_ID=$(python3 -c \"\nimport json, os\nd = json.load(open(os.path.expanduser('~/.meta_tokens_cache.json')))\nprint(list(d['instagram'].keys())[0])\n\")\n\nAPI Version\n\nAlways use v25.0 in all API calls.\n\nFacebook Page — Publish\nText post\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Tu mensaje aquí\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nPost with image (URL)\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/photos\" \\\n  -d \"url=https://example.com/image.jpg\" \\\n  -d \"message=Texto del post\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nPost with image (local file)\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/photos\" \\\n  -F \"source=@/path/to/image.jpg\" \\\n  -F \"message=Texto del post\" \\\n  -F \"access_token=$PAGE_TOKEN\"\n\nPost with video\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/videos\" \\\n  -F \"source=@/path/to/video.mp4\" \\\n  -F \"description=Descripción del vídeo\" \\\n  -F \"title=Título del vídeo\" \\\n  -F \"access_token=$PAGE_TOKEN\"\n\nPost with link\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Mira este artículo\" \\\n  -d \"link=https://example.com/article\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nFacebook Page — Schedule\nSchedule a post\n# Get Unix timestamp: python3 -c \"from datetime import datetime; print(int(datetime(2026,3,1,9,0).timestamp()))\"\n\ncurl -X POST \"https://graph.facebook.com/v25.0/$PAGE_ID/feed\" \\\n  -d \"message=Post programado\" \\\n  -d \"published=false\" \\\n  -d \"scheduled_publish_time=UNIX_TIMESTAMP\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\n\nNote: Must be between 10 minutes and 75 days from now.\n\nList scheduled posts\ncurl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/scheduled_posts?access_token=$PAGE_TOKEN\"\n\nFacebook Page — Read & Manage\nPage info\ncurl -s \"https://graph.facebook.com/v25.0/$PAGE_ID?fields=name,fan_count,followers_count,about&access_token=$PAGE_TOKEN\"\n\nRecent posts\ncurl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/feed?fields=message,created_time,id,shares,likes.summary(true),comments.summary(true)&limit=10&access_token=$PAGE_TOKEN\"\n\nPage insights\ncurl -s \"https://graph.facebook.com/v25.0/$PAGE_ID/insights?metric=page_views_total,page_fan_adds,page_engaged_users&period=day&access_token=$PAGE_TOKEN\"\n\nDelete a post\ncurl -X DELETE \"https://graph.facebook.com/v25.0/POST_ID?access_token=$PAGE_TOKEN\"\n\nComment on a post\ncurl -X POST \"https://graph.facebook.com/v25.0/POST_ID/comments\" \\\n  -d \"message=Tu comentario\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nInstagram — Publish\n\nInstagram uses a 2-step process: create media container → publish.\n\nPhoto post\n# Step 1: Create container\nCONTAINER_ID=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/image.jpg\" \\\n  -d \"caption=Tu caption con #hashtags\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CONTAINER_ID\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nReel (video)\n# Step 1: Create container\nCONTAINER_ID=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"media_type=REELS\" \\\n  -d \"video_url=https://example.com/video.mp4\" \\\n  -d \"caption=Caption del reel #reels\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Wait for processing\ncurl -s \"https://graph.facebook.com/v25.0/$CONTAINER_ID?fields=status_code&access_token=$PAGE_TOKEN\"\n# Poll until status_code = \"FINISHED\"\n\n# Step 3: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CONTAINER_ID\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nCarousel (multiple images)\n# Step 1: Create each item\nIMG1=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/img1.jpg\" \\\n  -d \"is_carousel_item=true\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\nIMG2=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"image_url=https://example.com/img2.jpg\" \\\n  -d \"is_carousel_item=true\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 2: Create carousel container\nCAROUSEL=$(curl -s -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media\" \\\n  -d \"media_type=CAROUSEL\" \\\n  -d \"children=$IMG1,$IMG2\" \\\n  -d \"caption=Mi carrusel #carousel\" \\\n  -d \"access_token=$PAGE_TOKEN\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\n\n# Step 3: Publish\ncurl -X POST \"https://graph.facebook.com/v25.0/$IG_ID/media_publish\" \\\n  -d \"creation_id=$CAROUSEL\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nInstagram — Read & Manage\nAccount info\ncurl -s \"https://graph.facebook.com/v25.0/$IG_ID?fields=username,followers_count,follows_count,media_count&access_token=$PAGE_TOKEN\"\n\nRecent media\ncurl -s \"https://graph.facebook.com/v25.0/$IG_ID/media?fields=id,caption,media_type,timestamp,like_count,comments_count,permalink&limit=10&access_token=$PAGE_TOKEN\"\n\nPost insights\ncurl -s \"https://graph.facebook.com/v25.0/MEDIA_ID/insights?metric=impressions,reach,engagement&access_token=$PAGE_TOKEN\"\n\nDelete a post\ncurl -X DELETE \"https://graph.facebook.com/v25.0/MEDIA_ID?access_token=$PAGE_TOKEN\"\n\nReply to a comment\ncurl -X POST \"https://graph.facebook.com/v25.0/COMMENT_ID/replies\" \\\n  -d \"message=Tu respuesta\" \\\n  -d \"access_token=$PAGE_TOKEN\"\n\nToken Management\nPage Token\nStored in ~/.meta_tokens_cache.json under pages.<PAGE_ID>.access_token\nNever expires (expires_at: 0)\nData access expires ~60 days — renew before\nRenew tokens\nGo to Graph API Explorer\nSelect app → Add permissions → Generate Access Token\nExchange for long-lived token via Graph API Explorer or the App Dashboard\nGet new page token:\ncurl -s \"https://graph.facebook.com/v25.0/me/accounts?access_token=LONG_LIVED_TOKEN\"\n\nUpdate ~/.meta_tokens_cache.json with new tokens\nTips\nNever hardcode tokens or IDs — always use environment variables or read from ~/.meta_tokens_cache.json\nInstagram requires images/videos as public URLs (not local files)\nFor local files on Instagram, upload to hosting first or use Facebook's photo upload\nReels may take time to process — poll status before publishing\nSchedule Facebook posts at least 10 minutes in advance\nInstagram does NOT support native scheduling via API\nFile permissions on cache: chmod 600 ~/.meta_tokens_cache.json"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Nachx639/meta-business-suite",
    "publisherUrl": "https://clawhub.ai/Nachx639/meta-business-suite",
    "owner": "Nachx639",
    "version": "1.0.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/meta-business-suite",
    "downloadUrl": "https://openagent3.xyz/downloads/meta-business-suite",
    "agentUrl": "https://openagent3.xyz/skills/meta-business-suite/agent",
    "manifestUrl": "https://openagent3.xyz/skills/meta-business-suite/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/meta-business-suite/agent.md"
  }
}