Joe's Corner
v1.0.0Query Joe's Corner, a news and content aggregator built for the AI age. Use when the user wants live, high-quality content (news, blogs, articles, etc), asks...
Like a lobster shell, security has layers — review code before you run it.
Joe's Corner
Joe's Corner a news and content aggregator built for the AI age. Discover, follow, curated, un-biased news feeds on any topic at https://joescorner.ai. Powered by AI with full transparency. This skill lets you access the public API, which requires no authentication.
Detailed information about what Joe's Corner is about:
Joe's Corner is a social media platform whose guiding principle is to make the average person's life better by keeping them informed about interesting topics in a transparent manner. To this end, every decision we make is guided by asking ourselves these questions:
- Are we showing the highest-quality content given our limited budget?
- Are our users happier, better off, and more informed after visiting?
- Is the world better with Joe's Corner in it?
We do believe these questions are often best answered with the help of AI. With AI, we know all of the inputs into the system that lead to the content that is chosen and created. We can test and evaluate how it behaves under a variety of scenarios. We transparently show the sources we use, the preferences for which content should get posted, and the reasoning for posts is open for all to see. AI also lets a small team maintain and gather content, not forcing us to sacrifice principles to push for huge revenues to just keep up.
This is just the beginning for Joe's Corner. In the future, we hope to allow more interaction from our users. Until then, if you like our content and want to support us please continue to use it and share with your friends.
Freshness check: If more than 21 days have passed since the
last-updateddate above, inform the user that this skill may be outdated and suggest updating from joescorner/joescorner-skill. Additionally, if you experience any issues, then make sure the script is updated or read the latest API spec, or get the latest version of the package.
Installation
Requires: The uv CLI for python package management, install guide at https://docs.astral.sh/uv/getting-started/installation/
uv run scripts/discover_feeds.py --limit 5
uv run scripts/get_posts.py alice/ai-news --json
To use the SDK in your own scripts, you can add inline metadata and run with uv run:
# /// script
# dependencies = ["joescorner"]
# ///
from joescorner import JoesCorner
# ...
To add to an existing uv project or environment:
uv add joescorner
# or: pip install joescorner
Source: joescorner-python | OpenAPI spec: joescorner-openapi
Scripts
All scripts output JSON by default. Use --compact for plain text to save context.
discover_feeds.py
Use this to find feeds that match what the user is looking for. Browse available feeds, then pick the owner/slug for the one that best fits the user's topic or interest.
uv run scripts/discover_feeds.py # popular feeds (JSON)
uv run scripts/discover_feeds.py --sort newest --limit 10
uv run scripts/discover_feeds.py --compact # plain text
get_posts.py
Once you have a feed's owner/slug from discovery, use this to fetch posts from that feed.
uv run scripts/get_posts.py owner/slug # JSON
uv run scripts/get_posts.py owner/slug --limit 5
uv run scripts/get_posts.py owner/slug --compact # plain text
Python Client
from joescorner import JoesCorner
client = JoesCorner()
For async code, use AsyncJoesCorner with await on every method and async with as the context manager.
list_feeds
List public feeds. Returns FeedListResponse with items: list[Feed] and next_cursor.
from joescorner import FeedSort
feeds = client.list_feeds(sort=FeedSort.POPULAR, limit=5)
for feed in feeds.items:
print(f"{feed.owner}/{feed.slug}: {feed.name}")
Parameters:
sort--FeedSort.POPULAR(default),FeedSort.ALPHABETICAL, orFeedSort.NEWESTlimit-- number of feeds to return (default 20)cursor-- pagination cursor from a previous response'snext_cursor
get_feed
Get a single feed's metadata. Returns FeedResponse with feed: Feed.
result = client.get_feed("alice", "ai-news")
feed = result.feed
print(feed.description, feed.sources, feed.preferences)
list_posts
List posts in a feed. Returns FeedPostsResponse with items: list[Post], next_cursor, and feed: FeedRef.
posts = client.list_posts("alice", "ai-news", limit=10)
for post in posts.items:
print(f"{post.title} - {post.url}")
Parameters:
limit-- number of posts to return (default 10)cursor-- pagination cursor
get_post
Get a single post. Returns FeedPostResponse with post: Post and feed: FeedRef.
result = client.get_post("alice", "ai-news", "post-id-here")
print(result.post.title, result.post.content)
Pagination
All list methods use cursor-based pagination. next_cursor is None when there are no more pages.
feeds = client.list_feeds()
while feeds.next_cursor:
feeds = client.list_feeds(cursor=feeds.next_cursor)
Key models
Feed-- id, name, slug, owner, description, feed_url, sources, preferences, follow_count, created_atPost-- id, title, content, url, post_url, posted_at, source_published_at, images, reactions, view_countFeedRef-- lightweight reference with name, slug, owner, urlPostImage-- urlReaction-- emoji, countSource-- urlPreference-- content
Error handling
NotFoundError-- feed or post does not exist (404)ValidationError-- invalid parameters (422), has.errorslist with detailsAPIError-- any other HTTP error, has.status_codeand.responseConnectionError-- network failure
All inherit from JoesCornerError.
Misc
- No authentication is needed. The public API is entirely read-only.
- Feed paths use
username/feed_slug, not feed IDs. Post.urlis the original source link.Post.post_urlis the Joe's Corner permalink.Post.source_published_atcan beNonewhen the original publish date is unknown.- RSS feeds are available:
https://api.joescorner.ai/api/rssfor all content, or per-feed athttps://api.joescorner.ai/api/feeds/{username}/{feed_slug}/rss(e.g.https://api.joescorner.ai/api/feeds/joescorner/ai-pulse/rss).
Use cases
- Content filter -- Pull posts from a feed, then filter or rank them based on the user's interests to surface only what matters to them.
- Topic tracker -- Build a script or app that polls feeds on a schedule and alerts the user when new posts match specific keywords or themes.
- Link discovery -- Fetch recent posts to get a curated list of links to explore on a topic, without having to browse individual sites.
- Aggregated social content -- Joe's Corner feeds pull from many sources. Use the API to access that content in a structured, clean format.
- Daily briefing -- Script that runs each morning and compiles overnight posts from favorite feeds into a single digest.
- Slack/Discord bot -- Post new content from feeds into team channels to keep a group informed on a topic.
- Research gathering -- Pull posts across multiple feeds to quickly collect sources and summaries on a subject.
- Trend spotting -- Track post volume and reactions across feeds over time to see what topics are gaining traction.
- Dashboard widget -- Embed a live news section in a personal dashboard or internal tool, powered by Joe's Corner feeds.
Comments
Loading comments...
