Chapter 4: Unified Feed

"Hongik Ingan: All your connections, one stream."

4.1 The Fragmented Feed Problem

Current Reality
===============

Morning routine:
  1. Open Instagram - scroll for 10 min
  2. Open Twitter - scroll for 10 min
  3. Open TikTok - scroll for 15 min
  4. Open Threads - scroll for 5 min
  5. Open Bluesky - scroll for 5 min

Total: 45 minutes
Missed posts: Many (algorithms decide)
Context switching: Exhausting
Important updates: Possibly missed

The problem:
  - Each app shows what IT wants you to see
  - Friends' posts hidden by algorithms
  - No chronological option on most platforms
  - Duplicates across platforms

4.2 One Feed, All Platforms

WIA-SOCIAL Unified Feed
=======================

const feed = await social.getFeed({
  sorting: 'chronological',
  platforms: ['instagram', 'twitter', 'tiktok', 'bluesky']
});

Result:
+------------------------------------------+
| UNIFIED FEED                             |
+------------------------------------------+
| [Instagram] @friend1          2 min ago |
| Beautiful sunset photo!                  |
+------------------------------------------+
| [Twitter] @friend2            5 min ago |
| Just shipped a new feature!             |
+------------------------------------------+
| [Bluesky] @friend3.bsky       8 min ago |
| Thoughts on decentralization...          |
+------------------------------------------+
| [TikTok] @friend4            10 min ago |
| [Video] Dance challenge                  |
+------------------------------------------+
| [Twitter] @friend5           12 min ago |
| Hot take: tabs vs spaces                 |
+------------------------------------------+

All platforms, one stream.
Chronological order.
Nothing hidden.

Feed Structure

interface UnifiedFeed {
  posts: UniversalPost[];

  sources: {
    platform: Platform;
    connected: boolean;
    lastSync: Timestamp;
  }[];

  pagination: {
    hasMore: boolean;
    nextCursor: string;
  };

  metadata: {
    fetchedAt: Timestamp;
    totalPosts: number;
    platforms: number;
  };
}

4.3 Sorting Options

Chronological
=============

const feed = await social.getFeed({
  sorting: 'chronological'
});

// Posts in exact time order
// Newest first
// No algorithm interference
// See everything from everyone


Algorithmic
===========

const feed = await social.getFeed({
  sorting: 'algorithmic'
});

// Smart sorting based on:
// - Your engagement history
// - Relationship strength
// - Content relevance
// - Time decay

// Unlike platform algorithms:
// - Transparent ranking factors
// - You control the weights
// - No promoted content


By Engagement
=============

const feed = await social.getFeed({
  sorting: 'engagement'
});

// Sorted by total engagement:
// - Likes + comments + shares
// - Across all platforms
// - See what's trending among friends

4.4 Filtering

Platform Filter
===============

// Only specific platforms
const feed = await social.getFeed({
  filters: {
    platforms: ['instagram', 'bluesky']
  }
});


Content Type Filter
===================

// Only photos
const feed = await social.getFeed({
  filters: {
    contentTypes: ['image']
  }
});

// Only videos
const feed = await social.getFeed({
  filters: {
    contentTypes: ['video']
  }
});

// Text only (no media)
const feed = await social.getFeed({
  filters: {
    contentTypes: ['text']
  }
});


Author Filter
=============

// Specific friends only
const feed = await social.getFeed({
  filters: {
    authors: ['wia:kim.minsu.1234', 'wia:lee.jiyoung.5678']
  }
});


Combined Filters
================

const feed = await social.getFeed({
  sorting: 'chronological',
  filters: {
    platforms: ['instagram', 'twitter'],
    contentTypes: ['image', 'video'],
    dateRange: {
      from: '2025-01-01',
      to: '2025-01-15'
    },
    excludeReposts: true
  }
});

4.5 Real-Time Updates

Subscribe to Feed
=================

// Real-time new posts
const unsubscribe = social.subscribeFeed((post) => {
  console.log('New post from:', post.author.displayName);
  console.log('Platform:', post.platform);
  console.log('Content:', post.content.text);

  // Update your UI
  addToFeed(post);
});

// Later, stop subscription
unsubscribe();


Notifications
=============

// Get notified about specific events
social.on('feed_updated', (event) => {
  console.log('New posts:', event.data.count);
});

social.on('friend_posted', (event) => {
  if (event.data.author.isMutual) {
    showNotification(event.data);
  }
});

4.6 Smart Features

Duplicate Detection
===================

When you cross-post, friends might see:
  - Your Instagram post
  - Your Twitter post (same content)
  - Your Threads post (same content)

WIA-SOCIAL detects this:

const feed = await social.getFeed({
  deduplication: {
    enabled: true,
    strategy: 'keep_first', // or 'keep_best_engagement'
    threshold: 0.9  // similarity threshold
  }
});

Result: Only one version shown


Highlight Important
===================

// Posts from close friends ranked higher
await social.setFeedPreferences({
  prioritize: {
    closeFriends: true,
    mutualFollows: true,
    frequentInteractions: true
  },
  deprioritize: {
    promotedContent: true,
    lowEngagement: false
  }
});


Save for Later
==============

// Bookmark across platforms
await social.bookmark(postId);

// Get all bookmarks
const saved = await social.getBookmarks();
// Unified bookmarks from all platforms

4.7 Unified Interactions

React to Posts
==============

// Like/favorite
await social.react(postId, 'like');

// The reaction goes to the original platform
// Instagram: Like
// Twitter: Like
// Bluesky: Like


Comment
=======

// Comment from unified feed
await social.comment(postId, {
  text: 'Great post!'
});

// Comment goes to original platform


Share/Repost
============

// Repost to your connected platforms
await social.repost(postId, {
  targets: ['twitter', 'bluesky'],
  comment: 'Check this out!'
});


View Unified Reactions
======================

const reactions = await social.getReactions(postId);

Result:
{
  total: 150,
  breakdown: {
    instagram: { likes: 100 },
    twitter: { likes: 30, retweets: 10 },
    bluesky: { likes: 10 }
  }
}

4.8 Feed Customization

Create Custom Feeds
===================

// Tech news feed
const techFeed = await social.createCustomFeed({
  name: 'Tech News',
  sources: {
    platforms: ['twitter', 'bluesky'],
    keywords: ['tech', 'AI', 'startup'],
    authors: [techInfluencers]
  }
});

// Close friends feed
const closeFriendsFeed = await social.createCustomFeed({
  name: 'Close Friends',
  sources: {
    lists: ['close_friends'],
    excludeReposts: true
  }
});


Lists
=====

// Create lists that work across platforms
await social.createList({
  name: 'Work Colleagues',
  members: [
    'wia:kim.minsu.1234',
    'wia:lee.jiyoung.5678'
  ]
});

// Feed from list
const workFeed = await social.getFeed({
  list: 'work_colleagues'
});

Chapter Summary