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>

Changed files
+7
aggregators
kagi-news
+6
aggregators/kagi-news/src/coves_client.py
···
community_handle: str,
content: str,
facets: List[Dict],
embed: Optional[Dict] = None
) -> str:
"""
···
community_handle: Community handle (e.g., "world-news.coves.social")
content: Post content (rich text)
facets: Rich text facets (formatting, links)
embed: Optional external embed
Returns:
···
"content": content,
"facets": facets
}
# Add embed if provided
if embed:
···
community_handle: str,
content: str,
facets: List[Dict],
+
title: Optional[str] = None,
embed: Optional[Dict] = None
) -> str:
"""
···
community_handle: Community handle (e.g., "world-news.coves.social")
content: Post content (rich text)
facets: Rich text facets (formatting, links)
+
title: Optional post title
embed: Optional external embed
Returns:
···
"content": content,
"facets": facets
}
+
+
# Add title if provided
+
if title:
+
post_data["title"] = title
# Add embed if provided
if embed:
+1
aggregators/kagi-news/src/main.py
···
try:
post_uri = self.coves_client.create_post(
community_handle=feed_config.community_handle,
content=rich_text["content"],
facets=rich_text["facets"],
embed=embed
···
try:
post_uri = self.coves_client.create_post(
community_handle=feed_config.community_handle,
+
title=story.title,
content=rich_text["content"],
facets=rich_text["facets"],
embed=embed