Guide · Agent skill
Facebook Page Publisher agent skill: how to use meta-upload
Updated · written with AI from the project's own documentation and checked against our catalogue data
meta-upload is an agent skill that teaches an AI agent to publish videos or image-and-text posts to a Facebook Page, schedule them for a Beijing-time slot, check that they were recorded, and delete them later. It works by calling the sau command-line tool that you already have, not by driving the browser itself. This guide explains what the skill does, how to install it, how to ask for tasks in plain language, and what to check before anything live is created or deleted.
Quick start
- 1Install sau and confirm the commands. Make sure the sau CLI is on your PATH and that the facebook-page subcommands are available. Check the current --help output.
- 2Install the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/ or a project's .claude/skills/, or upload it under Settings → Capabilities → Skills in the Claude apps.
- 3Log in and save an account alias. Run sau facebook-page login with an alias such as creator, using an account with admin access to the Page, then run check.
- 4Ask the agent to publish or schedule. Describe the Page name, content, media and, if scheduling, the Beijing time. Make sure the browser timezone is Asia/Shanghai.
- 5Verify before any deletion. Ask the agent to verify the post with the Page ID, content ID and expected text, and to check the saved result file before deleting.
What the meta-upload skill makes the agent do
The skill tells the agent how to use the existing sau facebook-page commands. It covers logging in with a saved account alias, publishing a video or an image-and-text post, scheduling either one, looking up a post, and deleting it.
The agent does not reimplement browser logic. It runs the commands and reports results, which are saved to local JSON files. The skill also explains how to read statuses such as scheduled, published, processing and submission_unknown, and to verify a post before deleting it.
- Publish a video or an image-and-text post to a named Facebook Page
- Schedule either type for a Beijing-time slot (Asia/Shanghai)
- Record results and post IDs in local JSON files
- Verify a post exists and matches expected text before any deletion
- Delete scheduled or published content with explicit flags
Install the meta-upload skill
Download the ZIP of the skill from this page. Then choose one of two routes.
For Claude Code on your own machine, unzip the folder into ~/.claude/skills/. To keep the skill only for one project, unzip it into that project's .claude/skills/ folder instead.
In the Claude apps, open Settings, go to Capabilities, then Skills, and upload the ZIP there.
- Personal use across projects: ~/.claude/skills/
- One project only: the project's .claude/skills/ folder
- Claude apps: Settings → Capabilities → Skills, then upload the ZIP
Set up sau, your Facebook login and timezone first
The skill does not work on its own. The sau CLI must be installed and on your PATH, with the facebook-page subcommands available. Log in once through the browser flow with an account that has admin access to the target Page, and save it under an alias such as creator.
Scheduled posts use Beijing time, so the browser timezone must be set to Asia/Shanghai. If your network needs a proxy, pass --proxy or set SAU_FACEBOOK_PAGE_PROXY. By default no proxy is configured and the browser connects directly. Passing --proxy with an empty string ignores the environment variable.
- sau CLI installed and on PATH with facebook-page subcommands
- Logged-in Facebook account with admin access to the Page
- Browser timezone set to Asia/Shanghai for scheduled posts
- Optional proxy via SAU_FACEBOOK_PAGE_PROXY or --proxy
sau facebook-page login --account creator
sau facebook-page check --account creatorAsk the agent for tasks in plain language
Once the skill is installed, describe the job in ordinary words and name the Page, the account alias, the content and any schedule. Ask the agent to check the result file afterwards so you have a record of the post ID.
Good requests name the action (publish, schedule, verify, delete), the Page name exactly as it appears on Facebook, and the content. For scheduled posts, state the Beijing time and make sure it is at least 2 hours ahead.
- Publish the image at images/1.jpg to my Page 'My Page' with title and body text, and save the result to .local/page-result.json
- Schedule the video videos/demo.mp4 for 10:30 Beijing time on a date at least 2 hours away, and save the result
- Verify the scheduled post with this content ID and expected text before doing anything else
- Delete this scheduled post, but only after checking that the Page ID and text match the saved record
Commands the agent runs and examples
The skill points to these commands as the basis of its work. Before running them, check the current CLI with --help, because flags can change. Replace the account, media and text with your own. These commands can create real posts.
Use --schedule with 'YYYY-MM-DD HH:MM' for Beijing-time scheduling. Leave it out to submit immediately. Use --tags for English comma-separated tags. Ask for --result explicitly so the outcome is saved to a file rather than copied by hand. By default results go to .local/meta-results/.
- upload-note publishes image-and-text content
- upload-video publishes a video, optionally scheduled
- verify checks a post by Page, IDs and expected text
- delete removes a post, with --scheduled for the scheduled list
sau facebook-page upload-note --account creator --page "My Page" --images images/1.jpg --title "Title" --note "Body" --result .local/page-result.json
sau facebook-page upload-video --account creator --page "My Page" --file videos/demo.mp4 --title "Title" --desc "Body" --schedule "YYYY-MM-DD HH:MM" --result .local/reel-result.jsonRead the statuses before you verify or delete
A scheduled status means the platform confirmed the schedule and the agent checked the original record. A published status means an image-and-text post is live. A video submitted immediately returns processing once the creation response has no error and the completion dialog appears. That means the platform accepted it and is working on it, not that it is already playing publicly, and the content ID may not be available yet.
submission_unknown means the evidence of submission is insufficient. The agent must query the original record first and must not resubmit.
- scheduled: platform confirmed the schedule
- published: image-and-text post is live
- processing: accepted and in progress; the content ID may be missing for now
- submission_unknown: query the original record first, never resend
Verify and delete posts safely
Verification and deletion both use the Page name, Page ID, content ID and the original text. Add --scheduled when you are looking at the scheduled list. Deleting a scheduled post cancels the schedule and removes it permanently, returning deleted. Deleting a published post without --scheduled moves it to the trash, returning trashed, where it is removed automatically after 30 days. Where the Page trash is not connected, the skill does not claim a permanent deletion.
The skill only covers the recent lists that have loaded. It does not guarantee it can find all historical posts. If the same text cannot uniquely identify the post, or the Page or ID does not match, nothing is deleted. After a scheduled post goes live, its ID may change, so use the ID from the published list.
- Use --scheduled only for the scheduled list
- Without --scheduled, published content goes to trash (30 days)
- If deletion times out or the browser disconnects, check the original record and do not delete again automatically
- Local media files are kept
sau facebook-page verify --account creator --page "My Page" --page-id "numeric Page ID" --content-id "content ID" --expected-text "original text" --scheduled
sau facebook-page delete --account creator --page "My Page" --page-id "numeric Page ID" --content-id "content ID" --expected-text "original text" --scheduled --result .local/delete-result.jsonWhat people use it for
- A creator publishes a short video to a Facebook Page and keeps the result file as a record of the content ID.
- A social team schedules image-and-text posts for Beijing-time slots and asks the agent to confirm each one shows as scheduled.
- An operator checks a post's status after a submission_unknown result without resending it.
- A team removes an outdated scheduled post, after verifying the Page ID and text match.
Frequently asked questions
Is the meta-upload skill free to use?
The skill is published under the MIT licence. You still need the sau CLI installed and a Facebook account with admin access to the Page, and the source does not describe any charges for the skill itself.
What do I need before I can use meta-upload?
You need the sau CLI on your PATH with the facebook-page subcommands, a logged-in Facebook account with admin access to the target Page, and the browser timezone set to Asia/Shanghai for scheduled posts. A proxy address is optional and only needed if your network requires one.
How do I install the meta-upload skill in Claude?
Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder for one project. In the Claude apps you can instead upload the ZIP under Settings, then Capabilities, then Skills.
Can meta-upload post to Instagram?
No. The skill says Instagram posting is currently paused and is not supported here. It also does not use Business Suite to link Instagram.
Why is my post marked processing or submission_unknown?
processing means the platform accepted an immediate video submission and is working on it, so it may not be public yet. submission_unknown means there is not enough evidence the submission happened, so the agent should check the original record first and must not resubmit.
What happens when I delete a Facebook Page post with meta-upload?
A scheduled post deleted with --scheduled is cancelled and permanently removed, returning deleted. A published post deleted without that flag is moved to the trash, returning trashed, and is removed automatically after 30 days. Deletion only proceeds when the Page, IDs and text match.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Use meta-upload if you already run the sau tool, post to Facebook Pages, and want an agent to follow careful schedule, status and verification steps with saved records. Pick something else if you want a one-click tool, need Instagram posting, or cannot install sau and log in to Facebook. Because the commands can create real posts and permanently delete scheduled content, review every action on a live Page first.
Download the skill