{
  "schemaVersion": "1.0",
  "item": {
    "slug": "meta-business",
    "name": "Meta Business CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/adolago/meta-business",
    "canonicalUrl": "https://clawhub.ai/adolago/meta-business",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/meta-business",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=meta-business",
    "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"
    },
    "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",
    "agentPageUrl": "https://openagent3.xyz/skills/meta-business/agent",
    "manifestUrl": "https://openagent3.xyz/skills/meta-business/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/meta-business/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": "Meta Business CLI",
        "body": "Use meta for WhatsApp, Instagram, Facebook Pages, and Messenger automation via the Graph API."
      },
      {
        "title": "Setup",
        "body": "# 1. Configure app credentials\nmeta config set app.id YOUR_APP_ID\nmeta config set app.secret YOUR_APP_SECRET\n\n# 2. Authenticate (OAuth PKCE, opens browser)\nmeta auth login\n\n# 3. Configure WhatsApp (from API Setup page)\nmeta config set whatsapp.phoneNumberId YOUR_PHONE_NUMBER_ID\nmeta config set whatsapp.businessAccountId YOUR_WABA_ID\n\n# 4. Verify everything works\nmeta doctor\n\nOr use --token YOUR_TOKEN with any command to skip OAuth (e.g. System User tokens)."
      },
      {
        "title": "Authentication",
        "body": "meta auth login                              # OAuth PKCE flow (opens browser)\nmeta auth login --token YOUR_ACCESS_TOKEN    # Use existing token\nmeta auth login --scopes \"whatsapp_business_messaging,instagram_basic,pages_show_list\"\nmeta auth status                             # Show token validity and scopes\nmeta auth logout                             # Remove stored credentials"
      },
      {
        "title": "Configuration",
        "body": "meta config set app.id YOUR_APP_ID           # App ID (numeric)\nmeta config set app.secret YOUR_APP_SECRET   # App secret\nmeta config set whatsapp.phoneNumberId ID    # WhatsApp phone number ID\nmeta config set whatsapp.businessAccountId ID  # WhatsApp business account ID\nmeta config set instagram.accountId ID       # Instagram account ID\nmeta config set pages.pageId ID              # Facebook Page ID\nmeta config set webhook.forwardUrl URL       # Forward inbound messages to URL\nmeta config get <key>                        # Get a config value\nmeta config list                             # Show all config values\n\nConfig stored at ~/.meta-cli/config.json."
      },
      {
        "title": "Sending Messages",
        "body": "# Text\nmeta wa send \"+1234567890\" --text \"Hello\" --json\n\n# Markdown (converts to WhatsApp formatting)\nmeta wa send \"+1234567890\" --text \"**bold** and _italic_\" --markdown --json\n\n# Chunked (splits long text into multiple messages)\nmeta wa send \"+1234567890\" --text \"very long message...\" --chunk --json\n\n# Image\nmeta wa send \"+1234567890\" --image \"https://example.com/photo.jpg\" --caption \"Look\" --json\n\n# Video\nmeta wa send \"+1234567890\" --video \"https://example.com/video.mp4\" --caption \"Watch\" --json\n\n# Document\nmeta wa send \"+1234567890\" --document \"https://example.com/file.pdf\" --json\n\n# Local file (auto-uploads)\nmeta wa send \"+1234567890\" --document ./report.pdf --caption \"Q4 report\" --json\n\n# Audio\nmeta wa send \"+1234567890\" --audio \"https://example.com/note.ogg\" --json\n\n# Voice note (renders as playable voice note, requires OGG/Opus)\nmeta wa send \"+1234567890\" --audio \"./recording.ogg\" --voice --json\n\n# Template\nmeta wa send \"+1234567890\" --template \"hello_world\" --template-lang en_US --json\n\n# Mark as read\nmeta wa read WAMID --json"
      },
      {
        "title": "Media File Size Limits",
        "body": "TypeMax SizeImage5 MBVideo16 MBDocument100 MB"
      },
      {
        "title": "Templates",
        "body": "meta wa template list --json                 # List all templates\nmeta wa template get TEMPLATE_NAME --json    # Get template details\nmeta wa template delete TEMPLATE_NAME --json # Delete template"
      },
      {
        "title": "Media",
        "body": "meta wa media upload ./photo.jpg --json      # Upload media\nmeta wa media url MEDIA_ID --json            # Get media URL\nmeta wa media download MEDIA_ID ./output.jpg # Download media"
      },
      {
        "title": "Analytics",
        "body": "meta wa analytics --days 30 --granularity DAY --json"
      },
      {
        "title": "Phone Number Management",
        "body": "meta wa phone list --json                    # List numbers\nmeta wa phone get --json                     # Get active number details\nmeta wa phone select PHONE_NUMBER_ID         # Select active number"
      },
      {
        "title": "Allowlist (Prompt Injection Protection)",
        "body": "meta wa allowlist list                       # List allowed numbers\nmeta wa allowlist add \"+1234567890\"          # Add number\nmeta wa allowlist remove \"+1234567890\"       # Remove number\n\nWhen the allowlist is non-empty, meta wa send only delivers to listed numbers."
      },
      {
        "title": "Instagram",
        "body": "# Publish image\nmeta ig publish --image \"https://example.com/photo.jpg\" --caption \"My post\" --json\n\n# Publish video\nmeta ig publish --video \"https://example.com/video.mp4\" --caption \"Watch this\" --json\n\n# Publish Reel\nmeta ig publish --video \"https://example.com/reel.mp4\" --reel --caption \"New reel\" --json\n\n# Account insights\nmeta ig insights --period day --days 30 --json\n\n# Media insights\nmeta ig insights --media-id MEDIA_ID --json\n\n# Comments\nmeta ig comments list MEDIA_ID --json        # List comments\nmeta ig comments reply COMMENT_ID \"Thanks!\" --json  # Reply\nmeta ig comments hide COMMENT_ID --json      # Hide\nmeta ig comments delete COMMENT_ID --json    # Delete\n\nInstagram publish requires a public URL for images/videos (not local files)."
      },
      {
        "title": "Facebook Pages",
        "body": "meta fb post --message \"Hello from the CLI\" --json           # Create post\nmeta fb post --message \"Check this\" --link \"https://example.com\" --json  # Link post\nmeta fb list --limit 10 --json                               # List posts\nmeta fb insights --period day --days 30 --json               # View insights"
      },
      {
        "title": "Messenger",
        "body": "meta messenger send PSID --text \"Hello\" --json               # Send text\nmeta messenger send PSID --image \"https://example.com/photo.jpg\" --json  # Send image\nmeta messenger send PSID --text \"Update\" --type MESSAGE_TAG --tag HUMAN_AGENT --json  # Outside 24h window\nmeta messenger receive --json                                # List conversations\nmeta messenger receive --conversation-id CONV_ID --json      # View conversation\n\nMessenger messaging outside the 24h window requires a message tag."
      },
      {
        "title": "Webhooks",
        "body": "# Start listener\nmeta webhook listen --port 3000 --verify-token TOKEN --app-secret SECRET\n\n# Test verification locally\nmeta webhook verify --verify-token TOKEN --json\n\n# Subscribe to events\nmeta webhook subscribe \\\n  --object whatsapp_business_account \\\n  --fields messages \\\n  --callback-url \"https://example.com/webhook\" --json\n\nSet webhook.forwardUrl in config to POST inbound messages to an external service.\nThe webhook auto-sends read receipts and acknowledges reactions for inbound messages."
      },
      {
        "title": "Webhook Service (systemd)",
        "body": "meta service install                         # Install systemd user service\nmeta service start                           # Start the webhook service\nmeta service stop                            # Stop the service\nmeta service restart                         # Restart the service\nmeta service status                          # Show service status\nmeta service logs                            # Show service logs\nmeta service uninstall                       # Remove systemd service"
      },
      {
        "title": "Shell Completion",
        "body": "# Bash\nmeta completion >> ~/.bashrc\n\n# Zsh (add to .zshrc)\nmeta completion >> ~/.zshrc"
      },
      {
        "title": "Diagnostics",
        "body": "meta doctor --json\n\nChecks config, credentials, token validity, Graph API connectivity, permissions, and surface-specific asset access. Run before first use."
      },
      {
        "title": "Global Flags",
        "body": "FlagDescription--jsonStructured output for scripting and agent use--verbosePrint debug logs to stderr--token TOKENOverride stored credentials--api-version v22.0Pin a specific Graph API version"
      },
      {
        "title": "Notes",
        "body": "Always use --json for structured output when automating.\nAll commands work non-interactively when required args are passed as flags.\nVoice notes require OGG/Opus format to render correctly in WhatsApp.\nFiles exceeding size limits are rejected with an actionable error.\nFor larger files, host at a URL and pass the URL directly."
      }
    ],
    "body": "Meta Business CLI\n\nUse meta for WhatsApp, Instagram, Facebook Pages, and Messenger automation via the Graph API.\n\nSetup\n# 1. Configure app credentials\nmeta config set app.id YOUR_APP_ID\nmeta config set app.secret YOUR_APP_SECRET\n\n# 2. Authenticate (OAuth PKCE, opens browser)\nmeta auth login\n\n# 3. Configure WhatsApp (from API Setup page)\nmeta config set whatsapp.phoneNumberId YOUR_PHONE_NUMBER_ID\nmeta config set whatsapp.businessAccountId YOUR_WABA_ID\n\n# 4. Verify everything works\nmeta doctor\n\n\nOr use --token YOUR_TOKEN with any command to skip OAuth (e.g. System User tokens).\n\nAuthentication\nmeta auth login                              # OAuth PKCE flow (opens browser)\nmeta auth login --token YOUR_ACCESS_TOKEN    # Use existing token\nmeta auth login --scopes \"whatsapp_business_messaging,instagram_basic,pages_show_list\"\nmeta auth status                             # Show token validity and scopes\nmeta auth logout                             # Remove stored credentials\n\nConfiguration\nmeta config set app.id YOUR_APP_ID           # App ID (numeric)\nmeta config set app.secret YOUR_APP_SECRET   # App secret\nmeta config set whatsapp.phoneNumberId ID    # WhatsApp phone number ID\nmeta config set whatsapp.businessAccountId ID  # WhatsApp business account ID\nmeta config set instagram.accountId ID       # Instagram account ID\nmeta config set pages.pageId ID              # Facebook Page ID\nmeta config set webhook.forwardUrl URL       # Forward inbound messages to URL\nmeta config get <key>                        # Get a config value\nmeta config list                             # Show all config values\n\n\nConfig stored at ~/.meta-cli/config.json.\n\nWhatsApp\nSending Messages\n# Text\nmeta wa send \"+1234567890\" --text \"Hello\" --json\n\n# Markdown (converts to WhatsApp formatting)\nmeta wa send \"+1234567890\" --text \"**bold** and _italic_\" --markdown --json\n\n# Chunked (splits long text into multiple messages)\nmeta wa send \"+1234567890\" --text \"very long message...\" --chunk --json\n\n# Image\nmeta wa send \"+1234567890\" --image \"https://example.com/photo.jpg\" --caption \"Look\" --json\n\n# Video\nmeta wa send \"+1234567890\" --video \"https://example.com/video.mp4\" --caption \"Watch\" --json\n\n# Document\nmeta wa send \"+1234567890\" --document \"https://example.com/file.pdf\" --json\n\n# Local file (auto-uploads)\nmeta wa send \"+1234567890\" --document ./report.pdf --caption \"Q4 report\" --json\n\n# Audio\nmeta wa send \"+1234567890\" --audio \"https://example.com/note.ogg\" --json\n\n# Voice note (renders as playable voice note, requires OGG/Opus)\nmeta wa send \"+1234567890\" --audio \"./recording.ogg\" --voice --json\n\n# Template\nmeta wa send \"+1234567890\" --template \"hello_world\" --template-lang en_US --json\n\n# Mark as read\nmeta wa read WAMID --json\n\nMedia File Size Limits\nType\tMax Size\nImage\t5 MB\nVideo\t16 MB\nDocument\t100 MB\nTemplates\nmeta wa template list --json                 # List all templates\nmeta wa template get TEMPLATE_NAME --json    # Get template details\nmeta wa template delete TEMPLATE_NAME --json # Delete template\n\nMedia\nmeta wa media upload ./photo.jpg --json      # Upload media\nmeta wa media url MEDIA_ID --json            # Get media URL\nmeta wa media download MEDIA_ID ./output.jpg # Download media\n\nAnalytics\nmeta wa analytics --days 30 --granularity DAY --json\n\nPhone Number Management\nmeta wa phone list --json                    # List numbers\nmeta wa phone get --json                     # Get active number details\nmeta wa phone select PHONE_NUMBER_ID         # Select active number\n\nAllowlist (Prompt Injection Protection)\nmeta wa allowlist list                       # List allowed numbers\nmeta wa allowlist add \"+1234567890\"          # Add number\nmeta wa allowlist remove \"+1234567890\"       # Remove number\n\n\nWhen the allowlist is non-empty, meta wa send only delivers to listed numbers.\n\nInstagram\n# Publish image\nmeta ig publish --image \"https://example.com/photo.jpg\" --caption \"My post\" --json\n\n# Publish video\nmeta ig publish --video \"https://example.com/video.mp4\" --caption \"Watch this\" --json\n\n# Publish Reel\nmeta ig publish --video \"https://example.com/reel.mp4\" --reel --caption \"New reel\" --json\n\n# Account insights\nmeta ig insights --period day --days 30 --json\n\n# Media insights\nmeta ig insights --media-id MEDIA_ID --json\n\n# Comments\nmeta ig comments list MEDIA_ID --json        # List comments\nmeta ig comments reply COMMENT_ID \"Thanks!\" --json  # Reply\nmeta ig comments hide COMMENT_ID --json      # Hide\nmeta ig comments delete COMMENT_ID --json    # Delete\n\n\nInstagram publish requires a public URL for images/videos (not local files).\n\nFacebook Pages\nmeta fb post --message \"Hello from the CLI\" --json           # Create post\nmeta fb post --message \"Check this\" --link \"https://example.com\" --json  # Link post\nmeta fb list --limit 10 --json                               # List posts\nmeta fb insights --period day --days 30 --json               # View insights\n\nMessenger\nmeta messenger send PSID --text \"Hello\" --json               # Send text\nmeta messenger send PSID --image \"https://example.com/photo.jpg\" --json  # Send image\nmeta messenger send PSID --text \"Update\" --type MESSAGE_TAG --tag HUMAN_AGENT --json  # Outside 24h window\nmeta messenger receive --json                                # List conversations\nmeta messenger receive --conversation-id CONV_ID --json      # View conversation\n\n\nMessenger messaging outside the 24h window requires a message tag.\n\nWebhooks\n# Start listener\nmeta webhook listen --port 3000 --verify-token TOKEN --app-secret SECRET\n\n# Test verification locally\nmeta webhook verify --verify-token TOKEN --json\n\n# Subscribe to events\nmeta webhook subscribe \\\n  --object whatsapp_business_account \\\n  --fields messages \\\n  --callback-url \"https://example.com/webhook\" --json\n\n\nSet webhook.forwardUrl in config to POST inbound messages to an external service. The webhook auto-sends read receipts and acknowledges reactions for inbound messages.\n\nWebhook Service (systemd)\nmeta service install                         # Install systemd user service\nmeta service start                           # Start the webhook service\nmeta service stop                            # Stop the service\nmeta service restart                         # Restart the service\nmeta service status                          # Show service status\nmeta service logs                            # Show service logs\nmeta service uninstall                       # Remove systemd service\n\nShell Completion\n# Bash\nmeta completion >> ~/.bashrc\n\n# Zsh (add to .zshrc)\nmeta completion >> ~/.zshrc\n\nDiagnostics\nmeta doctor --json\n\n\nChecks config, credentials, token validity, Graph API connectivity, permissions, and surface-specific asset access. Run before first use.\n\nGlobal Flags\nFlag\tDescription\n--json\tStructured output for scripting and agent use\n--verbose\tPrint debug logs to stderr\n--token TOKEN\tOverride stored credentials\n--api-version v22.0\tPin a specific Graph API version\nNotes\nAlways use --json for structured output when automating.\nAll commands work non-interactively when required args are passed as flags.\nVoice notes require OGG/Opus format to render correctly in WhatsApp.\nFiles exceeding size limits are rejected with an actionable error.\nFor larger files, host at a URL and pass the URL directly."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adolago/meta-business",
    "publisherUrl": "https://clawhub.ai/adolago/meta-business",
    "owner": "adolago",
    "version": "1.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/meta-business",
    "downloadUrl": "https://openagent3.xyz/downloads/meta-business",
    "agentUrl": "https://openagent3.xyz/skills/meta-business/agent",
    "manifestUrl": "https://openagent3.xyz/skills/meta-business/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/meta-business/agent.md"
  }
}