Chapter 3: Cross-Platform Posting
"Hongik Ingan: Write once, reach everyone, everywhere."
3.1 The Posting Problem
Without Cross-Platform Posting
==============================
To share a photo:
1. Open Instagram, upload, write caption
2. Open Twitter, upload again, rewrite caption
3. Open Threads, upload again, rewrite again
4. Open TikTok, different format needed
5. Open Bluesky, upload again...
Time spent: 30+ minutes
Different formats needed for each.
Different character limits.
Different hashtag strategies.
This is exhausting.
3.2 Write Once, Post Everywhere
With WIA-SOCIAL
===============
await social.post({
content: {
text: 'Amazing sunset today!',
media: [sunsetPhoto]
},
targets: ['instagram', 'twitter', 'threads', 'bluesky']
});
Result:
[OK] Instagram: Posted with #sunset #nature
[OK] Twitter: Posted (280 chars)
[OK] Threads: Posted
[OK] Bluesky: Posted with alt text
Time spent: 30 seconds
One action, four platforms.
Universal Post Structure
interface UniversalPost {
content: {
text: string; // Your message
media?: MediaRef[]; // Photos, videos
poll?: Poll; // Polls
location?: Location; // Location tag
link?: Link; // Link preview
};
targets: Platform[]; // Where to post
options?: {
visibility?: Visibility;
schedule?: Timestamp;
thread?: boolean;
replyTo?: PostId;
};
}
3.3 Platform Optimization
Automatic Optimization
======================
Each platform has different requirements.
WIA-SOCIAL handles them automatically.
Your post:
"Had an amazing day at the beach!
The sunset was incredible.
#beach #sunset #summer #vacation"
Instagram:
- Photo with filters suggested
- 30 hashtags added based on content
- Location tag suggested
- Stories version available
Twitter:
- Truncated to 280 characters if needed
- Key hashtags kept (max 3-4)
- Thread created if too long
TikTok:
- Video format suggested
- Trending sounds matched
- Vertical crop suggested
Bluesky:
- Alt text auto-generated for images
- No character worries (300 limit)
- Clean formatting
Threads:
- Instagram cross-post option
- Text-first format
Custom Optimization
// Override auto-optimization
await social.post({
content: {
text: 'Check out my new blog post!'
},
targets: ['instagram', 'twitter', 'linkedin'],
// Custom per-platform
platformOverrides: {
instagram: {
hashtags: ['#blog', '#writing', '#tech'],
carousel: [image1, image2, image3]
},
twitter: {
text: 'New blog post is live! Link in bio.',
includeLink: true
},
linkedin: {
text: `I'm excited to share my thoughts on...
[full professional version]`
}
}
});
3.4 Media Handling
Automatic Media Conversion
==========================
You upload: 4K photo (4000x3000)
Automatic conversions:
Instagram: 1080x1080 (square) or 1080x1350 (portrait)
Twitter: 1200x675 (landscape optimized)
TikTok: 1080x1920 (vertical)
Bluesky: Original + compressed
Video handling:
Input: 4K MOV file
Instagram: MP4, max 60 sec for feed
Twitter: MP4, max 2:20
TikTok: MP4, 9:16 aspect, max 10 min
YouTube: Full quality upload
Code Example
============
const result = await social.post({
content: {
media: [
{
type: 'video',
file: myVideo,
caption: 'Check this out!',
thumbnail: customThumbnail
}
]
},
targets: ['instagram', 'tiktok', 'youtube'],
mediaOptions: {
autoOptimize: true,
preserveQuality: 'youtube', // keep full quality for YouTube
addWatermark: false
}
});
3.5 Scheduling
Schedule Posts
==============
// Single scheduled post
await social.schedule({
content: {
text: 'Good morning everyone!'
},
targets: ['instagram', 'twitter'],
scheduledAt: '2025-01-20T09:00:00Z'
});
// Different times per platform
await social.schedule({
content: {
text: 'Big announcement coming!'
},
schedulePerPlatform: {
instagram: '2025-01-20T12:00:00Z', // Noon
twitter: '2025-01-20T09:00:00Z', // Morning
linkedin: '2025-01-20T08:00:00Z' // Business hours
}
});
// Optimal time suggestion
const optimalTimes = await social.getOptimalPostTimes({
platforms: ['instagram', 'twitter'],
timezone: 'Asia/Seoul'
});
// Returns:
{
instagram: ['12:00', '19:00', '21:00'],
twitter: ['09:00', '12:00', '18:00']
}
3.6 Threads and Long-Form
Thread Posting
==============
// Create a thread
await social.postThread({
posts: [
{ text: '1/ Let me tell you a story...' },
{ text: '2/ It all started when...' },
{ text: '3/ And then something amazing happened...' },
{ text: '4/ The lesson I learned was...' }
],
targets: ['twitter', 'threads', 'bluesky']
});
// Each platform handles threading its own way
// Twitter: Reply chain
// Threads: Connected posts
// Bluesky: Thread structure
Long-Form Content
=================
// For long articles
await social.post({
content: {
text: longArticleText, // 5000 words
link: articleUrl
},
targets: ['twitter', 'linkedin', 'medium'],
longFormOptions: {
twitter: 'thread', // Convert to thread
linkedin: 'article', // Post as article
medium: 'full' // Full post
}
});
3.7 Engagement Tracking
Cross-Platform Analytics
========================
// Get engagement for a post
const stats = await social.getPostStats(postId);
Result:
{
postId: 'wia:post:12345',
totalReach: 15420,
totalEngagement: 892,
byPlatform: {
instagram: {
likes: 450,
comments: 32,
shares: 12,
reach: 8500
},
twitter: {
likes: 120,
retweets: 45,
replies: 18,
reach: 4200
},
bluesky: {
likes: 55,
reposts: 8,
reach: 2720
}
},
topPerforming: 'instagram',
suggestion: 'Post more visual content for best engagement'
}
3.8 Intent-Based Posting
Father (INTENT) Integration
===========================
// Natural language posting
await social.postWithIntent(`
Share my lunch photo with close friends.
Something casual and fun.
Don't include my location.
`);
// WIA-SOCIAL interprets:
{
content: { text: 'Yummy lunch!', media: [lunchPhoto] },
targets: ['instagram'],
visibility: 'close_friends',
privacy: { stripLocation: true },
tone: 'casual'
}
// Another example
await social.postWithIntent(`
Announce my new job to professional contacts.
Formal tone, all business platforms.
`);
// Interprets as:
{
content: { text: 'Excited to announce...' },
targets: ['linkedin', 'twitter'],
visibility: 'public',
tone: 'professional'
}
Chapter Summary
- [OK] Write once, post to all platforms simultaneously
- [OK] Automatic optimization for each platform's requirements
- [OK] Media converted to appropriate formats automatically
- [OK] Scheduling with optimal time suggestions
- [OK] Thread support for long-form content
- [OK] Unified engagement tracking across platforms
- [OK] Intent-based posting with natural language