social-post
Post to Twitter and Farcaster with text and images. Handles character limits, image uploads, and cross-platform posting.
Best use case
social-post is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Post to Twitter and Farcaster with text and images. Handles character limits, image uploads, and cross-platform posting.
Teams using social-post should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/social-post/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How social-post Compares
| Feature / Agent | social-post | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Post to Twitter and Farcaster with text and images. Handles character limits, image uploads, and cross-platform posting.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Social Post Post to Twitter and/or Farcaster with automatic character limit validation and image upload handling. ## Features - ✅ Post to Twitter only - ✅ Post to Farcaster only - ✅ Post to both platforms simultaneously - ✅ Character/byte limit validation - ✅ Image upload support - ✅ **Thread support** - automatically split long text into numbered posts - ✅ **Link shortening** - compress URLs using TinyURL (saves characters) - ✅ Auto-truncate on overflow (optional) ## Platform Limits - **Twitter:** 252 characters (280 with 10% safety buffer) - **Farcaster:** 288 bytes (320 with 10% safety buffer) ## Usage ### Text only ```bash # Post to both platforms scripts/post.sh "Your message here" # Twitter only scripts/post.sh --twitter "Your message" # Farcaster only scripts/post.sh --farcaster "Your message" ``` ### With image ```bash # Post to both platforms with image scripts/post.sh --image /path/to/image.jpg "Your caption" # Twitter only with image scripts/post.sh --twitter --image /path/to/image.jpg "Caption" # Farcaster only with image scripts/post.sh --farcaster --image /path/to/image.jpg "Caption" ``` ### Options - `--twitter` - Post to Twitter only - `--farcaster` - Post to Farcaster only - `--image <path>` - Attach image - `--thread` - Split long text into numbered thread - `--shorten-links` - Shorten URLs to save characters - `--truncate` - Auto-truncate if over limit - `--dry-run` - Preview without posting ## Examples ```bash # Quick post to both scripts/post.sh "gm! Building onchain 🦞" # Twitter announcement with image scripts/post.sh --twitter --image ~/screenshot.png "New feature shipped! 🚀" # Farcaster only scripts/post.sh --farcaster "Just published credential-manager to ClawHub!" # Long text as thread (auto-numbered) scripts/post.sh --thread "This is a very long announcement that exceeds the character limit. It will be automatically split into multiple numbered posts. Each part will be posted sequentially to create a thread. (1/3), (2/3), (3/3)" # Shorten URLs to save characters scripts/post.sh --shorten-links "Check out this amazing project: https://github.com/very-long-organization-name/very-long-repository-name" # Combine thread + link shortening scripts/post.sh --thread --shorten-links "Long text with multiple links that will be shortened and split into a thread if needed" # Both platforms, auto-truncate long text scripts/post.sh --truncate "Very long message that might exceed limits..." ``` ## Requirements - Twitter credentials in `.env` (X_CONSUMER_KEY, X_CONSUMER_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET) - Farcaster credentials in `/home/phan_harry/.openclaw/farcaster-credentials.json` - For images: `curl`, `jq` ## Image Hosting - **Twitter:** Direct upload via Twitter API - **Farcaster:** Uploads to imgur for public URL (embeds automatically) ## Error Handling - Shows character/byte count before posting - Warns if exceeding limits - Option to truncate or abort - Validates credentials before attempting post
Related Skills
glasses-to-social
Turn smart glasses photos into social media posts. Monitors a Google Drive folder for new images from Meta Ray-Ban glasses (or any smart glasses), analyzes them with vision AI, drafts tweets/posts in the user's voice, and publishes on approval. Use when setting up a glasses-to-social pipeline, processing smart glasses photos for social media, or creating hands-free content workflows.
multiposting
Multiposting to X, Instagram, YouTube, Tiktok, LinkedIn, Facebook, Threads, Pinterest, Reddit, Bluesky
compost-tracker
Track compost piles, monitor temperature, record turns, and manage your organic waste decomposition.
social-media-detox
Break social media addiction with screen-free streaks, urge tracking, and digital wellness
simplified-social-media
Manage your entire social media presence — post, schedule, and analyze — directly from your AI coding tool.
journal-to-post
Convert personal journal entries into shareable social media posts
agent-social
Interact with AgentGram social network for AI agents. Post, comment, vote, follow, and build reputation. Open-source, self-hostable, REST API.
moltbook-signed-posts
Cryptographically sign Moltbook posts with Ed25519. Enables verifiable agent identity without platform support.
postnitro-carousel
Generate professional social media carousel posts using the PostNitro.ai Embed API.
markdown-to-social
Convert markdown articles/text into platform-optimized social media posts.
socialite-guide
Expert guidance for generating "Socialite Style" (名媛风) images using AI art tools (Nano Banana Pro)
Social Media Story Video
**Version**: 1.0.0