FB Personal Poster
Post text + photos to personal Facebook timeline via Patchright stealth browser automation.
Why Not Graph API?
Facebook removed publish_actions permission in 2018. API cannot post to personal timelines.
Only browser automation works — this skill uses Patchright (stealth Chromium) to mimic human behavior.
Requirements
CODEBLOCK0
Environment Variables
| Variable | Required | Description |
|---|
| INLINECODE1 | ✅ | Path to Facebook cookies JSON (Selenium format). Full account access. |
| INLINECODE2 |
✅ | Writable path for Playwright state (default:
/tmp/fb_state.json) |
|
FB_DRY_RUN | — |
true (default) = preview only.
false = actually post. |
|
FB_USER_AGENT | — | Override browser user agent |
How to Get Cookies
- 1. Log in to Facebook in Chrome (manually, once)
- Export all
facebook.com cookies as JSON via EditThisCookie extension - Save to path in
FB_COOKIE_FILE with INLINECODE10
Cookies last ~30–90 days. Re-export when expired.
Usage
Text-only post
CODEBLOCK1
Post with photos
CODEBLOCK2
Dry run (default)
CODEBLOCK3
OpenClaw Integration (Recommended)
Use the built-in browser tool — already proven working for personal timeline posting:
CODEBLOCK4
Tips
- - Facebook 頁面結構複雜,selector 會變,用
snapshot 找當前可用的 ref - 上傳圖片用
browser(action="upload") 功能 - 如果 timeout,重試一次通常就好
- 個人動態和粉絲專頁的操作流程不同,注意確認在正確頁面
Safety
- - Dry-run is ON by default — must explicitly set
FB_DRY_RUN=false for live posting - Cookies stored locally with
chmod 600 — never committed to git - Human-like delays and typing speed to avoid detection
FB Personal Poster
通过Patchright隐身浏览器自动化,将文本+照片发布到个人Facebook时间线。
为何不使用Graph API?
Facebook于2018年移除了publish_actions权限。API无法发布到个人时间线。
只有浏览器自动化可行——本技能使用Patchright(隐身Chromium)模拟人类行为。
环境要求
bash
cd scripts/ && pip install -r requirements.txt
python -m patchright install chromium
环境变量
| 变量名 | 必填 | 说明 |
|---|
| FBCOOKIEFILE | ✅ | Facebook Cookie JSON文件路径(Selenium格式)。需完整账户访问权限。 |
| FBSTATEFILE |
✅ | Playwright状态文件的可写路径(默认:/tmp/fb_state.json) |
| FB
DRYRUN | — | true(默认)= 仅预览。false = 实际发布。 |
| FB
USERAGENT | — | 覆盖浏览器用户代理 |
如何获取Cookie
- 1. 在Chrome中登录Facebook(手动操作,仅需一次)
- 通过EditThisCookie扩展导出所有facebook.com的Cookie为JSON格式
- 保存到FBCOOKIEFILE指定的路径,并执行chmod 600
Cookie有效期约30-90天。过期后需重新导出。
使用方法
纯文本发布
bash
FB
COOKIEFILE=~/.fb
cookies.json FBDRY_RUN=false \
python3 scripts/fb_post.py -m 来自自动化的问候!
带照片发布
bash
FB
COOKIEFILE=~/.fb
cookies.json FBDRY_RUN=false \
python3 scripts/fb_post.py -m 美好的一天! -p photo1.jpg photo2.jpg
预览模式(默认)
bash
python3 scripts/fb_post.py -m 测试发布 -p photo.jpg
不会实际发布——仅预览流程
OpenClaw集成(推荐)
使用内置的browser工具——已证明可用于个人时间线发布:
python
步骤1:导航到Facebook
browser(action=navigate, url=https://www.facebook.com/)
步骤2:确认在个人主页(url应为facebook.com/me)
步骤3:点击在想些什么
browser(action=act, kind=click, ref=[发布输入框])
步骤4:输入消息
browser(action=act, kind=type, text=你的消息内容)
步骤5:上传照片(如需)
browser(action=upload, paths=[/path/to/photo.jpg])
步骤6:设置分享范围为公开
步骤7:点击发布按钮
browser(action=act, kind=click, ref=[发布按钮])
提示
- - Facebook页面结构复杂,选择器会变化,使用snapshot查找当前可用的ref
- 上传图片使用browser(action=upload)功能
- 如果超时,通常重试一次即可
- 个人动态和粉丝专页的操作流程不同,注意确认在正确页面
安全说明
- - 预览模式默认开启——必须显式设置FBDRYRUN=false才能实际发布
- Cookie本地存储并执行chmod 600——绝不提交到Git
- 模拟人类操作延迟和打字速度以避免检测