typefully
Typefully Social Media Management Skill
Overview
This skill enables Claude to interact with the Typefully API v2 for professional social media management. Typefully is a platform for drafting, scheduling, and analyzing social media content across multiple accounts and platforms.
Supported Platforms:
- X (Twitter) - Tweets and threads
- LinkedIn - Professional posts
- Threads - Meta's text-based platform
- Bluesky - Decentralized social network
- Mastodon - Federated social platform
Key Capabilities:
- Create drafts and scheduled posts
- Multi-platform publishing from a single draft
- Cross-post content to multiple accounts with unique adaptations
- Retrieve analytics and engagement data
- Manage multiple social media accounts through a unified interface
- Safety-first approach with draft-only mode by default
When to Use This Skill
Use this skill when:
- Creating posts for X, LinkedIn, Threads, or Bluesky
- Scheduling social media content for future publication
- Cross-posting announcements to multiple accounts
- Publishing the same content to multiple platforms simultaneously
- Retrieving social media analytics and performance data
- Managing social media workflows programmatically
Example triggers:
- "Create a Twitter thread about [topic] for my personal account"
- "Post this announcement to both X and LinkedIn"
- "Schedule this post for tomorrow at 2pm"
- "Cross-post this to my company and personal accounts with appropriate adaptations"
- "Show me last week's analytics"
Setup and Configuration
Initial Setup
-
Obtain Typefully API Keys:
- Log into Typefully dashboard (https://typefully.com)
- Navigate to Settings > Integrations
- Generate an API key for each social media account
- Note: API keys inherit permissions from your user account
-
Configure the Skill:
- Create a
.envfile in the skill directory - Add API keys using the format:
TYPEFULLY_API_KEY_<ACCOUNT_NAME>=your_key_here - Create a
config.jsonfile for global settings
- Create a
-
Example Configuration:
.env:
TYPEFULLY_API_KEY_PERSONAL=your_personal_account_key
TYPEFULLY_API_KEY_COMPANY=your_company_account_key
TYPEFULLY_API_KEY_PROJECT=your_project_account_key
config.json:
{
"scheduling_enabled": false,
"default_platforms": ["x"],
"default_share": true
}
Safety Settings
Draft-Only Mode (Default):
scheduling_enabled: falsecreates drafts without auto-scheduling- Allows human review before publication
- Recommended until confidence in content quality is established
Enable Scheduling:
- Set
scheduling_enabled: trueinconfig.json - Only enable after validating draft quality
- Requires PUBLISH permission on API key
Core Workflows
Workflow 1: Create Draft for Single Account
Use Case: Draft a post for review before publishing
Process:
- Use
scripts/typefully_client.pyto interact with the API - Load account configuration from
.env - Create draft using TypefullyManager
- Review draft in Typefully dashboard
- Manually schedule or publish from dashboard
Example:
from typefully_client import TypefullyManager
manager = TypefullyManager()
# Create draft for review (X only)
result = manager.create_draft(
account="personal",
content="Your tweet content here.\n\n\n\nSecond tweet in thread.",
platforms=["x"],
schedule=False
)
print(f"Edit draft: {result['edit_url']}")
Command-line usage:
python scripts/typefully_client.py create-draft \
--account personal \
--content "Your tweet content" \
--platforms x
Response:
{
"id": "draft_abc123",
"status": "draft",
"edit_url": "https://typefully.com/?d=draft_abc123",
"share_url": "https://typefully.com/share/abc123",
"scheduled_date": null
}
Workflow 2: Multi-Platform Publishing
Use Case: Post the same announcement to X and LinkedIn
Example:
manager = TypefullyManager()
result = manager.create_draft(
account="company",
content="Major product update announcement.",
platforms=["x", "linkedin"],
schedule=True,
schedule_date="next-free-slot"
)
Command-line usage:
python scripts/typefully_client.py create-draft \
--account company \
--content "Major product update" \
--platforms x linkedin \
--schedule
Notes:
- The same content is posted to all specified platforms
- Platform-specific formatting is handled by Typefully
- LinkedIn posts work best with longer, more professional content
Workflow 3: Schedule Post (When Enabled)
Use Case: Schedule content for future publication
Prerequisites:
scheduling_enabled: trueinconfig.json- API key has PUBLISH permission
Process:
manager = TypefullyManager()
result = manager.create_draft(
account="company",
content="Scheduled announcement content",
platforms=["x"],
schedule=True,
schedule_date="2024-12-20T14:30:00Z" # ISO format or "next-free-slot"
)
Scheduling Options:
"now"- Publish immediately"next-free-slot"- Use Typefully's optimal timing- ISO-8601 datetime - Specific time (e.g.,
"2024-12-20T14:30:00Z")
Workflow 4: Cross-Post to Multiple Accounts
Use Case: Publish the same announcement across multiple accounts with unique content for each
Process:
- Prepare content variations for each account
- Create a JSON file mapping accounts to content
- Use the cross-post functionality
Example content map (content.json):
{
"personal": "Excited to share: we just launched our new feature! Check it out:",
"company": "Introducing our latest product update with enhanced capabilities:"
}
Execute cross-post:
manager = TypefullyManager()
content_map = {
"personal": "Casual, personal tone announcement",
"company": "Professional, formal announcement"
}
results = manager.cross_post(
accounts=["personal", "company"],
content_map=content_map,
platforms=["x"],
schedule=False
)
for account, result in results.items():
print(f"{account}: {result.get('edit_url', result.get('error'))}")
Command-line usage:
python scripts/typefully_client.py cross-post \
--accounts personal company \
--content-json content.json \
--platforms x
Workflow 5: Retrieve Analytics
Use Case: Get performance data for recently published content
Process:
manager = TypefullyManager()
analytics = manager.get_analytics(account="personal", limit=20)
print(f"Published: {analytics['stats']['published_count']}")
print(f"Scheduled: {analytics['stats']['scheduled_count']}")
Command-line usage:
python scripts/typefully_client.py get-analytics \
--account personal \
--limit 20
Workflow 6: List Drafts by Status
Use Case: View all scheduled or draft posts
Draft Status Values:
draft- Saved but not scheduledscheduled- Queued for future publicationpublishing- Currently being postedpublished- Successfully postederror- Publication failed
Command-line:
# List all scheduled drafts
python scripts/typefully_client.py get-drafts \
--account personal \
--status scheduled
# List all drafts (any status)
python scripts/typefully_client.py get-drafts \
--account personal \
--limit 50
Workflow 7: View Social Sets (Connected Platforms)
Use Case: See which platforms are connected for an account
Command-line:
python scripts/typefully_client.py list-social-sets --account personal
Response shows connected platforms:
Social sets for personal:
- social_set_abc123: My Account
x: @myhandle (connected)
linkedin: (connected)
threads: (not connected)
Thread Formatting
Creating Multi-Tweet Threads
Use 4 consecutive newlines (\n\n\n\n) to separate tweets in a thread:
content = """First tweet in the thread
Second tweet with more details
Third tweet wrapping up"""
manager.create_draft(account="personal", content=content, platforms=["x"])
The Python client automatically converts this to the API's posts array format.
Integration with Other Skills
This skill can be integrated with other content creation and brand management workflows:
Content Creation Pipeline:
- Generate content using content creation agents
- Validate with brand voice guidelines
- Create Typefully draft for review
- Manually approve and schedule (or auto-schedule if enabled)
Multi-Brand Management:
- Adapt content for different brand voices
- Use cross-post with unique content per account
- Maintain consistent messaging with appropriate tone
Analytics and Reporting:
- Retrieve performance data via analytics
- Generate reports on engagement
- Inform future content strategy
API Reference
For detailed API documentation, load references/typefully_api.md which includes:
- Complete v2 endpoint specifications
- Request/response formats with examples
- Multi-platform content structure
- Webhook events and verification
- Error handling guidance
- Migration notes from v1
Load reference when:
- Debugging API issues
- Implementing custom functionality
- Understanding response structures
- Setting up webhooks
Error Handling
The client provides clear, user-friendly error messages:
- 401 Unauthorized: "Invalid API key. Check your configuration and regenerate if needed."
- 403 Forbidden: "API key doesn't have permission for this operation."
- 429 Rate Limit: "Rate limit exceeded. Please wait before trying again."
- 400 Bad Request: Detailed error message with specific parameter issues
Common issues and solutions:
Account Not Found:
- Verify
.envfile containsTYPEFULLY_API_KEY_<ACCOUNT>=key - Check account name matches exactly (case-insensitive in manager)
- Run
list-accountsto see configured accounts
Scheduling Disabled Warning:
- Expected when
scheduling_enabled: false - Draft created for manual review
- Enable in
config.jsononly when ready
No Social Sets Available:
- Connect at least one platform in Typefully dashboard
- Verify API key is for correct Typefully account
Platform Not Connected:
- The specified platform isn't connected in Typefully
- Only enabled platforms will receive posts
Best Practices
-
Start with Draft Mode:
- Keep
scheduling_enabled: falseinitially - Review drafts in Typefully dashboard
- Enable scheduling only after validating quality
- Keep
-
Multiple Accounts:
- Use descriptive account names in
.env - Maintain separate API keys per account
- Organize content_map clearly for cross-posting
- Use descriptive account names in
-
Multi-Platform Strategy:
- X for quick updates and threads
- LinkedIn for professional announcements
- Test platform connections before important posts
-
Content Quality:
- Validate content before creating drafts
- Use brand voice guidelines for multi-account scenarios
- Test with personal accounts before company accounts
-
Error Resilience:
- Handle API errors gracefully
- Fall back to draft mode on scheduling failures
- Check rate limits when batch posting
CLI Commands Reference
# Create draft
python scripts/typefully_client.py create-draft \
--account ACCOUNT \
--content "Content" \
--platforms x linkedin \
--schedule \
--schedule-date "next-free-slot" \
--title "Draft Title" \
--tags tag1 tag2
# Cross-post to multiple accounts
python scripts/typefully_client.py cross-post \
--accounts account1 account2 \
--content-json content.json \
--platforms x \
--schedule
# List drafts
python scripts/typefully_client.py get-drafts \
--account ACCOUNT \
--status scheduled \
--limit 20
# Get analytics
python scripts/typefully_client.py get-analytics \
--account ACCOUNT \
--limit 20
# List social sets (connected platforms)
python scripts/typefully_client.py list-social-sets --account ACCOUNT
# List configured accounts
python scripts/typefully_client.py list-accounts
# Get user info
python scripts/typefully_client.py get-me --account ACCOUNT
Troubleshooting
Problem: "Account 'xyz' not found"
- Solution: Check
.envfile, verify account name matches configuration
Problem: Scheduling doesn't work despite schedule=True
- Solution: Verify
scheduling_enabled: trueinconfig.json
Problem: API returns 401 Unauthorized
- Solution: Regenerate API key in Typefully dashboard, update
.env
Problem: Cross-post fails for some accounts
- Solution: Check each account's API key separately, ensure all are valid
Problem: Platform not receiving posts
- Solution: Verify platform is connected in Typefully social set
Problem: "No social sets available"
- Solution: Connect at least one platform in Typefully dashboard
For additional support, consult the official Typefully API documentation: https://typefully.com/docs/api