{"id":"1059cd7d-7472-4260-9464-cd1ce4e9788e","entityType":"agent","slug":"clawhub-phuongsky-facebook-openclaw","name":"fboc","canonicalUrl":"https://www.xpersona.co/agent/clawhub-phuongsky-facebook-openclaw","canonicalPath":"/agent/clawhub-phuongsky-facebook-openclaw","generatedAt":"2026-10-10T08:45:22.562Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":null},"description":"CLI tool to manage Facebook Pages: list, create, read, hide, delete posts; list, create, delete comments; and get page info via the Graph API.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17dea2bjny34c0tbhmp4rf8s584xh2a:facebook-openclaw","sourceUrl":"https://clawhub.ai/phuongsky/facebook-openclaw","homepage":"https://clawhub.ai/phuongsky/skills/facebook-openclaw","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/phuongsky/facebook-openclaw","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/phuongsky/skills/facebook-openclaw","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"fboc technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":null},"stars":null,"forks":null,"downloads":1822,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T00:55:52.470Z","lastCrawledAt":"2026-10-10T00:55:52.470Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T00:55:52.470Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-05-06T09:30:38.737Z","changelog":"- Added allowlist.json and exec-approvals.json for managing permissions and command approvals. - Removed .clawhub/origin.json. - Updated cron job instructions to use US/Eastern timezone instead of Asia/Ho_Chi_Minh. - Added section on setup.ps1 for making the CLI executable on Windows. - Documented error handling and how to resolve missing dependency issues (e.g., \"Cannot find module 'commander'\"). - Expanded references to configuration and permission control files.","fileCount":32,"zipByteSize":44272},{"version":"1.0.1","createdAt":"2026-04-27T03:54:52.741Z","changelog":"- Added support for configuration via facebook-config.json, allowing storage of Facebook credentials in a config file. - Documented new config file option as the recommended setup method. - Added sample facebook-config.json file. - Included .clawhub/origin.json for project metadata. - Expanded SKILL.md with cron job integration examples.","fileCount":30,"zipByteSize":40561},{"version":"1.0.0","createdAt":"2026-04-27T01:40:44.765Z","changelog":"Initial release of Facebook Advanced Skill CLI. - Manage Facebook Pages and posts via the Graph API from the command line. - Features include listing, creating, reading, hiding, and deleting posts; managing comments; and retrieving page info. - Supports environment-based access token setup with detailed installation and security instructions. - Comprehensive usage examples and troubleshooting guidance provided.","fileCount":28,"zipByteSize":38214}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dea2bjny34c0tbhmp4rf8s584xh2a:facebook-openclaw","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dea2bjny34c0tbhmp4rf8s584xh2a:facebook-openclaw` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/phuongsky/facebook-openclaw before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:45:22.561Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-phuongsky-facebook-openclaw/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":null},"readme":"Skill: fboc\n\nOwner: phuongsky\n\nSummary: CLI tool to manage Facebook Pages: list, create, read, hide, delete posts; list, create, delete comments; and get page info via the Graph API.\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-05-06T09:30:38.737Z | user\n\n- Added allowlist.json and exec-approvals.json for managing permissions and command approvals.\n- Removed .clawhub/origin.json.\n- Updated cron job instructions to use US/Eastern timezone instead of Asia/Ho_Chi_Minh.\n- Added section on setup.ps1 for making the CLI executable on Windows.\n- Documented error handling and how to resolve missing dependency issues (e.g., \"Cannot find module 'commander'\").\n- Expanded references to configuration and permission control files.\n\nv1.0.1 | 2026-04-27T03:54:52.741Z | user\n\n- Added support for configuration via facebook-config.json, allowing storage of Facebook credentials in a config file.\n- Documented new config file option as the recommended setup method.\n- Added sample facebook-config.json file.\n- Included .clawhub/origin.json for project metadata.\n- Expanded SKILL.md with cron job integration examples.\n\nv1.0.0 | 2026-04-27T01:40:44.765Z | user\n\nInitial release of Facebook Advanced Skill CLI.\n\n- Manage Facebook Pages and posts via the Graph API from the command line.\n- Features include listing, creating, reading, hiding, and deleting posts; managing comments; and retrieving page info.\n- Supports environment-based access token setup with detailed installation and security instructions.\n- Comprehensive usage examples and troubleshooting guidance provided.\n\nArchive index:\n\nArchive v1.0.2: 32 files, 44272 bytes\n\nFiles: _meta.json (136b), allowlist.json (667b), commands/config-show.js (1813b), commands/delete-post.js (6425b), commands/fb-post-delete.js (2877b), commands/fb-post-drafts.js (3209b), commands/fb-post-image.js (3177b), commands/fb-post-schedule-delete.js (2928b), commands/fb-post-schedule-list.js (3443b), commands/fb-post-schedule.js (6449b), commands/fb-post-setup-help.js (6284b), commands/fb-post-setup.js (5694b), commands/fb-post-test.js (12009b), commands/fb-post.js (2630b), commands/help.js (2041b), commands/hide-post.js (5285b), commands/post-image.js (2736b), commands/post-schedule-delete.js (2644b), commands/post-schedule-list.js (2849b), commands/post-schedule.js (3235b), commands/post-test.js (3504b), commands/post.js (4946b), commands/setup.js (1805b), exec-approvals.json (374b), facebook-config.json (304b), index.js (2706b), manifest.json (4372b), package-lock.json (2325b), package.json (646b), readme.md (5807b), skill-card.md (2615b), skill.md (7656b)\n\nFile v1.0.2:skill.md\n\n# Facebook Advanced Skill\n\nA comprehensive CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Installation\n\nThis skill is installed as an npm package. After cloning or installing:\n\n```bash\n# Set your Facebook Page Access Token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n\n# Make the script executable (if needed)\n# On Windows, PowerShell scripts may need execution policy adjustment\nSet-ExecutionPolicy -Scope CurrentUser RemoteSigned\n```\n\n## Setup\n\n1. **Get a Page Access Token:**\n   - Go to [Facebook Developers](https://developers.facebook.com/)\n   - Create an app or use an existing one\n   - Use Graph API Explorer to generate a token with `pages_manage_posts`, `pages_read_engagement`, and `pages_show_list` permissions\n   - Or use your existing Page Access Token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n**Option B: Using environment variable**\n\n**Set the environment variable:**\n   ```powershell\n   $env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n   ```\n\n## Usage\n\n### Main CLI\n```powershell\nfacebook-advanced\n```\n\n### Available Commands\n\n#### List Posts\n```powershell\nfacebook-advanced fb-post-list <page_id> [--fields fields] [--limit N]\n```\n- `--fields`: Comma-separated list of fields (default: message,created_time,id,permalink_url,full_picture,likes.summary(true),comments.summary(true))\n- `--limit`: Number of posts to retrieve (default: 25)\n\n#### Create Post\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\n#### Read Post\n```powershell\nfacebook-advanced fb-post-read <post_id>\n```\n\n#### Hide Post\n```powershell\nfacebook-advanced fb-post-hide <post_id>\n```\nNote: Hiding is recommended over deletion as it's reversible.\n\n#### Delete Post\n```powershell\nfacebook-advanced fb-post-delete <post_id> [--force]\n```\nWarning: This permanently deletes the post. Use `--force` to skip confirmation.\n\n#### List Comments\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit N]\n```\n\n#### Create Comment\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n#### Delete Comment\n```powershell\nfacebook-advanced fb-comment-delete <comment_id> [--force]\n```\n\n#### Page Info\n```powershell\nfacebook-advanced fb-page-info <page_id>\n```\n\n## Examples\n\n```powershell\n# Set token\n$env:FB_PAGE_ACCESS_TOKEN = \"EAABwzLixnjYBO...\"\n\n# List recent posts\nfacebook-advanced fb-post-list 123456789 --limit 10\n\n# Create a new post\nfacebook-advanced fb-post-create 123456789 --message \"Hello from OpenClaw!\"\n\n# Create a post with a link\nfacebook-advanced fb-post-create 123456789 --message \"Check this out!\" --link \"https://example.com\"\n\n# Read a specific post\nfacebook-advanced fb-post-read 123456789_987654321\n\n# Hide a post\nfacebook-advanced fb-post-hide 123456789_987654321\n\n# List comments on a post\nfacebook-advanced fb-comment-list 123456789_987654321 --limit 50\n\n# Reply to a post\nfacebook-advanced fb-comment-create 123456789_987654321 --message \"Thanks for the feedback!\"\n\n# Get page information\nfacebook-advanced fb-page-info 123456789\n```\n\n## Cron Jobs (openclaw)\n```cron\n# Cron Jobs UI\n- New Job\n`Assistant task prompt *` \nExample:\n```\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n- Add job\n\n# Terminal\n```powershell\n```\nopenclaw cron add \\\n  --name \"Job Name\" \\\n  --cron \"cron expression\" \\\n  --tz \"America/New_York\" \\     # US timezone (Eastern Time)\n  --session isolated \\          # Recommended to use isolated to avoid polluting main context\n  --message \"facebook-advanced fb-post-list 123456789 --limit 10\" \\\n  --announce  \n\n# CLI \n```powershell\n```\nopenclaw cron add --name \"Reminder\" --at \"2m\" --session main --system-event \"Reminder: Review documents\" --wake now --delete-after-run\n\nopenclaw cron add --name \"Morning Briefing\" --cron \"0 9 * * *\" --tz \"America/New_York\" --session isolated --message \"facebook-advanced fb-post-list 123456789 --limit 10\" --deliver\n\n- `FB_PAGE_ACCESS_TOKEN`: Required. Your Facebook Page Access Token with appropriate permissions.\n\n## Environment Variables\n\n- `FB_PAGE_ACCESS_TOKEN`: Required. Your Facebook Page Access Token with appropriate permissions.\n\n## Permissions Required\n\n- `pages_manage_posts`: Create, edit, hide, delete posts\n- `pages_read_engagement`: Read posts and comments\n- `pages_show_list`: Access page information\n\n## Security Notes\n\n- Never commit your access token to version control\n- Use environment variables or a secure secrets manager\n- Tokens may expire; regenerate as needed\n- Use the principle of least privilege for token permissions\n\n## Troubleshooting\n\n### \"Invalid Access Token\"\n- Token may have expired\n- Check that the token has the required permissions\n- Regenerate the token from Graph API Explorer\n\n### \"Permission Denied\"\n- Ensure your token has the required permissions\n- Verify you're an admin/editor of the page\n\n### \"Page Not Found\"\n- Verify the page ID is correct\n- Ensure your token has access to that page\n\n### bin\n# Create setup.ps1 in fboc directory (folder C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin)\n# Setup script for facebook-advanced CLI on Windows\n# Make the bin file executable\n\n```powershell\n$binPath = Join-Path $PSScriptRoot \"facebook-advanced\"\n\n# Ensure the file exists\nif (Test-Path $binPath) {\n    # On Windows, we don't need to chmod, but we can verify the file is readable\n    Write-Host \"facebook-advanced CLI is ready.\"\n} else {\n    Write-Error \"facebook-advanced binary not found at $binPath\"\n    exit 1\n}\n```\n\n### Function error\n\nPS C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc> facebook-advanced --help\nnode:internal/modules/cjs/loader:1368\n  throw err;\n  ^\n\nError: Cannot find module 'commander'\nRequire stack:\n- C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin\\facebook-advanced\n    at Function._resolveFilename (node:internal/modules/cjs/loader:1365:15)\n    at defaultResolveImpl (node:internal/modules/cjs/loader:1021:19)\n    at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1026:22)\n    at Function._load (node:internal/modules/cjs/loader:1175:37)\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n    at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n    at Module.require (node:internal/modules/cjs/loader:1445:12)\n    at require (node:internal/modules/helpers:135:16)\n    at Object.<anonymous> (C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin\\facebook-advanced:3:21)\n    at Module._compile (node:internal/modules/cjs/loader:1688:14) {\n  code: 'MODULE_NOT_FOUND',\n  requireStack: [\n    'C:\\\\Users\\\\OS\\\\.openclaw\\\\workspace\\\\skills\\\\fboc\\\\bin\\\\facebook-advanced'\n  ]\n}\n\n=> throw them into openclaw chat, the errors will be fixed automatically\n\n## Related to the other files\n\n- `exec-approvals.json`: Approval list for executing commands\n- `allowlist.json`: Permission list for executing fb commands\n- `facebook-config.json`: Access page information\n- `setup.ps1`: Setup script for facebook-advanced CLI on Windows\n\n## API Reference\n\n- [Facebook Graph API Documentation](https://developers.facebook.com/docs/graph-api)\n- [Pages API](https://developers.facebook.com/docs/graph-api/reference/page)\n- [Posts API](https://developers.facebook.com/docs/graph-api/reference/page/posts)\n- [Comments API](https://developers.facebook.com/docs/graph-api/reference/post/comments)\n\nFile v1.0.2:readme.md\n\n# Facebook Advanced (fboc)\n\nA CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Quick Start\n\n### 1. Configure your access token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n\n**Option B: Using environment variable**\n\n```powershell\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\nFor permanent storage with environment variable, add to your PowerShell profile:\n\n```powershell\n# Edit your profile\nnotepad $PROFILE\n\n# Add this line:\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\n### 2. Get a Page Access Token\n\n1. Go to [Facebook Developers](https://developers.facebook.com/)\n2. Create an app or use existing\n3. Use Graph API Explorer to generate token with:\n   - `pages_manage_posts`\n   - `pages_read_engagement`\n   - `pages_show_list`\n\n### 3. Run the CLI\n\n```powershell\nfacebook-advanced --help\n```\n\n## Commands\n\n### List Posts\n\n```powershell\nfacebook-advanced fb-post-list <page_id> [--limit 25] [--fields fields]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n\n### Create Post\n\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-create 123456789 --message \"Hello Facebook!\" --link \"https://example.com\"\n```\n\n### List Comments\n\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit 25]\n```\n\n### Create Comment\n\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n## Options\n\n- `--message` - Post/comment text content\n- `--link` - URL to share with post\n- `--picture` - Image file path for post\n- `--limit` - Number of items (default: 25)\n- `--fields` - Comma-separated fields to retrieve\n- `--help` - Show help message\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `FB_PAGE_ACCESS_TOKEN` | Yes | Your Facebook Page Access Token |\n| `FB_APP_ID` | No | Your Facebook App ID |\n| `FB_APP_SECRET` | No | Your Facebook App Secret |\n\n## Cron Jobs (openclaw)\n```cron\n# Cron Jobs UI\n- New Job\n`Assistant task prompt *` \nExample:\n```\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n- Add job\n\n# Terminal\n\nopenclaw cron add \\\n  --name \"Job Name\" \\\n  --cron \"cron expression\" \\\n  --tz \"America/New_York\" \\     # US timezone (Eastern Time)\n  --session isolated \\          # Recommended to use isolated to avoid polluting main context\n  --message \"facebook-advanced fb-post-list 123456789 --limit 10\" \\\n  --announce                    # (optional) Send notification after completion\n\n# CLI \n```powershell\n```\nopenclaw cron add --name \"Reminder\" --at \"2m\" --session main --system-event \"Reminder: Review documents\" --wake now --delete-after-run\n\nopenclaw cron add --name \"Morning Briefing\" --cron \"0 9 * * *\" --tz \"America/New_York\" --session isolated --message \"facebook-advanced fb-post-list 123456789 --limit 10\" --deliver\n\n## Troubleshooting\n\n### \"facebook-advanced: command not found\"\n\nMake sure the package is properly installed and in your PATH:\n\n```powershell\n# Check installation\nnpm list facebook-advanced -g\n\n# Reinstall if needed\nnpm install -g facebook-advanced\n```\n\n### \"FB_PAGE_ACCESS_TOKEN not set\"\n\nSet the environment variable:\n\n```powershell\n$env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n```\n\n### bin\n# Create setup.ps1 in fboc directory (folder C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin)\n# Setup script for facebook-advanced CLI on Windows\n# Make the bin file executable\n\n```powershell\n$binPath = Join-Path $PSScriptRoot \"facebook-advanced\"\n\n# Ensure the file exists\nif (Test-Path $binPath) {\n    # On Windows, we don't need to chmod, but we can verify the file is readable\n    Write-Host \"facebook-advanced CLI is ready.\"\n} else {\n    Write-Error \"facebook-advanced binary not found at $binPath\"\n    exit 1\n}\n```\n\n### Token expired\n\nFacebook tokens expire. Generate a new one from Graph API Explorer or extend it using the Graph API.\n\n### Function error\n\nPS C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc> facebook-advanced --help\nnode:internal/modules/cjs/loader:1368\n  throw err;\n  ^\n\nError: Cannot find module 'commander'\nRequire stack:\n- C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin\\facebook-advanced\n    at Function._resolveFilename (node:internal/modules/cjs/loader:1365:15)\n    at defaultResolveImpl (node:internal/modules/cjs/loader:1021:19)\n    at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1026:22)\n    at Function._load (node:internal/modules/cjs/loader:1175:37)\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n    at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)\n    at Module.require (node:internal/modules/cjs/loader:1445:12)\n    at require (node:internal/modules/helpers:135:16)\n    at Object.<anonymous> (C:\\Users\\OS\\.openclaw\\workspace\\skills\\fboc\\bin\\facebook-advanced:3:21)\n    at Module._compile (node:internal/modules/cjs/loader:1688:14) {\n  code: 'MODULE_NOT_FOUND',\n  requireStack: [\n    'C:\\\\Users\\\\OS\\\\.openclaw\\\\workspace\\\\skills\\\\fboc\\\\bin\\\\facebook-advanced'\n  ]\n}\n\n=> throw them into openclaw chat, the errors will be fixed automatically\n\n## Related to the other files\n\n- `exec-approvals.json`: Approval list for executing commands\n- `allowlist.json`: Permission list for executing fb commands\n- `facebook-config.json`: Access page information\n- `setup.ps1`: Setup script for facebook-advanced CLI on Windows\n\n## License\n\nMIT\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn73bspw3jzar8cnmr3qjamg1984x9my\",\n  \"slug\": \"facebook-openclaw\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778059838737\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nfboc helps agents manage Facebook Pages through CLI commands for listing, creating, scheduling, hiding, and deleting posts and comments via the Facebook Graph API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[phuongsky](https://clawhub.ai/user/phuongsky)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to let an agent configure Facebook Page credentials, test access, and manage Page content from terminal workflows. It is suited to publishing, scheduling, reviewing, hiding, or deleting Facebook Page posts when the operator has approved credentials and content changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can publish, schedule, hide, or delete live Facebook Page content.\n\nMitigation: Use a test Page first, manually review commands before execution, and require explicit confirmation for destructive actions.\n\nRisk: The skill requires a Facebook Page token with permissions that can modify Page content.\n\nMitigation: Use least-privilege Page tokens, avoid pasting tokens into chats or shell history, store credentials securely, and rotate any token used with this version.\n\nRisk: Automated test or cron examples can affect a production Page if run with production credentials.\n\nMitigation: Run tests and scheduled jobs only against reviewed Page IDs and tokens, and avoid production cron jobs without manual approval.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/phuongsky/skills/facebook-openclaw)\n- [Facebook Graph API Documentation](https://developers.facebook.com/docs/graph-api)\n- [Facebook Pages API](https://developers.facebook.com/docs/graph-api/reference/page)\n- [Facebook Page Posts API](https://developers.facebook.com/docs/graph-api/reference/page/posts)\n- [Facebook Post Comments API](https://developers.facebook.com/docs/graph-api/reference/post/comments)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown and terminal-oriented command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce Facebook Graph API actions that modify live Page content when executed with valid Page credentials.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.2:allowlist.json\n\n{\n  \"allowlist\": [\n    \"openclaw fb-post-setup\",\n    \"openclaw fb-post-setup-help\",\n    \"openclaw fb-post-test\",\n    \"openclaw fb-post\",\n    \"openclaw fb-post-image\",\n    \"openclaw fb-post-schedule\",\n    \"openclaw fb-post-schedule-list\",\n    \"openclaw fb-post-schedule-delete\",\n    \"openclaw fb-post-drafts\",\n    \"openclaw fb-post-delete\",\n    \"facebook-advanced fb-post-list\",\n    \"facebook-advanced fb-post-schedule\",\n    \"facebook-advanced fb-post-schedule-list\",\n    \"facebook-advanced fb-post-schedule-delete\",\n    \"facebook-advanced fb-post-drafts\",\n    \"facebook-advanced fb-post-delete\"\n  ],\n  \"description\": \"Allowlist for facebook-posting skill commands\"\n}\n\nFile v1.0.2:exec-approvals.json\n\n{\n  \"version\": 1,\n  \"socket\": {\n    \"path\": \"C:\\\\Users\\\\OS/.openclaw/exec-approvals.sock\",\n    \"token\": \"\"\n  },\n  \"defaults\": {\n    \"security\": \"allowlist\",\n    \"autoAllowSkills\": true\n  },\n  \"agents\": {\n    \"main\": {\n      \"security\": \"allowlist\",\n      \"ask\": \"on-miss\",\n      \"askFallback\": \"deny\",\n      \"autoAllowSkills\": true,\n      \"allowlist\": [\n      ]\n    }\n  }\n}\n\nFile v1.0.2:facebook-config.json\n\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n\nFile v1.0.2:manifest.json\n\n{\n  \"name\": \"facebook-posting\",\n  \"version\": \"1.0.0\",\n  \"description\": \"OpenClaw skill for posting to Facebook Pages from the terminal\",\n  \"commands\": {\n    \"fb-post-setup\": {\n      \"description\": \"Configure Facebook Page posting\",\n      \"usage\": \"openclaw fb-post-setup <page_id> <access_token> [page_name]\",\n      \"args\": [\n        {\n          \"name\": \"page_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page ID\"\n        },\n        {\n          \"name\": \"access_token\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page Access Token\"\n        },\n        {\n          \"name\": \"page_name\",\n          \"type\": \"string\",\n          \"required\": false,\n          \"description\": \"Optional: Your Page name (will be fetched if not provided)\"\n        }\n      ]\n    },\n    \"fb-post-setup-help\": {\n      \"description\": \"Display the complete setup guide\",\n      \"usage\": \"openclaw fb-post-setup-help\"\n    },\n    \"fb-post-test\": {\n      \"description\": \"Test your Facebook Page connection and permissions\",\n      \"usage\": \"openclaw fb-post-test\"\n    },\n    \"fb-post\": {\n      \"description\": \"Post a message immediately\",\n      \"usage\": \"openclaw fb-post \\\"<message>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to post\"\n        }\n      ]\n    },\n    \"fb-post-image\": {\n      \"description\": \"Post an image with a caption\",\n      \"usage\": \"openclaw fb-post-image \\\"<caption>\\\" \\\"<image_url>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"caption\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The caption text for the image post\"\n        },\n        {\n          \"name\": \"image_url\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Publicly accessible URL of the image to post\"\n        }\n      ]\n    },\n    \"fb-post-schedule\": {\n      \"description\": \"Schedule a post for later publication\",\n      \"usage\": \"openclaw fb-post-schedule \\\"<message>\\\" \\\"<time>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to schedule\"\n        },\n        {\n          \"name\": \"time\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Schedule time (natural language or ISO format)\"\n        }\n      ]\n    },\n    \"fb-post-schedule-list\": {\n      \"description\": \"List all scheduled posts\",\n      \"usage\": \"openclaw fb-post-schedule-list [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of scheduled posts to show\"\n        }\n      ]\n    },\n    \"fb-post-schedule-delete\": {\n      \"description\": \"Cancel a scheduled post\",\n      \"usage\": \"openclaw fb-post-schedule-delete <post_id>\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the scheduled post to cancel\"\n        }\n      ]\n    },\n    \"fb-post-drafts\": {\n      \"description\": \"List draft posts on your Page\",\n      \"usage\": \"openclaw fb-post-drafts [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of drafts to show\"\n        }\n      ]\n    },\n    \"fb-post-delete\": {\n      \"description\": \"Delete a post permanently\",\n      \"usage\": \"openclaw fb-post-delete <post_id> [--confirm]\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the post to delete\"\n        }\n      ],\n      \"options\": [\n        {\n          \"name\": \"confirm\",\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Skip confirmation prompt\"\n        }\n      ]\n    }\n  },\n  \"required_inputs\": {\n    \"config_file\": \"facebook-posting.json\",\n    \"description\": \"Configuration file containing page_id, access_token, and page_name\"\n  },\n  \"security_notes\": [\n    \"Never share your access token\",\n    \"Page tokens last 60 days\",\n    \"Regenerate if compromised\",\n    \"Use Page tokens, not User tokens\"\n  ]\n}\n\nFile v1.0.2:package-lock.json\n\n{\n  \"name\": \"facebook-advanced\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"facebook-advanced\",\n      \"version\": \"1.0.0\",\n      \"hasInstallScript\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"commander\": \"^12.0.0\",\n        \"node-fetch\": \"^2.7.0\"\n      },\n      \"bin\": {\n        \"facebook-advanced\": \"bin/facebook-advanced\"\n      }\n    },\n    \"node_modules/commander\": {\n      \"version\": \"12.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-12.1.0.tgz\",\n      \"integrity\": \"sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/node-fetch\": {\n      \"version\": \"2.7.0\",\n      \"resolved\": \"https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz\",\n      \"integrity\": \"sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"whatwg-url\": \"^5.0.0\"\n      },\n      \"engines\": {\n        \"node\": \"4.x || >=6.0.0\"\n      },\n      \"peerDependencies\": {\n        \"encoding\": \"^0.1.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"encoding\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/tr46\": {\n      \"version\": \"0.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz\",\n      \"integrity\": \"sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/webidl-conversions\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz\",\n      \"integrity\": \"sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==\",\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/whatwg-url\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz\",\n      \"integrity\": \"sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tr46\": \"~0.0.3\",\n        \"webidl-conversions\": \"^3.0.0\"\n      }\n    }\n  }\n}\n\nFile v1.0.2:package.json\n\n{\n  \"name\": \"facebook-advanced\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Facebook Page management CLI for OpenClaw\",\n  \"main\": \"bin/facebook-advanced\",\n  \"dependencies\": {\n    \"commander\": \"^12.0.0\",\n    \"node-fetch\": \"^2.7.0\"\n  },\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"postinstall\": \"if (process.platform === 'win32') { powershell.exe -ExecutionPolicy Bypass -File ./bin/setup.ps1 }\"\n  },\n  \"bin\": {\n    \"facebook-advanced\": \"./bin/facebook-advanced\"\n  },\n  \"keywords\": [\n    \"facebook\",\n    \"graph-api\",\n    \"pages\",\n    \"posts\",\n    \"comments\",\n    \"openclaw\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\"\n}\n\nArchive v1.0.1: 30 files, 40561 bytes\n\nFiles: _meta.json (136b), .clawhub/origin.json (136b), commands/config-show.js (1813b), commands/delete-post.js (6425b), commands/fb-post-delete.js (2877b), commands/fb-post-drafts.js (3209b), commands/fb-post-image.js (3177b), commands/fb-post-schedule-delete.js (2928b), commands/fb-post-schedule-list.js (3443b), commands/fb-post-schedule.js (6449b), commands/fb-post-setup-help.js (6284b), commands/fb-post-setup.js (5694b), commands/fb-post-test.js (12009b), commands/fb-post.js (2630b), commands/help.js (2041b), commands/hide-post.js (5285b), commands/post-image.js (2736b), commands/post-schedule-delete.js (2644b), commands/post-schedule-list.js (2849b), commands/post-schedule.js (3235b), commands/post-test.js (3504b), commands/post.js (4946b), commands/setup.js (1805b), facebook-config.json (304b), index.js (2706b), manifest.json (4372b), package-lock.json (340b), package.json (566b), readme.md (3835b), skill.md (5749b)\n\nFile v1.0.1:skill.md\n\n# Facebook Advanced Skill\n\nA comprehensive CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Installation\n\nThis skill is installed as an npm package. After cloning or installing:\n\n```bash\n# Set your Facebook Page Access Token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n\n# Make the script executable (if needed)\n# On Windows, PowerShell scripts may need execution policy adjustment\nSet-ExecutionPolicy -Scope CurrentUser RemoteSigned\n```\n\n## Setup\n\n1. **Get a Page Access Token:**\n   - Go to [Facebook Developers](https://developers.facebook.com/)\n   - Create an app or use an existing one\n   - Use Graph API Explorer to generate a token with `pages_manage_posts`, `pages_read_engagement`, and `pages_show_list` permissions\n   - Or use your existing Page Access Token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n**Option B: Using environment variable**\n\n**Set the environment variable:**\n   ```powershell\n   $env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n   ```\n\n## Usage\n\n### Main CLI\n```powershell\nfacebook-advanced\n```\n\n### Available Commands\n\n#### List Posts\n```powershell\nfacebook-advanced fb-post-list <page_id> [--fields fields] [--limit N]\n```\n- `--fields`: Comma-separated list of fields (default: message,created_time,id,permalink_url,full_picture,likes.summary(true),comments.summary(true))\n- `--limit`: Number of posts to retrieve (default: 25)\n\n#### Create Post\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\n#### Read Post\n```powershell\nfacebook-advanced fb-post-read <post_id>\n```\n\n#### Hide Post\n```powershell\nfacebook-advanced fb-post-hide <post_id>\n```\nNote: Hiding is recommended over deletion as it's reversible.\n\n#### Delete Post\n```powershell\nfacebook-advanced fb-post-delete <post_id> [--force]\n```\nWarning: This permanently deletes the post. Use `--force` to skip confirmation.\n\n#### List Comments\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit N]\n```\n\n#### Create Comment\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n#### Delete Comment\n```powershell\nfacebook-advanced fb-comment-delete <comment_id> [--force]\n```\n\n#### Page Info\n```powershell\nfacebook-advanced fb-page-info <page_id>\n```\n\n## Examples\n\n```powershell\n# Set token\n$env:FB_PAGE_ACCESS_TOKEN = \"EAABwzLixnjYBO...\"\n\n# List recent posts\nfacebook-advanced fb-post-list 123456789 --limit 10\n\n# Create a new post\nfacebook-advanced fb-post-create 123456789 --message \"Hello from OpenClaw!\"\n\n# Create a post with a link\nfacebook-advanced fb-post-create 123456789 --message \"Check this out!\" --link \"https://example.com\"\n\n# Read a specific post\nfacebook-advanced fb-post-read 123456789_987654321\n\n# Hide a post\nfacebook-advanced fb-post-hide 123456789_987654321\n\n# List comments on a post\nfacebook-advanced fb-comment-list 123456789_987654321 --limit 50\n\n# Reply to a post\nfacebook-advanced fb-comment-create 123456789_987654321 --message \"Thanks for the feedback!\"\n\n# Get page information\nfacebook-advanced fb-page-info 123456789\n```\n\n## Cron Jobs (openclaw)\n```cron\n# Cron Jobs UI\n- New Job\n`Assistant task prompt *` \nExample:\n```\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n- Add job\n\n# Terminal\n```powershell\n```\nopenclaw cron add \\\n  --name \"Tên job\" \\\n  --cron \"biểu thức cron\" \\\n  --tz \"Asia/Ho_Chi_Minh\" \\     # Múi giờ Việt Nam\n  --session isolated \\          # Nên dùng isolated để tránh làm bẩn context chính\n  --message \"facebook-advanced fb-post-list 123456789 --limit 10\" \\\n  --announce                    # (tùy chọn) Gửi thông báo khi chạy xong\n\n# CLI \n```powershell\n```\nopenclaw cron add --name \"Reminder\" --at \"2m\" --session main --system-event \"Reminder: Xem lại tài liệu\" --wake now --delete-after-run\n\nopenclaw cron add --name \"Morning Briefing\" --cron \"0 9 * * *\" --tz \"Asia/Ho_Chi_Minh\" --session isolated --message \"facebook-advanced fb-post-list 123456789 --limit 10\" --deliver\n\n- `FB_PAGE_ACCESS_TOKEN`: Required. Your Facebook Page Access Token with appropriate permissions.\n\n## Environment Variables\n\n- `FB_PAGE_ACCESS_TOKEN`: Required. Your Facebook Page Access Token with appropriate permissions.\n\n## Permissions Required\n\n- `pages_manage_posts`: Create, edit, hide, delete posts\n- `pages_read_engagement`: Read posts and comments\n- `pages_show_list`: Access page information\n\n## Security Notes\n\n- Never commit your access token to version control\n- Use environment variables or a secure secrets manager\n- Tokens may expire; regenerate as needed\n- Use the principle of least privilege for token permissions\n\n## Troubleshooting\n\n### \"Invalid Access Token\"\n- Token may have expired\n- Check that the token has the required permissions\n- Regenerate the token from Graph API Explorer\n\n### \"Permission Denied\"\n- Ensure your token has the required permissions\n- Verify you're an admin/editor of the page\n\n### \"Page Not Found\"\n- Verify the page ID is correct\n- Ensure your token has access to that page\n\n## API Reference\n\n- [Facebook Graph API Documentation](https://developers.facebook.com/docs/graph-api)\n- [Pages API](https://developers.facebook.com/docs/graph-api/reference/page)\n- [Posts API](https://developers.facebook.com/docs/graph-api/reference/page/posts)\n- [Comments API](https://developers.facebook.com/docs/graph-api/reference/post/comments)\n\nFile v1.0.1:readme.md\n\n# Facebook Advanced (fboc)\n\nA CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Quick Start\n\n### 1. Configure your access token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n\n**Option B: Using environment variable**\n\n```powershell\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\nFor permanent storage with environment variable, add to your PowerShell profile:\n\n```powershell\n# Edit your profile\nnotepad $PROFILE\n\n# Add this line:\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\n### 2. Get a Page Access Token\n\n1. Go to [Facebook Developers](https://developers.facebook.com/)\n2. Create an app or use existing\n3. Use Graph API Explorer to generate token with:\n   - `pages_manage_posts`\n   - `pages_read_engagement`\n   - `pages_show_list`\n\n### 3. Run the CLI\n\n```powershell\nfacebook-advanced --help\n```\n\n## Commands\n\n### List Posts\n\n```powershell\nfacebook-advanced fb-post-list <page_id> [--limit 25] [--fields fields]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n\n### Create Post\n\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-create 123456789 --message \"Hello Facebook!\" --link \"https://example.com\"\n```\n\n### List Comments\n\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit 25]\n```\n\n### Create Comment\n\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n## Options\n\n- `--message` - Post/comment text content\n- `--link` - URL to share with post\n- `--picture` - Image file path for post\n- `--limit` - Number of items (default: 25)\n- `--fields` - Comma-separated fields to retrieve\n- `--help` - Show help message\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `FB_PAGE_ACCESS_TOKEN` | Yes | Your Facebook Page Access Token |\n| `FB_APP_ID` | No | Your Facebook App ID |\n| `FB_APP_SECRET` | No | Your Facebook App Secret |\n\n## Cron Jobs (openclaw)\n```cron\n# Cron Jobs UI\n- New Job\n`Assistant task prompt *` \nExample:\n```\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n- Add job\n\n# Terminal\n\nopenclaw cron add \\\n  --name \"Tên job\" \\\n  --cron \"biểu thức cron\" \\\n  --tz \"Asia/Ho_Chi_Minh\" \\     # Múi giờ Việt Nam\n  --session isolated \\          # Nên dùng isolated để tránh làm bẩn context chính\n  --message \"facebook-advanced fb-post-list 123456789 --limit 10\" \\\n  --announce                    # (tùy chọn) Gửi thông báo khi chạy xong\n\n# CLI \n```powershell\n```\nopenclaw cron add --name \"Reminder\" --at \"2m\" --session main --system-event \"Reminder: Xem lại tài liệu\" --wake now --delete-after-run\n\nopenclaw cron add --name \"Morning Briefing\" --cron \"0 9 * * *\" --tz \"Asia/Ho_Chi_Minh\" --session isolated --message \"facebook-advanced fb-post-list 123456789 --limit 10\" --deliver\n\n## Troubleshooting\n\n### \"facebook-advanced: command not found\"\n\nMake sure the package is properly installed and in your PATH:\n\n```powershell\n# Check installation\nnpm list facebook-advanced -g\n\n# Reinstall if needed\nnpm install -g facebook-advanced\n```\n\n### \"FB_PAGE_ACCESS_TOKEN not set\"\n\nSet the environment variable:\n\n```powershell\n$env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n```\n\n### Token expired\n\nFacebook tokens expire. Generate a new one from Graph API Explorer or extend it using the Graph API.\n\n## License\n\nMIT\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn73bspw3jzar8cnmr3qjamg1984x9my\",\n  \"slug\": \"facebook-openclaw\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777262092741\n}\n\nFile v1.0.1:.clawhub/origin.json\n\n{\n  \"version\": 1,\n  \"registry\": \"https://clawhub.ai\",\n  \"slug\": \"fboc\",\n  \"installedVersion\": \"1.0.0\",\n  \"installedAt\": 1777254317863\n}\n\nFile v1.0.1:facebook-config.json\n\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n\nFile v1.0.1:manifest.json\n\n{\n  \"name\": \"facebook-posting\",\n  \"version\": \"1.0.0\",\n  \"description\": \"OpenClaw skill for posting to Facebook Pages from the terminal\",\n  \"commands\": {\n    \"fb-post-setup\": {\n      \"description\": \"Configure Facebook Page posting\",\n      \"usage\": \"openclaw fb-post-setup <page_id> <access_token> [page_name]\",\n      \"args\": [\n        {\n          \"name\": \"page_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page ID\"\n        },\n        {\n          \"name\": \"access_token\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page Access Token\"\n        },\n        {\n          \"name\": \"page_name\",\n          \"type\": \"string\",\n          \"required\": false,\n          \"description\": \"Optional: Your Page name (will be fetched if not provided)\"\n        }\n      ]\n    },\n    \"fb-post-setup-help\": {\n      \"description\": \"Display the complete setup guide\",\n      \"usage\": \"openclaw fb-post-setup-help\"\n    },\n    \"fb-post-test\": {\n      \"description\": \"Test your Facebook Page connection and permissions\",\n      \"usage\": \"openclaw fb-post-test\"\n    },\n    \"fb-post\": {\n      \"description\": \"Post a message immediately\",\n      \"usage\": \"openclaw fb-post \\\"<message>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to post\"\n        }\n      ]\n    },\n    \"fb-post-image\": {\n      \"description\": \"Post an image with a caption\",\n      \"usage\": \"openclaw fb-post-image \\\"<caption>\\\" \\\"<image_url>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"caption\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The caption text for the image post\"\n        },\n        {\n          \"name\": \"image_url\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Publicly accessible URL of the image to post\"\n        }\n      ]\n    },\n    \"fb-post-schedule\": {\n      \"description\": \"Schedule a post for later publication\",\n      \"usage\": \"openclaw fb-post-schedule \\\"<message>\\\" \\\"<time>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to schedule\"\n        },\n        {\n          \"name\": \"time\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Schedule time (natural language or ISO format)\"\n        }\n      ]\n    },\n    \"fb-post-schedule-list\": {\n      \"description\": \"List all scheduled posts\",\n      \"usage\": \"openclaw fb-post-schedule-list [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of scheduled posts to show\"\n        }\n      ]\n    },\n    \"fb-post-schedule-delete\": {\n      \"description\": \"Cancel a scheduled post\",\n      \"usage\": \"openclaw fb-post-schedule-delete <post_id>\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the scheduled post to cancel\"\n        }\n      ]\n    },\n    \"fb-post-drafts\": {\n      \"description\": \"List draft posts on your Page\",\n      \"usage\": \"openclaw fb-post-drafts [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of drafts to show\"\n        }\n      ]\n    },\n    \"fb-post-delete\": {\n      \"description\": \"Delete a post permanently\",\n      \"usage\": \"openclaw fb-post-delete <post_id> [--confirm]\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the post to delete\"\n        }\n      ],\n      \"options\": [\n        {\n          \"name\": \"confirm\",\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Skip confirmation prompt\"\n        }\n      ]\n    }\n  },\n  \"required_inputs\": {\n    \"config_file\": \"facebook-posting.json\",\n    \"description\": \"Configuration file containing page_id, access_token, and page_name\"\n  },\n  \"security_notes\": [\n    \"Never share your access token\",\n    \"Page tokens last 60 days\",\n    \"Regenerate if compromised\",\n    \"Use Page tokens, not User tokens\"\n  ]\n}\n\nFile v1.0.1:package-lock.json\n\n{\n  \"name\": \"facebook-advanced\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"facebook-advanced\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"facebook-advanced\": \"index.js\"\n      },\n      \"engines\": {\n        \"node\": \">=14.0.0\"\n      }\n    }\n  }\n}\n\nFile v1.0.1:package.json\n\n{\n  \"name\": \"facebook-advanced\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Facebook Page management CLI for OpenClaw\",\n  \"main\": \"bin/facebook-advanced\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"postinstall\": \"if (process.platform === 'win32') { powershell.exe -ExecutionPolicy Bypass -File ./bin/setup.ps1 }\"\n  },\n  \"bin\": {\n    \"facebook-advanced\": \"./bin/facebook-advanced\"\n  },\n  \"keywords\": [\n    \"facebook\",\n    \"graph-api\",\n    \"pages\",\n    \"posts\",\n    \"comments\",\n    \"openclaw\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\"\n}\n\nArchive v1.0.0: 28 files, 38214 bytes\n\nFiles: _meta.json (136b), commands/config-show.js (1813b), commands/delete-post.js (6425b), commands/fb-post-delete.js (2877b), commands/fb-post-drafts.js (3209b), commands/fb-post-image.js (3177b), commands/fb-post-schedule-delete.js (2928b), commands/fb-post-schedule-list.js (3443b), commands/fb-post-schedule.js (6449b), commands/fb-post-setup-help.js (6284b), commands/fb-post-setup.js (5694b), commands/fb-post-test.js (12009b), commands/fb-post.js (2630b), commands/help.js (2041b), commands/hide-post.js (5285b), commands/post-image.js (2736b), commands/post-schedule-delete.js (2644b), commands/post-schedule-list.js (2849b), commands/post-schedule.js (3235b), commands/post-test.js (3504b), commands/post.js (4946b), commands/setup.js (1805b), index.js (2706b), manifest.json (4372b), package-lock.json (364b), package.json (566b), readme.md (911b), skill.md (4278b)\n\nFile v1.0.0:skill.md\n\n# Facebook Advanced Skill\n\nA comprehensive CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Installation\n\nThis skill is installed as an npm package. After cloning or installing:\n\n```bash\n# Set your Facebook Page Access Token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n\n# Make the script executable (if needed)\n# On Windows, PowerShell scripts may need execution policy adjustment\nSet-ExecutionPolicy -Scope CurrentUser RemoteSigned\n```\n\n## Setup\n\n1. **Get a Page Access Token:**\n   - Go to [Facebook Developers](https://developers.facebook.com/)\n   - Create an app or use an existing one\n   - Use Graph API Explorer to generate a token with `pages_manage_posts`, `pages_read_engagement`, and `pages_show_list` permissions\n   - Or use your existing Page Access Token\n\n2. **Set the environment variable:**\n   ```powershell\n   $env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n   ```\n\n## Usage\n\n### Main CLI\n```powershell\nfacebook-advanced\n```\n\n### Available Commands\n\n#### List Posts\n```powershell\nfacebook-advanced fb-post-list <page_id> [--fields fields] [--limit N]\n```\n- `--fields`: Comma-separated list of fields (default: message,created_time,id,permalink_url,full_picture,likes.summary(true),comments.summary(true))\n- `--limit`: Number of posts to retrieve (default: 25)\n\n#### Create Post\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\n#### Read Post\n```powershell\nfacebook-advanced fb-post-read <post_id>\n```\n\n#### Hide Post\n```powershell\nfacebook-advanced fb-post-hide <post_id>\n```\nNote: Hiding is recommended over deletion as it's reversible.\n\n#### Delete Post\n```powershell\nfacebook-advanced fb-post-delete <post_id> [--force]\n```\nWarning: This permanently deletes the post. Use `--force` to skip confirmation.\n\n#### List Comments\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit N]\n```\n\n#### Create Comment\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n#### Delete Comment\n```powershell\nfacebook-advanced fb-comment-delete <comment_id> [--force]\n```\n\n#### Page Info\n```powershell\nfacebook-advanced fb-page-info <page_id>\n```\n\n## Examples\n\n```powershell\n# Set token\n$env:FB_PAGE_ACCESS_TOKEN = \"EAABwzLixnjYBO...\"\n\n# List recent posts\nfacebook-advanced fb-post-list 123456789 --limit 10\n\n# Create a new post\nfacebook-advanced fb-post-create 123456789 --message \"Hello from OpenClaw!\"\n\n# Create a post with a link\nfacebook-advanced fb-post-create 123456789 --message \"Check this out!\" --link \"https://example.com\"\n\n# Read a specific post\nfacebook-advanced fb-post-read 123456789_987654321\n\n# Hide a post\nfacebook-advanced fb-post-hide 123456789_987654321\n\n# List comments on a post\nfacebook-advanced fb-comment-list 123456789_987654321 --limit 50\n\n# Reply to a post\nfacebook-advanced fb-comment-create 123456789_987654321 --message \"Thanks for the feedback!\"\n\n# Get page information\nfacebook-advanced fb-page-info 123456789\n```\n\n## Environment Variables\n\n- `FB_PAGE_ACCESS_TOKEN`: Required. Your Facebook Page Access Token with appropriate permissions.\n\n## Permissions Required\n\n- `pages_manage_posts`: Create, edit, hide, delete posts\n- `pages_read_engagement`: Read posts and comments\n- `pages_show_list`: Access page information\n\n## Security Notes\n\n- Never commit your access token to version control\n- Use environment variables or a secure secrets manager\n- Tokens may expire; regenerate as needed\n- Use the principle of least privilege for token permissions\n\n## Troubleshooting\n\n### \"Invalid Access Token\"\n- Token may have expired\n- Check that the token has the required permissions\n- Regenerate the token from Graph API Explorer\n\n### \"Permission Denied\"\n- Ensure your token has the required permissions\n- Verify you're an admin/editor of the page\n\n### \"Page Not Found\"\n- Verify the page ID is correct\n- Ensure your token has access to that page\n\n## API Reference\n\n- [Facebook Graph API Documentation](https://developers.facebook.com/docs/graph-api)\n- [Pages API](https://developers.facebook.com/docs/graph-api/reference/page)\n- [Posts API](https://developers.facebook.com/docs/graph-api/reference/page/posts)\n- [Comments API](https://developers.facebook.com/docs/graph-api/reference/post/comments)\n\nFile v1.0.0:readme.md\n\n# Facebook Advanced Skill\n\nA comprehensive CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Quick Start\n\n```powershell\n# Set your token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_token\"\n\n# List posts\nfacebook-advanced fb-post-list <page_id>\n\n# Create a post\nfacebook-advanced fb-post-create <page_id> --message \"Hello!\"\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `fb-post-list` | List posts from a page |\n| `fb-post-create` | Create a new post |\n| `fb-post-read` | Read a specific post |\n| `fb-post-hide` | Hide a post (reversible) |\n| `fb-post-delete` | Delete a post (permanent) |\n| `fb-comment-list` | List comments on a post |\n| `fb-comment-create` | Create a comment |\n| `fb-comment-delete` | Delete a comment |\n| `fb-page-info` | Get page information |\n\n## Full Documentation\n\nSee [SKILL.md](SKILL.md) for complete documentation, examples, and setup instructions.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73bspw3jzar8cnmr3qjamg1984x9my\",\n  \"slug\": \"facebook-openclaw\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1777254044765\n}\n\nFile v1.0.0:manifest.json\n\n{\n  \"name\": \"facebook-posting\",\n  \"version\": \"1.0.0\",\n  \"description\": \"OpenClaw skill for posting to Facebook Pages from the terminal\",\n  \"commands\": {\n    \"fb-post-setup\": {\n      \"description\": \"Configure Facebook Page posting\",\n      \"usage\": \"openclaw fb-post-setup <page_id> <access_token> [page_name]\",\n      \"args\": [\n        {\n          \"name\": \"page_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page ID\"\n        },\n        {\n          \"name\": \"access_token\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Your Facebook Page Access Token\"\n        },\n        {\n          \"name\": \"page_name\",\n          \"type\": \"string\",\n          \"required\": false,\n          \"description\": \"Optional: Your Page name (will be fetched if not provided)\"\n        }\n      ]\n    },\n    \"fb-post-setup-help\": {\n      \"description\": \"Display the complete setup guide\",\n      \"usage\": \"openclaw fb-post-setup-help\"\n    },\n    \"fb-post-test\": {\n      \"description\": \"Test your Facebook Page connection and permissions\",\n      \"usage\": \"openclaw fb-post-test\"\n    },\n    \"fb-post\": {\n      \"description\": \"Post a message immediately\",\n      \"usage\": \"openclaw fb-post \\\"<message>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to post\"\n        }\n      ]\n    },\n    \"fb-post-image\": {\n      \"description\": \"Post an image with a caption\",\n      \"usage\": \"openclaw fb-post-image \\\"<caption>\\\" \\\"<image_url>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"caption\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The caption text for the image post\"\n        },\n        {\n          \"name\": \"image_url\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Publicly accessible URL of the image to post\"\n        }\n      ]\n    },\n    \"fb-post-schedule\": {\n      \"description\": \"Schedule a post for later publication\",\n      \"usage\": \"openclaw fb-post-schedule \\\"<message>\\\" \\\"<time>\\\"\",\n      \"args\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The message content to schedule\"\n        },\n        {\n          \"name\": \"time\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"Schedule time (natural language or ISO format)\"\n        }\n      ]\n    },\n    \"fb-post-schedule-list\": {\n      \"description\": \"List all scheduled posts\",\n      \"usage\": \"openclaw fb-post-schedule-list [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of scheduled posts to show\"\n        }\n      ]\n    },\n    \"fb-post-schedule-delete\": {\n      \"description\": \"Cancel a scheduled post\",\n      \"usage\": \"openclaw fb-post-schedule-delete <post_id>\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the scheduled post to cancel\"\n        }\n      ]\n    },\n    \"fb-post-drafts\": {\n      \"description\": \"List draft posts on your Page\",\n      \"usage\": \"openclaw fb-post-drafts [--limit <n>]\",\n      \"options\": [\n        {\n          \"name\": \"limit\",\n          \"type\": \"integer\",\n          \"default\": 50,\n          \"description\": \"Maximum number of drafts to show\"\n        }\n      ]\n    },\n    \"fb-post-delete\": {\n      \"description\": \"Delete a post permanently\",\n      \"usage\": \"openclaw fb-post-delete <post_id> [--confirm]\",\n      \"args\": [\n        {\n          \"name\": \"post_id\",\n          \"type\": \"string\",\n          \"required\": true,\n          \"description\": \"The ID of the post to delete\"\n        }\n      ],\n      \"options\": [\n        {\n          \"name\": \"confirm\",\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Skip confirmation prompt\"\n        }\n      ]\n    }\n  },\n  \"required_inputs\": {\n    \"config_file\": \"facebook-posting.json\",\n    \"description\": \"Configuration file containing page_id, access_token, and page_name\"\n  },\n  \"security_notes\": [\n    \"Never share your access token\",\n    \"Page tokens last 60 days\",\n    \"Regenerate if compromised\",\n    \"Use Page tokens, not User tokens\"\n  ]\n}\n\nFile v1.0.0:package-lock.json\n\n{\n  \"name\": \"openclaw-facebook-posting\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"openclaw-facebook-posting\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"openclaw-facebook-posting\": \"index.js\"\n      },\n      \"engines\": {\n        \"node\": \">=14.0.0\"\n      }\n    }\n  }\n}\n\nFile v1.0.0:package.json\n\n{\n  \"name\": \"facebook-advanced\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Facebook Page management CLI for OpenClaw\",\n  \"main\": \"bin/facebook-advanced\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"postinstall\": \"if (process.platform === 'win32') { powershell.exe -ExecutionPolicy Bypass -File ./bin/setup.ps1 }\"\n  },\n  \"bin\": {\n    \"facebook-advanced\": \"./bin/facebook-advanced\"\n  },\n  \"keywords\": [\n    \"facebook\",\n    \"graph-api\",\n    \"pages\",\n    \"posts\",\n    \"comments\",\n    \"openclaw\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\"\n}","readmeExcerpt":"Skill: fboc Owner: phuongsky Summary: CLI tool to manage Facebook Pages: list, create, read, hide, delete posts; list, create, delete comments; and get page info via the Graph API. Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-06T09:30:38.737Z | user - Added allowlist.json and exec-approvals.json for managing permissions and command approvals. - Removed .clawhub/origin.json. - Updated cron job instructions to ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Set your Facebook Page Access Token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n\n# Make the script executable (if needed)\n# On Windows, PowerShell scripts may need execution policy adjustment\nSet-ExecutionPolicy -Scope CurrentUser RemoteSigned"},{"language":"json","snippet":"{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}"},{"language":"powershell","snippet":"$env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\""},{"language":"powershell","snippet":"facebook-advanced"},{"language":"powershell","snippet":"facebook-advanced fb-post-list <page_id> [--fields fields] [--limit N]"},{"language":"powershell","snippet":"facebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"skill.md","content":"# Facebook Advanced Skill\n\nA comprehensive CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Installation\n\nThis skill is installed as an npm package. After cloning or installing:\n\n```bash\n# Set your Facebook Page Access Token\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n\n# Make the script executable (if needed)\n# On Windows, PowerShell scripts may need execution policy adjustment\nSet-ExecutionPolicy -Scope CurrentUser RemoteSigned\n```\n\n## Setup\n\n1. **Get a Page Access Token:**\n   - Go to [Facebook Developers](https://developers.facebook.com/)\n   - Create an app or use an existing one\n   - Use Graph API Explorer to generate a token with `pages_manage_posts`, `pages_read_engagement`, and `pages_show_list` permissions\n   - Or use your existing Page Access Token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n**Option B: Using environment variable**\n\n**Set the environment variable:**\n   ```powershell\n   $env:FB_PAGE_ACCESS_TOKEN = \"your_token_here\"\n   ```\n\n## Usage\n\n### Main CLI\n```powershell\nfacebook-advanced\n```\n\n### Available Commands\n\n#### List Posts\n```powershell\nfacebook-advanced fb-post-list <page_id> [--fields fields] [--limit N]\n```\n- `--fields`: Comma-separated list of fields (default: message,created_time,id,permalink_url,full_picture,likes.summary(true),comments.summary(true))\n- `--limit`: Number of posts to retrieve (default: 25)\n\n#### Create Post\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\n#### Read Post\n```powershell\nfacebook-advanced fb-post-read <post_id>\n```\n\n#### Hide Post\n```powershell\nfacebook-advanced fb-post-hide <post_id>\n```\nNote: Hiding is recommended over deletion as it's reversible.\n\n#### Delete Post\n```powershell\nfacebook-advanced fb-post-delete <post_id> [--force]\n```\nWarning: This permanently deletes the post. Use `--force` to skip confirmation.\n\n#### List Comments\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit N]\n```\n\n#### Create Comment\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n#### Delete Comment\n```powershell\nfacebook-advanced fb-comment-delete <comment_id> [--force]\n```\n\n#### Page Info\n```powershell\nfacebook-advanced fb-page-info <page_id>\n```\n\n## Examples\n\n```powershell\n# Set token\n$env:FB_PAGE_ACCESS_TOKEN = \"EAABwzLixnjYBO...\"\n\n# List recent posts\nfacebook-advanced fb-post-list 123456789 --limit 10\n\n# Create a new post\nfacebook-advanced fb-post-create 123456789 --message \"Hello from OpenClaw!\"\n\n# Create a post with a link\nfacebook-advanced fb-post-create 123456789 --message \""},{"path":"readme.md","content":"# Facebook Advanced (fboc)\n\nA CLI tool for managing Facebook Pages and posts via the Graph API.\n\n## Quick Start\n\n### 1. Configure your access token\n\n**Option A: Using facebook-config.json (Recommended)**\n\nEdit `facebook-config.json` in this directory:\n```json\n{\n  \"FB_PAGE_ACCESS_TOKEN\": \"FB_PAGE_ACCESS_TOKEN\",\n  \"FB_APP_ID\": \"(OPTIONAL) YOUR_APP_ID_HERE\",\n  \"FB_APP_SECRET\": \"(OPTIONAL) YOUR_APP_SECRET_HERE\",\n  \"description\": \"Replace the placeholder values with your actual Facebook credentials. Never commit this file with real secrets to version control.\"\n}\n```\n\n**Option B: Using environment variable**\n\n```powershell\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\nFor permanent storage with environment variable, add to your PowerShell profile:\n\n```powershell\n# Edit your profile\nnotepad $PROFILE\n\n# Add this line:\n$env:FB_PAGE_ACCESS_TOKEN = \"your_page_access_token_here\"\n```\n\n### 2. Get a Page Access Token\n\n1. Go to [Facebook Developers](https://developers.facebook.com/)\n2. Create an app or use existing\n3. Use Graph API Explorer to generate token with:\n   - `pages_manage_posts`\n   - `pages_read_engagement`\n   - `pages_show_list`\n\n### 3. Run the CLI\n\n```powershell\nfacebook-advanced --help\n```\n\n## Commands\n\n### List Posts\n\n```powershell\nfacebook-advanced fb-post-list <page_id> [--limit 25] [--fields fields]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n\n### Create Post\n\n```powershell\nfacebook-advanced fb-post-create <page_id> --message \"Your message\" [--link \"https://example.com\"]\n```\n\nExample:\n```powershell\nfacebook-advanced fb-post-create 123456789 --message \"Hello Facebook!\" --link \"https://example.com\"\n```\n\n### List Comments\n\n```powershell\nfacebook-advanced fb-comment-list <post_id> [--limit 25]\n```\n\n### Create Comment\n\n```powershell\nfacebook-advanced fb-comment-create <post_id> --message \"Your comment\"\n```\n\n## Options\n\n- `--message` - Post/comment text content\n- `--link` - URL to share with post\n- `--picture` - Image file path for post\n- `--limit` - Number of items (default: 25)\n- `--fields` - Comma-separated fields to retrieve\n- `--help` - Show help message\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `FB_PAGE_ACCESS_TOKEN` | Yes | Your Facebook Page Access Token |\n| `FB_APP_ID` | No | Your Facebook App ID |\n| `FB_APP_SECRET` | No | Your Facebook App Secret |\n\n## Cron Jobs (openclaw)\n```cron\n# Cron Jobs UI\n- New Job\n`Assistant task prompt *` \nExample:\n```\nfacebook-advanced fb-post-list 123456789 --limit 10\n```\n- Add job\n\n# Terminal\n\nopenclaw cron add \\\n  --name \"Job Name\" \\\n  --cron \"cron expression\" \\\n  --tz \"America/New_York\" \\     # US timezone (Eastern Time)\n  --session isolated \\          # Recommended to use isolated to avoid polluting main context\n  --message \"facebook-advanced fb-post-list 123456789 --limit 10\" \\\n  --announce                    # (optional) Send notification after completion\n\n# CLI \n```powershell\n```\nopenclaw"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73bspw3jzar8cnmr3qjamg1984x9my\",\n  \"slug\": \"facebook-openclaw\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778059838737\n}"},{"path":"skill-card.md","content":"## Description:\n\nfboc helps agents manage Facebook Pages through CLI commands for listing, creating, scheduling, hiding, and deleting posts and comments via the Facebook Graph API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[phuongsky](https://clawhub.ai/user/phuongsky)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to let an agent configure Facebook Page credentials, test access, and manage Page content from terminal workflows. It is suited to publishing, scheduling, reviewing, hiding, or deleting Facebook Page posts when the operator has approved credentials and content changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can publish, schedule, hide, or delete live Facebook Page content.\n\nMitigation: Use a test Page first, manually review commands before execution, and require explicit confirmation for destructive actions.\n\nRisk: The skill requires a Facebook Page token with permissions that can modify Page content.\n\nMitigation: Use least-privilege Page tokens, avoid pasting tokens into chats or shell history, store credentials securely, and rotate any token used with this version.\n\nRisk: Automated test or cron examples can affect a production Page if run with production credentials.\n\nMitigation: Run tests and scheduled jobs only against reviewed Page IDs and tokens, and avoid production cron jobs without manual approval.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/phuongsky/skills/facebook-openclaw)\n- [Facebook Graph API Documentation](https://developers.facebook.com/docs/graph-api)\n- [Facebook Pages API](https://developers.facebook.com/docs/graph-api/reference/page)\n- [Facebook Page Posts API](https://developers.facebook.com/docs/graph-api/reference/page/posts)\n- [Facebook Post Comments API](https://developers.facebook.com/docs/graph-api/reference/post/comments)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown and terminal-oriented command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce Facebook Graph API actions that modify live Page content when executed with valid Page credentials.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"allowlist.json","content":"{\n  \"allowlist\": [\n    \"openclaw fb-post-setup\",\n    \"openclaw fb-post-setup-help\",\n    \"openclaw fb-post-test\",\n    \"openclaw fb-post\",\n    \"openclaw fb-post-image\",\n    \"openclaw fb-post-schedule\",\n    \"openclaw fb-post-schedule-list\",\n    \"openclaw fb-post-schedule-delete\",\n    \"openclaw fb-post-drafts\",\n    \"openclaw fb-post-delete\",\n    \"facebook-advanced fb-post-list\",\n    \"facebook-advanced fb-post-schedule\",\n    \"facebook-advanced fb-post-schedule-list\",\n    \"facebook-advanced fb-post-schedule-delete\",\n    \"facebook-advanced fb-post-drafts\",\n    \"facebook-advanced fb-post-delete\"\n  ],\n  \"description\": \"Allowlist for facebook-posting skill commands\"\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1315,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:55:52.470Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:45:22.562Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}