A community based topic aggregation platform built on atproto

feat(aggregator): add post title support to Kagi News aggregator

- CovesClient.create_post() accepts optional title parameter
- Kagi aggregator now passes story titles to posts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

+7
+6
aggregators/kagi-news/src/coves_client.py
··· 71 community_handle: str, 72 content: str, 73 facets: List[Dict], 74 embed: Optional[Dict] = None 75 ) -> str: 76 """ ··· 80 community_handle: Community handle (e.g., "world-news.coves.social") 81 content: Post content (rich text) 82 facets: Rich text facets (formatting, links) 83 embed: Optional external embed 84 85 Returns: ··· 98 "content": content, 99 "facets": facets 100 } 101 102 # Add embed if provided 103 if embed:
··· 71 community_handle: str, 72 content: str, 73 facets: List[Dict], 74 + title: Optional[str] = None, 75 embed: Optional[Dict] = None 76 ) -> str: 77 """ ··· 81 community_handle: Community handle (e.g., "world-news.coves.social") 82 content: Post content (rich text) 83 facets: Rich text facets (formatting, links) 84 + title: Optional post title 85 embed: Optional external embed 86 87 Returns: ··· 100 "content": content, 101 "facets": facets 102 } 103 + 104 + # Add title if provided 105 + if title: 106 + post_data["title"] = title 107 108 # Add embed if provided 109 if embed:
+1
aggregators/kagi-news/src/main.py
··· 181 try: 182 post_uri = self.coves_client.create_post( 183 community_handle=feed_config.community_handle, 184 content=rich_text["content"], 185 facets=rich_text["facets"], 186 embed=embed
··· 181 try: 182 post_uri = self.coves_client.create_post( 183 community_handle=feed_config.community_handle, 184 + title=story.title, 185 content=rich_text["content"], 186 facets=rich_text["facets"], 187 embed=embed