An open-source, unified social media management tool that lets you post content and media to multiple platforms simultaneously.
- Multi-platform Support: Post to Bluesky, Twitter/X, and Mastodon from a single interface
- Media Uploads: Attach images and other media files to your posts
- Character Limit Checking: Real-time validation of post length against platform limits
This project uses UV for managing Python dependencies and execution. Two convenience scripts are provided to handle UV installation and run the main script.
Right click run_social_poster.ps1 and select Open in Powershell, or
- Open PowerShell
- Run the provided script by right clicking:
powershell -ExecutionPolicy ByPass -File run_social_poster.ps1
- Open a terminal
- Make the script executable:
chmod +x run_social_poster.sh
- Run the script:
./run_social_poster.sh
-
Connect Accounts: First, connect to your social media accounts in the Accounts tab
- For Bluesky: Enter your handle and app password
- For Twitter/X: Login through the browser window that opens
- For Mastodon: Enter your instance domain and authorize the application
-
Create Posts: Switch to the Post tab to compose your message
- Add media files using the upload section
- Type your message in the text area
- Select which connected accounts to post to
-
Monitor Character Limits: The app will automatically check if your post exceeds character limits for selected platforms
-
Send: Click the Post button to send your message to all selected platforms
Social Poster is built using:
- FastHTML: Server-side rendering framework
- MonsterUI: Component library for clean, responsive UI
- HTMX: Dynamic interactions without writing JavaScript
- ATProto: For Bluesky API integration
- Selenium: For Twitter/X integration
- Mastodon API: For Mastodon integration
- SQLite: Local storage of account information
- Connection Issues: Ensure you have a stable internet connection and that the social media services are accessible.
- Authentication Failures: For Bluesky, verify you're using a valid app password. For Twitter, ensure your account is not locked.
- Upload Problems: Check that your media files are in supported formats and under size limits.
- Browser Issues: For Twitter integration, ensure Chrome is installed and up to date.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.