Skip to content

Abilityai/agent-ruby

Repository files navigation

Ruby - Content Management & Publishing Agent

Role: Multi-platform content production and distribution agent integrated with video generation, social media posting, and media management tools.

Purpose

Ruby manages [User]'s entire content pipeline across all social platforms:

  • Creates and schedules posts for Twitter, LinkedIn, Instagram, TikTok, YouTube, Threads, Bluesky, Facebook, Pinterest
  • Generates avatar videos using HeyGen
  • Manages media assets via Cloudinary
  • Integrates with Cornelius (knowledge base agent) to get insights and article content
  • Maintains brand voice consistency across platforms

Key Capabilities

  • Social Media Posting: Direct posting and scheduling via Blotato API
  • Video Production: HeyGen avatar videos → Creatomate conversion → Multi-platform distribution
  • Media Management: Cloudinary uploads for images and videos
  • Content Sourcing: Calls Cornelius in headless mode for perspectives and articles
  • Brand Management: Applies platform-specific tone of voice profiles

Directory Structure

Primary Working Directory: $CONTENT_DIR/

[User] Personal Brand/
├── GeneratedShorts/              # AI-generated video shorts (Ruby's domain)
│   ├── Scripts/                  # HeyGen video scripts
│   ├── Generated/                # Generated videos (pre-publishing)
│   └── Published/                # Published videos by platform
│       ├── instagram/
│       ├── tiktok/
│       ├── youtube/
│       └── linkedin/
│
├── Content/                      # Long-form content (READ-ONLY for Ruby)
│   └── MM.YYYY/                 # Monthly folders
│       └── [Topic]/             # Topic-based folders
│
├── Prompts/                     # Tone of voice profiles
│   ├── [User]_LinkedIn_Tone_of_Voice_Profile.md
│   ├── [User]_Twitter_Tone_of_Voice_Profile.md
│   └── [User]_Text_Post_Tone_of_Voice_Profile.md
│
├── AI Avatars/                  # Avatar assets for HeyGen
└── [User] Pictures To Use/      # Brand imagery

Ruby Agent Location: ./

Ruby/
└── .claude/
    ├── agents/        # Sub-agents (social-media-manager, video-editor, etc.)
    ├── commands/      # Ruby commands (post-now, create-video, etc.)
    └── skills/        # Blotato posting skill

Quick Start

Post to Social Media Now

/post-now twitter text "Just shipped a new feature for our AI agents 🚀"

Schedule a Post

/schedule-post "tomorrow at 9am" linkedin text "New article: Why companies resist AI adoption. Link in comments."

Create Avatar Video

/create-video "The psychology of AI resistance" "script.md" linkedin

Get Perspective from Cornelius

/get-perspective "AI agent adoption barriers"

Generate Full Article

/create-article "Why smart companies resist AI adoption" linkedin professional

Integration with Cornelius

Ruby calls Cornelius in headless mode to access [User]'s knowledge base:

Get Brief Perspective (1-3 paragraphs):

cd $CORNELIUS_AGENT_DIR
claude -p "What's [User]'s unique perspective on [topic]? Cite specific permanent notes." --output-format json

Generate Full Article:

cd $CORNELIUS_AGENT_DIR
claude -p "/create-article-from-topic '[topic]' linkedin professional" --output-format json

Response structure:

{
  "result": "[Content text with [[permanent note]] citations]",
  "total_cost_usd": 0.45,
  "session_id": "..."
}

Typical Workflows

1. Quick Social Post

User: "Post to Twitter about our new AI feature"

Ruby:
1. Drafts tweet (within 280 chars)
2. /post-now twitter text "[Tweet content]"
3. Returns published post URL

2. LinkedIn Article + Post

User: "Write and post an article about AI adoption barriers"

Ruby:
1. /create-article "AI adoption barriers" linkedin
   → Calls Cornelius, gets full article with note citations
2. Reviews article with user
3. /post-now linkedin text "[Article content]"

3. Video + Multi-Platform Distribution

User: "Create video about dopamine and social media, post everywhere"

Ruby:
1. /get-perspective "dopamine and social media"
   → Calls Cornelius for insights
2. Writes script, saves to GeneratedShorts/Scripts/dopamine-social-media-2025-11-14.md
3. /create-video "Dopamine Economy" "script.md" all
   → HeyGen → Creatomate → GeneratedShorts/Generated/ → Cloudinary
4. /post-now tiktok video "[URL]" caption "[Text]"
5. /post-now instagram video "[URL]" caption "[Text]"
6. /post-now youtube video "[URL]" title "[Title]"
7. Archives published videos to GeneratedShorts/Published/[platform]/

4. Content Calendar Planning

User: "Plan this week's content"

Ruby:
1. Checks GeneratedShorts/Scripts/ for prepared scripts
2. Suggests posting schedule:
   - Monday 9am: LinkedIn article
   - Wednesday 2pm: Twitter thread
   - Friday 10am: TikTok video
3. User approves schedule
4. /schedule-post for each item

Platform Specifications

Twitter

  • Max length: 280 characters
  • Media: 1 video or up to 4 images
  • Tone: Conversational, casual (see [User]_Twitter_Tone_of_Voice_Profile.md)

LinkedIn

  • Max length: 3,000 characters (optimal: 1,200-1,500)
  • Media: 1 video or multiple images
  • Tone: Professional but accessible (see [User]_LinkedIn_Tone_of_Voice_Profile.md)
  • Articles: 800-1,200 words optimal

Instagram

  • Max caption: 2,200 characters
  • Media: 1 video or carousel (up to 10 images)
  • Hashtags: 20-30 relevant
  • Tone: Visual-first, inspirational

TikTok

  • Video: 10-60 seconds optimal
  • Caption: 150 characters
  • Hashtags: 3-5 trending
  • Tone: Authentic, educational-entertainment

YouTube

  • Video: Any length (under 15 min for standard accounts)
  • Title: 60 characters optimal
  • Description: 5,000 characters max
  • Tone: In-depth, educational

Sub-Agents

Ruby has access to specialized sub-agents:

  • social-media-manager: Multi-platform posting strategy
  • video-editor: Creatomate editing workflows
  • video-transformer: Format conversion and optimization
  • ai-ruminator: Content ideation and brainstorming
  • giphy-manager: GIF search and integration
  • gemini-agent: Google Gemini integration for content generation

Commands Reference

Command Purpose Example
/post-now Post immediately /post-now twitter text "Hello world"
/schedule-post Schedule for later /schedule-post "Monday 9am" linkedin text "[content]"
/create-video Generate avatar video /create-video "AI Future" "script.md" youtube
/upload-media Upload to Cloudinary /upload-media "/path/to/video.mp4"
/get-perspective Get Cornelius insights /get-perspective "AI adoption barriers"
/create-article Generate full article /create-article "AI resistance" linkedin

Configuration

MCP Servers

  • Blotato: Social media posting API (configured)
  • HeyGen: Avatar video generation (needs API key)
  • Cloudinary: Media management (configured: dn9cy1pve)

Tone of Voice Profiles

Located in: $CONTENT_DIR/Prompts/

  • [User]_LinkedIn_Tone_of_Voice_Profile.md
  • [User]_Twitter_Tone_of_Voice_Profile.md
  • [User]_Text_Post_Tone_of_Voice_Profile.md

HeyGen Avatars

  • Primary: d682534004b0414f86a32c812695cc83 (striped shirt, coworking)
  • Voice: 34971779749d4cb5bf36f1e67a2a6fc6 (casual, conversational)

Troubleshooting

Blotato API Errors

  • Check API key in .claude/skills/blotato-posting/config.json
  • Verify endpoint: https://blotato.com/api/v1/
  • Check platform account IDs in config

HeyGen Video Failures

  • Verify avatar ID and voice ID
  • Check script length (recommended: 100-500 words for 30-second videos)
  • Ensure account has sufficient credits
  • Test with shorter scripts first

Cornelius Headless Calls

  • Verify working directory: $CORNELIUS_AGENT_DIR
  • Check session logs: ~/.claude/debug/{session-id}.txt
  • Ensure JSON output format specified
  • Set appropriate timeout for complex queries

File Organization

  • Scripts → GeneratedShorts/Scripts/[topic]-[date].md
  • Generated videos → GeneratedShorts/Generated/[topic]-[date]-vertical.mp4
  • Published videos → GeneratedShorts/Published/[platform]/[topic]-[date].mp4

Best Practices

  1. Always apply tone of voice profiles from Prompts/ before posting
  2. Cite permanent notes when using Cornelius-generated content
  3. Archive published videos to GeneratedShorts/Published/[platform]/
  4. Test video generation before bulk production
  5. Review scheduled posts before batch scheduling
  6. Use descriptive filenames with topic and date for easy tracking

Integration Points

  • Cornelius: Knowledge base and article generation (headless mode)
  • Blotato API: Multi-platform social media posting
  • HeyGen API: Avatar video generation
  • Creatomate API: Video format conversion
  • Cloudinary API: Media hosting and management
  • [User] Personal Brand: Tone profiles and brand assets

Future Enhancements

  • Auto-suggest posting schedule based on engagement patterns
  • A/B test different content variations
  • Analytics integration for performance tracking
  • Automated video thumbnail generation
  • Cross-platform content repurposing
  • Content calendar visualization

For detailed command documentation, see .claude/commands/ directory. For sub-agent capabilities, see .claude/agents/ directory. For Blotato API details, see .claude/skills/blotato-posting/

About

Ruby - Social Media Manager Agent (GitHub-native deployment)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published