Medium
Overview
Blogging and publishing platform. Content platform archetype. Search articles, browse topic feeds, discover curated lists, explore writers, clap articles, follow writers, and save bookmarks via Medium's GraphQL API.
Workflows
Browse articles by topic
getRecommendedTags → pick tag → tagSlug
getTagFeed(tagSlug) → posts with postId
getArticle(postId) → full article detail
Search and read
searchArticles(query) → results with titles, URLs
- Pick article URL → extract
postId from URL
getArticle(postId) → full detail
Explore writers for a topic
getTagWriters(tagSlug) → writers/publications with userId, bio, follower count
Discover curated content
getTagCuratedLists(tagSlug) → staff-picked reading lists
- Lists contain posts with
postId → getArticle(postId)
Engage with content (requires login)
getTagFeed(tagSlug) → posts[].postId
clapArticle(postId ← posts[].postId, numClaps?) → clapCount, viewerClapCount (numClaps 1–50, default 1)
saveArticle(postId ← posts[].postId) → catalogItemId
unsaveArticle(postId ← posts[].postId) → adapter resolves postId → catalogItemId via getPredefinedCatalog().itemsConnection, then issues delete
Follow a writer (requires login)
getTagWriters(tagSlug) → writers with userId
followWriter(userId ← getTagWriters) → isFollowing
unfollowWriter(userId) → removes follow
Operations
| Operation |
Intent |
Key Input |
Key Output |
Notes |
| searchArticles |
search articles by keyword |
query |
title, subtitle, url |
DOM extraction; entry point |
| getArticle |
get full article detail |
postId ← getTagFeed/searchArticles |
title, author, claps, readingTime, isLocked |
GraphQL PostDetailQuery |
| getTagFeed |
latest articles for a tag |
tagSlug |
posts[], pageInfo |
GraphQL; paginated |
| getTagCuratedLists |
curated reading lists for a tag |
tagSlug |
lists[] with post items |
GraphQL |
| getTagWriters |
recommended writers for a tag |
tagSlug, first?, after? |
publishers[], pageInfo |
GraphQL; paginated |
| getRecommendedFeed |
trending/top articles |
limit? |
posts[] with feedId, reason |
GraphQL; personalized when logged in |
| getRecommendedTags |
trending topic tags |
— |
tags[] with slug |
entry point |
| getPostClaps |
clap count for a post |
postId ← getTagFeed |
postId, clapCount |
GraphQL |
| getRecommendedWriters |
writers to follow |
— |
publishers[] |
GraphQL |
| clapArticle |
clap (upvote) a post |
postId |
clapCount, viewerClapCount |
SAFE write; requires auth |
| followWriter |
follow a writer |
userId ← getTagWriters |
isFollowing |
SAFE write; requires auth |
| saveArticle |
save to reading list |
postId |
saved, catalogItemId |
SAFE write; requires auth |
| unfollowWriter |
unfollow a writer |
userId ← getTagWriters |
isFollowing |
CAUTION write; requires auth |
| unsaveArticle |
remove from reading list |
postId |
removed |
CAUTION write; requires auth |
Quick Start
# Search for articles
openweb medium exec searchArticles '{"query":"machine learning"}'
# Get articles for a topic
openweb medium exec getTagFeed '{"tagSlug":"programming"}'
# Get article detail
openweb medium exec getArticle '{"postId":"70d2a62246c0"}'
# Get trending tags
openweb medium exec getRecommendedTags '{}'
# Get recommended writers
openweb medium exec getRecommendedWriters '{}'
1---2name: medium3description: Medium4---5# Medium67## Overview8Blogging and publishing platform. Content platform archetype. Search articles, browse topic feeds, discover curated lists, explore writers, clap articles, follow writers, and save bookmarks via Medium's GraphQL API.910## Workflows1112### Browse articles by topic131. `getRecommendedTags` → pick tag → `tagSlug`142. `getTagFeed(tagSlug)` → posts with `postId`153. `getArticle(postId)` → full article detail1617### Search and read181. `searchArticles(query)` → results with titles, URLs192. Pick article URL → extract `postId` from URL203. `getArticle(postId)` → full detail2122### Explore writers for a topic231. `getTagWriters(tagSlug)` → writers/publications with `userId`, bio, follower count2425### Discover curated content261. `getTagCuratedLists(tagSlug)` → staff-picked reading lists272. Lists contain posts with `postId` → `getArticle(postId)`2829### Engage with content (requires login)301. `getTagFeed(tagSlug)` → `posts[].postId`312. `clapArticle(postId ← posts[].postId, numClaps?)` → `clapCount`, `viewerClapCount` (numClaps 1–50, default 1)323. `saveArticle(postId ← posts[].postId)` → `catalogItemId`334. `unsaveArticle(postId ← posts[].postId)` → adapter resolves `postId → catalogItemId` via `getPredefinedCatalog().itemsConnection`, then issues delete3435### Follow a writer (requires login)361. `getTagWriters(tagSlug)` → writers with `userId`372. `followWriter(userId ← getTagWriters)` → `isFollowing`383. `unfollowWriter(userId)` → removes follow3940## Operations4142| Operation | Intent | Key Input | Key Output | Notes |43|-----------|--------|-----------|------------|-------|44| searchArticles | search articles by keyword | query | title, subtitle, url | DOM extraction; entry point |45| getArticle | get full article detail | postId ← getTagFeed/searchArticles | title, author, claps, readingTime, isLocked | GraphQL PostDetailQuery |46| getTagFeed | latest articles for a tag | tagSlug | posts[], pageInfo | GraphQL; paginated |47| getTagCuratedLists | curated reading lists for a tag | tagSlug | lists[] with post items | GraphQL |48| getTagWriters | recommended writers for a tag | tagSlug, first?, after? | publishers[], pageInfo | GraphQL; paginated |49| getRecommendedFeed | trending/top articles | limit? | posts[] with feedId, reason | GraphQL; personalized when logged in |50| getRecommendedTags | trending topic tags | — | tags[] with slug | entry point |51| getPostClaps | clap count for a post | postId ← getTagFeed | postId, clapCount | GraphQL |52| getRecommendedWriters | writers to follow | — | publishers[] | GraphQL |53| clapArticle | clap (upvote) a post | postId | clapCount, viewerClapCount | SAFE write; requires auth |54| followWriter | follow a writer | userId ← getTagWriters | isFollowing | SAFE write; requires auth |55| saveArticle | save to reading list | postId | saved, catalogItemId | SAFE write; requires auth |56| unfollowWriter | unfollow a writer | userId ← getTagWriters | isFollowing | CAUTION write; requires auth |57| unsaveArticle | remove from reading list | postId | removed | CAUTION write; requires auth |5859## Quick Start6061```bash62# Search for articles63openweb medium exec searchArticles '{"query":"machine learning"}'6465# Get articles for a topic66openweb medium exec getTagFeed '{"tagSlug":"programming"}'6768# Get article detail69openweb medium exec getArticle '{"postId":"70d2a62246c0"}'7071# Get trending tags72openweb medium exec getRecommendedTags '{}'7374# Get recommended writers75openweb medium exec getRecommendedWriters '{}'76```