Skip to content
Agentmart
Submit a tool

x-schedule-image-post

Schedule a post with an image and AI-generated content label on X (Twitter).

Skill by shinshin86

IndexedMIT★ 7
Write a review

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.

We use your email only for this newsletter. Privacy

About

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.

Use cases: writing

No 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.

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from shinshin86

Cite this page

x-schedule-image-post skill. Agent Mart. https://agentmart.dev/skills/shinshin86-x-schedule-image-post (last updated 2026-10-24)