← All skills
Tencent SkillHub · Communication & Collaboration

Facebook Page

Facebook Page manager: post, schedule, reply, get insights & more. Requires: powershell/pwsh. Reads ~/.config/fb-page/credentials.json (FB_PAGE_TOKEN, FB_PAG...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Facebook Page manager: post, schedule, reply, get insights & more. Requires: powershell/pwsh. Reads ~/.config/fb-page/credentials.json (FB_PAGE_TOKEN, FB_PAG...

⬇ 0 downloads ★ 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, _meta.json

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.16

Documentation

ClawHub primary doc Primary doc: SKILL.md 7 sections Open source page

facebook-page — Universal Meta Graph API Skill

Constructs and executes Meta Graph API calls inline based on what the user wants. No scripts needed. API version: v25.0 Base URL: https://graph.facebook.com/v25.0

STEP 1 — Load Credentials

Credentials are stored in ~/.config/fb-page/credentials.json. $cfg = Get-Content "$HOME/.config/fb-page/credentials.json" -Raw | ConvertFrom-Json $token = $cfg.FB_PAGE_TOKEN $pageId = $cfg.FB_PAGE_ID If the file doesn't exist, guide setup. Required fields: FieldPurposeFB_PAGE_TOKENNever-expiring Page access token — used for all API callsFB_PAGE_IDNumeric Facebook Page IDFB_APP_IDMeta App ID — only needed during token exchangeFB_APP_SECRETMeta App Secret — only needed during token exchange One-time token exchange setup: # Provide: $appId, $appSecret, $shortToken (from Graph API Explorer), $pageId # 1. Exchange for long-lived user token $r1 = Invoke-RestMethod "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=$appId&client_secret=$appSecret&fb_exchange_token=$shortToken" # 2. Get never-expiring Page token $r2 = Invoke-RestMethod "https://graph.facebook.com/v25.0/$pageId?fields=access_token&access_token=$($r1.access_token)" $pageToken = $r2.access_token # 3. Save — only these four fields, nothing else @{ FB_PAGE_ID = $pageId FB_PAGE_TOKEN = $pageToken FB_APP_ID = $appId FB_APP_SECRET = $appSecret } | ConvertTo-Json | Set-Content "$HOME/.config/fb-page/credentials.json" -Encoding UTF8 Restrict file permissions immediately after saving: # Windows icacls "$HOME/.config/fb-page/credentials.json" /inheritance:r /grant:r "$($env:USERNAME):(R,W)" # macOS / Linux # chmod 600 ~/.config/fb-page/credentials.json ⚠️ Never commit this file to version control. It contains long-lived secrets. This skill makes no external calls other than to graph.facebook.com. No data is forwarded to third parties.

Common Endpoints

What user wantsMethodEndpointPost textPOST/$pageId/feed — body: messagePost with imagePOST/$pageId/photos — multipart: source + messagePost with videoPOST/$pageId/videos — multipart: source + descriptionPost with linkPOST/$pageId/feed — body: message + linkDelete a postDELETE/{post-id}Schedule a postPOST/$pageId/feed — body: message + published=false + scheduled_publish_time (unix timestamp)Get recent postsGET/$pageId/published_posts?fields=id,message,created_time&limit=10Get page infoGET/$pageId?fields=name,fan_count,followers_count,aboutLike a postPOST/{post-id}/likesGet commentsGET/{post-id}/comments?fields=message,from,created_timeReply to commentPOST/{comment-id}/comments — body: messageHide commentPOST/{comment-id} — body: is_hidden=trueDelete commentDELETE/{comment-id}Get page insightsGET/$pageId/insights?metric=page_fans,page_impressions&period=dayGet post insightsGET/{post-id}/insights?metric=post_impressions,post_reactions_by_type_totalList eventsGET/$pageId/events?fields=name,start_time,descriptionCreate eventPOST/$pageId/events — body: name, start_time, descriptionList albumsGET/$pageId/albums?fields=name,countGet page rolesGET/$pageId/rolesPublish draft postPOST/{post-id} — body: is_published=true

API Call Patterns

GET: $result = Invoke-RestMethod -Uri "https://graph.facebook.com/v25.0/ENDPOINT?access_token=$token" -ErrorAction Stop POST (form body): $result = Invoke-RestMethod -Uri "https://graph.facebook.com/v25.0/ENDPOINT" -Method POST ` -Body @{ field1="value1"; field2="value2"; access_token=$token } -ErrorAction Stop DELETE: $result = Invoke-RestMethod -Uri "https://graph.facebook.com/v25.0/{id}?access_token=$token" -Method DELETE -ErrorAction Stop Multipart (image/video upload): $boundary = [System.Guid]::NewGuid().ToString() $fileBytes = [System.IO.File]::ReadAllBytes($filePath) $fileName = [System.IO.Path]::GetFileName($filePath) $stream = New-Object System.IO.MemoryStream $writer = New-Object System.IO.StreamWriter($stream) $writer.Write("--$boundary`r`nContent-Disposition: form-data; name=`"message`"`r`n`r`n$message`r`n") $writer.Write("--$boundary`r`nContent-Disposition: form-data; name=`"access_token`"`r`n`r`n$token`r`n") $writer.Write("--$boundary`r`nContent-Disposition: form-data; name=`"source`"; filename=`"$fileName`"`r`nContent-Type: image/jpeg`r`n`r`n") $writer.Flush(); $stream.Write($fileBytes, 0, $fileBytes.Length) $writer.Write("`r`n--$boundary--`r`n"); $writer.Flush() $result = Invoke-RestMethod -Uri "https://graph.facebook.com/v25.0/$pageId/photos" -Method POST ` -ContentType "multipart/form-data; boundary=$boundary" -Body $stream.ToArray() -ErrorAction Stop Scheduled post — convert local time to Unix timestamp: $runAt = [datetime]"2026-03-15 09:00" $unixTime = [int][double]::Parse(($runAt.ToUniversalTime() - [datetime]"1970-01-01").TotalSeconds) $result = Invoke-RestMethod -Uri "https://graph.facebook.com/v25.0/$pageId/feed" -Method POST ` -Body @{ message="text"; published="false"; scheduled_publish_time=$unixTime; access_token=$token } -ErrorAction Stop

STEP 3 — Handle Errors

try { # ... API call ... } catch { $err = $_.ErrorDetails.Message | ConvertFrom-Json -ErrorAction SilentlyContinue $code = $err.error.code $subcode = $err.error.error_subcode $msg = $err.error.message } CodeSubcodeMeaningFix100—Invalid parameterCheck the parameter values102—Session expiredRe-run setup to get a new token190460Token expiredRe-run setup with a new short-lived token190467Invalid tokenRe-run setup200—Permission deniedAdd the permission listed in error.message to your app10—Permission denied (page)Add pages_read_engagement or pages_manage_posts230—Requires re-authRe-run setup368—Temporarily blockedWait and retry; page may be rate-limited

Permissions Reference

PermissionRequired forpages_manage_postsCreate, delete, schedule postspages_read_engagementRead posts, likes, comments, insightspages_show_listList pages you managepages_manage_metadataUpdate page settingspages_manage_engagementModerate comments, reply to reviewspages_read_user_contentRead visitor posts and commentspages_manage_adsManage ad campaigns on the pagepages_manage_instant_articlesManage Instant Articles If a permission is missing: Go to Meta for Developers Select your app → Permissions and Features Add the required permission Regenerate token via Graph API Explorer Re-run setup with the new token

AGENT RULES

Always load credentials first. If missing or incomplete, guide setup. Only use FB_PAGE_TOKEN and FB_PAGE_ID for API calls. FB_APP_ID and FB_APP_SECRET are for token exchange only. Never write extra fields to the credentials file (no owner IDs, conv IDs, or third-party keys). Remove FB_APP_SECRET from credentials.json after token exchange — it is not needed for API calls. Least-privilege: only request the permissions your use case needs. Do not request pages_manage_ads or pages_manage_instant_articles unless explicitly needed. Rotate FB_PAGE_TOKEN periodically via Graph API Explorer, and immediately if the host is ever compromised. All API calls go to graph.facebook.com only. No external forwarding, no third-party services. Construct API calls inline from user intent — don't look for script files. On any error: parse error.code + error.error_subcode, map to the table above, tell the user exactly what to do. If a permission is missing: name it, link to Meta for Developers, say to re-run setup.

Category context

Messaging, meetings, inboxes, CRM, and teammate communication surfaces.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
2 Docs1 Config
  • SKILL.md Primary doc
  • README.md Docs
  • _meta.json Config