"Hongik Ingan: Clear APIs let everyone build on WIA."
NPM Installation
================
npm install @anthropic/wia-social
Or yarn:
yarn add @anthropic/wia-social
Or pnpm:
pnpm add @anthropic/wia-social
Basic Setup
===========
import { WIASocial } from '@anthropic/wia-social';
// Create client
const social = new WIASocial({
identity: {
displayName: 'Hong Gildong',
email: 'hong@example.com'
}
});
// Connect platforms
await social.connectPlatform('instagram', instagramToken);
await social.connectPlatform('twitter', twitterToken);
// Ready to use!
console.log('Connected:', social.connectedPlatforms);
Configuration Options
=====================
const social = new WIASocial({
// Identity
identity: {
displayName: 'Hong Gildong',
email: 'hong@example.com'
},
// Platforms
platforms: ['instagram', 'twitter', 'bluesky'],
// Privacy (Aunt integration)
privacy: {
airShield: {
enabled: true,
mode: 'balanced'
},
defaultVisibility: 'protected'
},
// Sync settings
sync: {
realtime: true,
interval: 60 // seconds
}
});
WIASocial Class
===============
// Static methods
WIASocial.createIdentity(opts) // Create new identity
WIASocial.fromExport(data) // Restore from export
// Instance methods - Connection
social.connectPlatform(platform, token)
social.disconnectPlatform(platform)
social.refreshToken(platform)
// Instance methods - Posting
social.post(content) // Cross-platform post
social.schedule(content, time) // Scheduled post
social.postThread(posts) // Thread post
social.delete(postId) // Delete everywhere
// Instance methods - Feed
social.getFeed(options) // Unified feed
social.subscribeFeed(callback) // Real-time updates
// Instance methods - Social
social.follow(identity) // Follow
social.unfollow(identity) // Unfollow
social.findAcrossPlatforms(query) // Cross-platform search
Properties
==========
social.identity // Current identity
social.connectedPlatforms // Connected platform list
social.stats // Network statistics
Events
======
social.on('feed_updated', callback)
social.on('new_follower', callback)
social.on('new_message', callback)
social.on('privacy_alert', callback)
social.on('platform_connected', callback)
social.on('platform_disconnected', callback)
social.on('error', callback)
Adapter Interface
=================
interface PlatformAdapter {
// Platform info
platform: Platform;
version: string;
capabilities: Capabilities;
// Authentication
authenticate(credentials): Promise<Token>;
refreshToken(token): Promise<Token>;
// Posting
createPost(post): Promise<PostId>;
updatePost(id, post): Promise<void>;
deletePost(id): Promise<void>;
// Feed
getFeed(options): Promise<Post[]>;
convertToUniversal(post): UniversalPost;
// Social
getFollowers(): Promise<User[]>;
getFollowing(): Promise<User[]>;
follow(userId): Promise<void>;
unfollow(userId): Promise<void>;
// Messaging
sendMessage(to, message): Promise<void>;
getMessages(): Promise<Message[]>;
// Data
exportData(): Promise<ExportPackage>;
importData(data): Promise<void>;
}
Built-in Adapters
=================
// Major platforms
import { InstagramAdapter } from '@anthropic/wia-social/adapters/instagram';
import { TwitterAdapter } from '@anthropic/wia-social/adapters/twitter';
import { TikTokAdapter } from '@anthropic/wia-social/adapters/tiktok';
import { FacebookAdapter } from '@anthropic/wia-social/adapters/facebook';
// Decentralized
import { MastodonAdapter } from '@anthropic/wia-social/adapters/mastodon';
import { BlueskyAdapter } from '@anthropic/wia-social/adapters/bluesky';
// Professional
import { LinkedInAdapter } from '@anthropic/wia-social/adapters/linkedin';
Custom Adapter
==============
// Create adapter for new platform
class MyPlatformAdapter implements PlatformAdapter {
platform = 'myplatform';
version = '1.0.0';
async createPost(post: UniversalPost) {
// Convert to platform format
const platformPost = this.convert(post);
// Call platform API
const result = await myPlatformApi.post(platformPost);
return result.id;
}
// ... implement other methods
}
// Register adapter
social.registerAdapter(new MyPlatformAdapter());
ActivityPub Bridge (Mastodon, etc.)
===================================
import { ActivityPubBridge } from '@anthropic/wia-social/protocols';
const bridge = new ActivityPubBridge();
// Convert WIA post to ActivityPub Activity
const activity = bridge.toActivity(universalPost);
// Convert ActivityPub to WIA format
const wiaPost = bridge.fromActivity(activity);
AT Protocol Bridge (Bluesky)
============================
import { ATProtocolBridge } from '@anthropic/wia-social/protocols';
const bridge = new ATProtocolBridge();
// Convert to AT Protocol record
const record = bridge.toRecord(universalPost);
// Convert from AT Protocol
const wiaPost = bridge.fromRecord(record);
RSS Bridge
==========
import { RSSBridge } from '@anthropic/wia-social/protocols';
const bridge = new RSSBridge();
// Export as RSS feed
const rssFeed = bridge.toFeed(posts);
// Import from RSS
const posts = bridge.fromFeed(rssFeed);
Open Graph
==========
import { OpenGraphBridge } from '@anthropic/wia-social/protocols';
// Generate OG tags for post
const ogTags = OpenGraphBridge.generateTags(post);
// Extract metadata from URL
const metadata = await OpenGraphBridge.extractMetadata(url);
Father (INTENT) Integration
===========================
import { Intent } from '@anthropic/wia-intent';
import { WIASocial } from '@anthropic/wia-social';
const father = new Intent();
const social = new WIASocial();
// Intent-based posting
const intent = await father.express(`
Share my lunch photo with close friends.
Casual tone, no location.
`);
// SOCIAL processes the intent
await social.executeIntent(intent);
Mother (OMNI-API) Integration
=============================
import { OmniApi } from '@anthropic/wia-omni-api';
// OMNI-API handles all platform APIs
const mother = new OmniApi();
// SOCIAL uses OMNI-API for unified access
social.setApiLayer(mother);
Aunt (AIR-SHIELD) Integration
=============================
import { AirShield } from '@anthropic/wia-air-shield';
const aunt = new AirShield({ mode: 'balanced' });
// Enable privacy protection
social.setPrivacyGuard(aunt);
// Now all posts are scanned
await social.post({
content: myContent
// Aunt automatically scans before posting
});
Uncle (AIR-POWER) Integration
=============================
import { AirPower } from '@anthropic/wia-air-power';
// Ensure posting even on low battery
const uncle = new AirPower();
social.setPowerManager(uncle);
// Uncle ensures reliable delivery
await social.post({
content: { text: 'Important update!' },
priority: 'high' // Uncle prioritizes
});
Full Family Example
===================
import { Intent } from '@anthropic/wia-intent';
import { OmniApi } from '@anthropic/wia-omni-api';
import { AirPower } from '@anthropic/wia-air-power';
import { AirShield } from '@anthropic/wia-air-shield';
import { WIASocial } from '@anthropic/wia-social';
// The WIA Family
const family = {
father: new Intent(),
mother: new OmniApi(),
uncle: new AirPower(),
aunt: new AirShield(),
nephew: new WIASocial()
};
// Configure nephew with family
family.nephew.setFamily(family);
// Intent-based secure posting
await family.father.express(`
Announce my new job to professional contacts.
Hide my salary details.
`);
// Flow:
// 1. Father understands intent
// 2. Aunt scans for privacy (salary)
// 3. Mother routes to APIs
// 4. Uncle ensures delivery
// 5. Nephew posts to LinkedIn, Twitter
Full Type Definitions
=====================
import {
WIASocial,
UniversalIdentity,
UniversalPost,
UnifiedFeed,
Platform,
PrivacySettings,
PlatformAdapter
} from '@anthropic/wia-social';
// All methods fully typed
const social = new WIASocial(config);
// Type-safe posting
const post: UniversalPost = {
content: {
text: 'Hello!',
media: []
},
targets: ['instagram', 'twitter']
};
await social.post(post);
// Type-safe feed
const feed: UnifiedFeed = await social.getFeed({
sorting: 'chronological'
});
// TypeScript catches errors
await social.post({
content: { text: 'Hello!' },
targets: ['invalid_platform'] // Error!
});
Level 1: Basic
==============
class BasicSocialBridge {
// Required
async getUnifiedFeed(): Promise<UniversalPost[]>;
async crossPost(content, platforms): Promise<void>;
async getProfile(): Promise<UniversalIdentity>;
}
Level 2: Standard
=================
class StandardSocialBridge extends BasicSocialBridge {
// + Social Graph
socialGraph: SocialGraphAPI;
// + Messaging
messaging: MessagingAPI;
// + Data Portability
portability: DataPortability;
// + Privacy
privacy: PrivacyFeatures;
}
Level 3: Full
=============
class FullSocialBridge extends StandardSocialBridge {
// + Family Integration
family: WIAFamily;
// + Analytics
analytics: SocialAnalytics;
// + AI Features
recommendations: AIRecommendations;
// + Protocol Bridges
protocols: ProtocolBridges;
}
WIA-SOCIAL provides a complete platform for unifying your social media presence. Cross-platform posting, unified feeds, portable data, and privacy protection all work together to give you control over your digital social life.
Following the Hongik Ingan philosophy, WIA-SOCIAL ensures that everyone can connect freely without being locked into any single platform.
Nephew's Promise: Uncle and Aunt are great, but connection is power in today's world! 1. I'll connect you anywhere 2. Your data is yours, I'll protect it 3. No more platform lock-in 4. New SNS? I'll connect it right away 5. I learned from Aunt - safety first! All roads led to Rome, All SNS lead to WIA. - Nephew (WIA-SOCIAL) -
Previous: Chapter 7 - Data Portability | Back to Table of Contents