blog-post-writer
Turn Nick Nisi's raw material into a blog post draft in his voice. Use when the user says "write a blog post," "draft a post,"…
Fetch tweets, Twitter/X articles, and Reddit posts via proxy APIs. Use when the user provides a twitter.com, x.com, or reddit.com URL, or asks to read a tweet, post, article, or thread from Twitter/X or Reddit.
$ npx -y skills add nicknisi/claude-plugins --skill link-reader --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/link-readerContext preview
The summary Claude sees to decide when to auto-load this skill.
Fetch tweets, Twitter/X articles, and Reddit posts via proxy APIs. Use when the user provides a twitter.com, x.com, or reddit.com URL, or asks to read a tweet, post, article, or thread from Twitter/X or Reddit.
name: link-reader description: Fetch tweets, Twitter/X articles, and Reddit posts via proxy APIs. Use when the user provides a twitter.com, x.com, or reddit.com URL, or asks to read a tweet, post, article, or thread from Twitter/X or Reddit.
Read content from URLs that block direct web fetching by routing through proxy APIs.
**URL patterns**: `twitter.com/*/status/*`, `x.com/*/status/*`, `twitter.com/*/article/*`, `x.com/*/article/*`
**Proxy**: FxTwitter API (`api.fxtwitter.com`)
**Steps**:
1. Extract the path after the domain (e.g., `/trq212/status/1234567890`) 2. Fetch `https://api.fxtwitter.com{path}` using WebFetch 3. Parse the JSON response 4. Format based on content type (see below)
The response JSON has shape: `{ tweet: { text, author, likes, retweets, ... } }`
Format as:
**@{author.screen_name}** ({author.name})
{tweet.text}
{if media.photos: list image URLs}
{if media.videos: list video thumbnail URLs}
{if quote: show quoted tweet inline, indented}
Likes: {likes} · Retweets: {retweets} · Views: {views}
{created_at}When `tweet.article` is present, the tweet is an article (long-form post). The article content uses Draft.js block format.
The `article` object contains:
**Converting blocks to markdown:**
Each block has a `type` and `text`:
**Resolving entity ranges:**
Each block may have `entityRanges: [{ key, offset, length }]`. Look up `content.entityMap[key]`:
**Resolving inline styles:**
Each block may have `inlineStyleRanges: [{ style, offset, length }]`:
Format the full article as:
# {article.title}
**@{author.screen_name}** · {article.created_at}
{converted markdown content}
---
Likes: {likes} · Retweets: {retweets} · Views: {views}**URL patterns**: `reddit.com/r/*/comments/*`, `old.reddit.com/r/*/comments/*`
**Proxy**: Append `.json` to the Reddit URL path
**Steps**:
1. Normalize URL to `https://www.reddit.com/...` 2. Remove any trailing query params, ensure path ends with `/` 3. Append `.json` to the path 4. Fetch using WebFetch 5. The response is an array of two listings:
Format as:
**r/{subreddit}** · u/{author} · {score} points
# {title}
{selftext_html or selftext, or url if link post}
---
Top comments:
**u/{comment_author}** ({score} pts)
{comment body}Show the top 5 comments by default. Offer to show more if the user asks.
To extend this skill for a new platform:
1. Add a new section with URL patterns and proxy strategy 2. Document the JSON response shape 3. Add formatting instructions
Turn Nick Nisi's raw material into a blog post draft in his voice. Use when the user says "write a blog post," "draft a post,"…
Create conference talk outlines and slide-by-slide content plans using narrative frameworks. Use when the user wants to structure…
This skill should be used when the user asks to "tighten this up", "tighten the prose", "clean up the writing", "check for AI…
Produce a rich, self-contained HTML explainer for a code change — deep background, core intuition with diagrams, a guided code…
Compact the current conversation into a handoff document for another agent to pick up. Use when the user says "hand this off",…