x-schedule-image-post
Schedule a post with an image and AI-generated content label on X (Twitter).
Skill by shinshin86
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/shinshin86-x-schedule-image-post
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/x-schedule-image-post
What's inside
- Skill name
x-schedule-image-post- Description
- Schedule a post with an image and AI-generated content label on X (Twitter). Use this when scheduling posts that include local image files and need the "AI-generated" disclosure toggle enabled.
- License
- MIT
- Compatibility
- Requires ai-chrome-pilot server (npx tsx src/index.ts) and Google Chrome installed
- Instructions
- 261 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# X (Twitter) Schedule Image Post with AI Label
Schedule a post on X with an attached image and the "AI-generated" content disclosure label, then verify it appears in the scheduled posts list.
## Prerequisites
- ai-chrome-pilot server is running
- User is logged in to X (if not, run the `x-login` skill first)
- Prefer `HEADLESS=0` for real scheduling flows so the visible composer state can be inspected
## Required inputs
- **Post text**: The text to post
- **Image path**: Absolute path to a local image file (PNG, JPEG, WEBP, or GIF)
- **Scheduled date/time**: Year, month, day, hour, and minute
Optional inputs:
- **Profile name**: Chrome profile to use (default: `default`)
- **AI label**: Whether to enable the "AI-generated" content disclosure (default: `true`)
Default resolution rules:
- Use `default` unless the user explicitly requested another profile
- AI label is enabled by default; disable only if the user explicitly opts out
- If all required inputs are provided, execute directly without an extra confirmation step
- Ask follow-up questions only when required inputs are missing
## Steps
### 1. Verify server is running
```bash
curl -s http://127.0.0.1:3333/health
```
If not running, start it with the resolved profile:
```bash
HEADLESS=0 PROFILE_NAME=<profile_name> npx tsx src/index.ts &
sleep 3 && curl -s http://127.0.0.1:3333/health
```
### 2. Navigate to X home
```bash
curl -s -X POST http://127.0.0.1:3333/goto \
-H 'Content-Type: application/json' \
-d '{"url":"https://x.com"}'
```
After `sleep 2`, take a screenshot to confirm the user is logged in.
### 3. Enter post text safely
Use `/snapshot` to find the post text box ref.
```bash
curl -s http://127.0.0.1:3333/snapshot
```
Look for `textbox "ポスト本文"` (Post text), click it, then treat `/act type` only as an initial convenience path.
```bash
curl -s -X POST http://127.0.0.1:3333/act \
-H 'Content-Type: application/json' \
-d '{"ref":"<textbox_ref>","action":"click"}'
```
For scheduling that will actually be submitted, prefer the same text-entry strategy as `x-compose-post`:
- connect to the existing Chrome instance with `Playwright over CDP`
- enter text with `page.keyboard.type()`
- verify `[data-testid="tweetTextarea_0"]` exactly matches the intended text before attaching media or opening the schedule dialog
Do not rely on the visible composer alone. X can show an enabled action state while the actual composer DOM is still out of sync.
### 4. Attach the image
Use the `/file-input` endpoint to set the image file on the hidden file input element.
```bash
curl -s -X POST http://127.0.0.1:3333/file-input \
-H 'Content-Type: application/json' \
-d '{"files":["<image_path>"]}'
```
After `sleep 2`, take a screenshot to verify the image preview appears in the composer.
### 5. Enable the AI-generated content label
After attaching the image, the toolbar refs will change. Take a fresh snapshot.
```bash
curl -s http://127.0.0.1:3333/snapshot
```
1. Click `button "コンテンツ開示"` (Content disclosure) in the toolbar.
```bash
curl -s -X POST http://127.0.0.1:3333/act \
-H 'Content-Type: application/json' \
-d '{"ref":"<content_disclosure_ref>","action":"click"}'
```
2. After `sleep 1`, take a snapshot. Find `switch "AIで生成 ..."` and click it to enable.
```bash
curl -s -X POST http://127.0.0.1:3333/act \
-H 'Content-Type: application/json' \
-d '{"ref":"<ai_switch_ref>","action":"click"}'
```
3. Click `button "完了"` (Done) to close the disclosure panel.
```bash
curl -s -X POST http://127.0.0.1:3333/act \
-H 'Content-Type: application/json' \
-d '{"ref":"<done_button_ref>","action":"click"}'From shinshin86/ai-chrome-pilot, MIT.
More from shinshin86/ai-chrome-pilot
- 0.474score
x-get-scheduled-posts
shinshin86
Inspect the scheduled posts list on X (Twitter) through ai-chrome-pilot without creating or modifying posts.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-schedule-post
shinshin86
Schedule a post on X (Twitter) and verify it was successfully scheduled.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-compose-post
shinshin86
Compose and send posts on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-get-notifications
shinshin86
Inspect notifications on X (Twitter) through ai-chrome-pilot and extract replies or quote reposts without performing likes or other engagement actions.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-like-notifications
shinshin86
Like selected unliked notifications on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-quote-post
shinshin86
Quote a specific post on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-act-on-notifications
shinshin86
Perform selected actions on X (Twitter) notifications through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.466score
x-login
shinshin86
Log in to X (Twitter) via browser.
SkillDFreshness: D★ 7Claude Code +9
Signals
- Stars
- 7
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Mar 28, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/shinshin86/ai-chrome-pilot
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from shinshin86
- 0.474score
x-get-scheduled-posts
shinshin86
Inspect the scheduled posts list on X (Twitter) through ai-chrome-pilot without creating or modifying posts.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-schedule-post
shinshin86
Schedule a post on X (Twitter) and verify it was successfully scheduled.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-compose-post
shinshin86
Compose and send posts on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-get-notifications
shinshin86
Inspect notifications on X (Twitter) through ai-chrome-pilot and extract replies or quote reposts without performing likes or other engagement actions.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-like-notifications
shinshin86
Like selected unliked notifications on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9 - 0.469score
x-quote-post
shinshin86
Quote a specific post on X (Twitter) through ai-chrome-pilot.
SkillDFreshness: D★ 7Claude Code +9
Cite this page
x-schedule-image-post skill. Agent Mart. https://agentmart.dev/skills/shinshin86-x-schedule-image-post (last updated 2026-10-24)