Install
openclaw skills install ganidhuz-foxx๐ฆ Ganidhuz-FoxX (Firefox + X combined lol). Browse X/Twitter using a real logged-in Firefox session via cookie injection. Supports profile viewing, tweet fe...
openclaw skills install ganidhuz-foxxBrowse X/Twitter through Firefox with your real session cookies. Built because Chromium kept getting bot-blocked by X.
pip install playwright && playwright install firefoxXvfb :1 &Close Firefox first, then:
bash scripts/export-x-cookies.sh
# Cookies saved to secrets/x-cookies.json by default
# Override: FOXX_COOKIES_OUT=/custom/path.json bash scripts/export-x-cookies.sh
Custom Firefox profile path:
FIREFOX_PROFILE_PATH=/path/to/profile bash scripts/export-x-cookies.sh
bash scripts/check-firefox-env.sh
Run a plan file:
DISPLAY=:1 python3 scripts/playwright-firefox-control.py --plan /tmp/foxx-plan.json
{
"needs_gui": true,
"gui_reason": "site_only_action",
"url": "https://x.com/elonmusk",
"cookies_path": "secrets/x-cookies.json",
"steps": [
{"action": "wait", "ms": 4000},
{"action": "screenshot", "path": "/tmp/foxx-profile.png"}
],
"close_delay_ms": 3000
}
{
"needs_gui": true,
"gui_reason": "site_only_action",
"url": "https://x.com/search?q=AI+agents&src=typed_query&f=live",
"cookies_path": "secrets/x-cookies.json",
"steps": [
{"action": "wait", "ms": 4000},
{"action": "screenshot", "path": "/tmp/foxx-search.png"}
],
"close_delay_ms": 3000
}
{
"needs_gui": true,
"gui_reason": "site_only_action",
"url": "https://x.com/user/status/123456789",
"cookies_path": "secrets/x-cookies.json",
"steps": [
{"action": "wait", "ms": 3000},
{"action": "content", "selector": "article"},
{"action": "screenshot", "path": "/tmp/foxx-tweet.png"}
],
"close_delay_ms": 3000
}
| Field | Default | Description |
|---|---|---|
needs_gui | required | Must be true to launch browser |
gui_reason | required | One of: login, captcha, mfa, visual_verification, site_only_action |
url | required | Starting URL |
cookies_path | optional | Path to exported cookies JSON |
close_delay_ms | 3000 | Wait (ms) before closing browser - validate result first |
validation_screenshot | /tmp/firefox-openclaw-validate.png | Auto-taken final screenshot before close |
storage_state_path | optional | Save session state to this path after run |
goto - navigate to URLclick - click element by selectorfill - fill input by selectortype - type text with delaypress - press keyboard keywait - wait mswait_for_selector - wait for elementscreenshot - take screenshotcontent - extract inner text from elementwait step, min 3000ms recommended)close_delay_ms before closing - verify result is correctexport-x-cookies.sh