Agent skill
typefully
This skill should be used when managing social media content through Typefully, including creating drafts, scheduling posts, cross-posting to multiple accounts, and multi-platform publishing (X, LinkedIn, Threads, Bluesky, Mastodon). Use it for social media management, thread creation, and workflow automation via the Typefully API v2.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/productivity/typefully-synapz-org-typefully-claude-ski
SKILL.md
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
Didn't find tool you were looking for?