# Automate Twitter/X Publishing and Engagement

Managing Twitter/X publishing and engagement can require repetitive manual work. This skill provides belt CLI workflows for posts, media, likes, reposts, messages, follows, and lookups.

## Install

```bash
npx skillstore add 101-skills/twitter-automation
```

## Metadata

- Status: approved
- Slug: 101-skills-twitter-automation
- Skillstore revision: r1
- Version status: missing
- Tree hash: cd495986ea432d446c24408b35f7f116751077a2574b40507c3f65db879009ba
- Author: 101-skills
- GitHub username: 101-skills
- License: MIT
- Repository: https://github.com/101-skills/skills/tree/main/tools/social/twitter-automation/
- Ref: d71c7417a35d5c2624161bd2fe8de8a41a362128
- Supported tools: Claude, Codex, Claude Code
- Audit status: complete
- Agent install advisory: allowed
- Manual install advisory: allowed
- Artifact signature: available
- Audit attestation: unavailable
- Human verification: not\_verified
- Risk factors: external\_commands, network
- Quality score: 50
- Quality tier: warning
- Public page: https://skillstore.pages.dev/skills/101-skills-twitter-automation
- Manifest: https://skillstore.pages.dev/api/skills/101-skills-twitter-automation/manifest

## Capabilities

- Publish text posts through the connected Twitter/X account.
- Create posts containing images or videos from a media URL.
- Like, repost, retrieve, or delete posts using tweet identifiers.
- Send direct messages and follow users through authenticated account actions.
- Retrieve public profile details for a specified username.
- Generate media with inference.sh apps and publish the returned asset URL.

## Use Cases

- Publish campaign updates: Prepare and publish approved text or media posts for a managed brand account.
- Test X integrations: Exercise posting, lookup, and engagement operations while developing an automated workflow.
- Share generated media: Generate an image or video with inference.sh and publish the resulting media URL.

## Prompt Templates

### Draft a text post

```
Draft one Twitter/X post about [topic] for [audience]. Keep it under [limit] characters and show the final text before publishing.
```

### Prepare a media post

```
Prepare a Twitter/X post using [media URL] and this message: [text]. Validate the inputs and request confirmation before publishing.
```

### Review an engagement action

```
Prepare to [like or repost] tweet [tweet ID]. Retrieve its details, summarize the target, and ask for confirmation before changing the account.
```

### Build an approved publishing workflow

```
Generate [image or video] for [campaign], extract its media URL, and draft the post. Stop for approval before every external account action.
```

## Limitations

- The belt CLI and a configured Twitter/X integration are required.
- The documented examples do not implement scheduling, despite scheduling language in the skill description.
- Examples contain placeholder identifiers and media URLs that users must replace.
- The skill does not include approval, rate-limit, consent, or bulk-activity safeguards.

## Best Practices

- Preview final text, recipients, usernames, tweet identifiers, and media before any account-changing action.
- Use approved content and follow Twitter/X automation, consent, and rate-limit policies.
- Pin installed dependencies and verify the connected account before running commands.

## Anti Patterns

- Do not automate unsolicited direct messages, mass follows, likes, or reposts.
- Do not publish or delete content without explicit confirmation from the account owner.
- Do not place credentials, private data, or confidential URLs in post inputs.

## Security Audit

- Audited at: 2026-07-12T10:22:57.439\+00:00
- Summary: The skill intentionally runs belt and npx commands, including authenticated Twitter/X actions and third-party skill installation. Markdown formatting and ordinary documentation links are false positives, but the remote image, unpinned installs, and missing action confirmations remain real risks.

## Stats

- Views: 0
- Downloads: 5
- Favorites: 0
- Popularity score: 0
