Generate viral TikTok/Instagram carousel slides from any website automatically.
Post 1 carousel per day. Learn. Iterate. Grow.
Day 1: Post → Analyze → Learn
Day 7: 7 data points, patterns emerging
Day 30: Refined strategy, proven hooks, optimal timing
The skill accumulates insights across ALL your posts in learnings.json.
- 🔍 Full Business Research - Analyzes brand, features, competitors from any URL
- 🎨 AI Image Generation - Creates 6 visually coherent slides with Gemini (free plan available, no credit card)
- 📱 Direct Publishing - Posts straight to your TikTok feed with auto trending music + Instagram simultaneously. No drafts, no manual steps
- 💰 100% Free to Start - Both APIs (Gemini and upload-post.com) have free plans, no credit card required
- 📊 Analytics Tracking - Monitors performance across all posts
- 🔄 Learning Loop - Accumulates insights: best hooks, times, days, styles
# 1. Analyze website
node scripts/analyze-web.js https://your-product.com
# 2. Generate slides
GEMINI_API_KEY="..." bash scripts/generate-slides.sh
# 3. Publish
UPLOADPOST_TOKEN="..." bash scripts/publish-carousel.sh
# 4. Check analytics
UPLOADPOST_TOKEN="..." bash scripts/check-analytics.sh 7- Node.js 18+
- Playwright (
npm install playwright && npx playwright install chromium) - uv (Python package runner)
- jq
| Variable | Description |
|---|---|
GEMINI_API_KEY |
Google API key for Gemini image generation |
UPLOADPOST_TOKEN |
Upload-Post API token |
UPLOADPOST_USER |
Upload-Post username |
- Hook - Attention-grabbing question/problem
- Problem - Agitate the pain point
- Agitation - Show competition advancing
- Solution - Reveal your product
- Feature - Key benefit
- CTA - Call to action (Link in bio)
| Credential | Type | Where to Get |
|---|---|---|
GEMINI_API_KEY |
Environment variable | Google AI Studio |
UPLOADPOST_TOKEN |
Environment variable | upload-post.com → Dashboard → API Keys |
| Credential | Type | Description |
|---|---|---|
UPLOADPOST_USER |
Environment variable | Upload-Post username (not sensitive) |
- ✅ All credentials are read from environment variables, not stored in files
- ✅ No API keys are hardcoded in any scripts
- ✅ Website analysis only reads public web pages (no authentication scraping)
- ✅ All generated data stays local in
/tmp/carousel/
- Website URL → Analyzed by Playwright (local browser) →
analysis.json - Analysis → Sent to Gemini API → Returns generated images
- Images + Caption → Sent to Upload-Post API → Published to TikTok/Instagram
- Analytics → Fetched from Upload-Post API → Stored locally in
learnings.json
| Service | Purpose | Data Sent |
|---|---|---|
| Gemini API | Image generation | Text prompts describing slides |
| Upload-Post API | Publishing + analytics | Images, captions, profile username |
No sensitive user data is transmitted. Only the content you're publishing.
Most carousel automation skills post to drafts and require manual publishing. Viraloop is different:
| Feature | Viraloop | Other skills |
|---|---|---|
| Publishing | Direct to feed — posts go live instantly | Drafts only — you publish manually |
| Music | Auto trending music via auto_add_music |
Manual — you add it yourself |
| Platforms | TikTok + Instagram in one call | Single platform, manual cross-post |
| Research | Auto-analyzes any URL — brand, competitors, pricing, features | Manual — you describe your product |
| Image coherence | Image-to-image — slides 2-6 reference slide 1 | Each slide generated independently |
| Image gen | Gemini (free tier available) | Paid image providers required |
| Posting service | upload-post.com — free plan, no credit card | Paid or self-hosted alternatives |
| Text on images | AI-native — text rendered directly | External scripts for text overlay |
| Prompt quality | Structured templates — explicit fields for consistency | Free-form prompts |
| Setup | 3 env vars and you're posting | Complex multi-tool setup |
See SKILL.md for full documentation.
MIT