link-reader

GitHub

通过代理API读取Twitter/X和Reddit内容,解决直接抓取限制。支持解析推文、长文及帖子评论,并转换为Markdown格式输出。

plugins/sources/skills/link-reader/SKILL.md nicknisi/claude-plugins

Trigger Scenarios

用户请求读取Twitter或X链接 用户请求读取Reddit帖子或链接 用户提供twitter.com/x.com/reddit.com URL

Install

npx skills add nicknisi/claude-plugins --skill link-reader -g -y
More Options

Non-standard path

npx skills add https://github.com/nicknisi/claude-plugins/tree/main/plugins/sources/skills/link-reader -g -y

Use without installing

npx skills use nicknisi/claude-plugins@link-reader

指定 Agent (Claude Code)

npx skills add nicknisi/claude-plugins --skill link-reader -a claude-code -g -y

安装 repo 全部 skill

npx skills add nicknisi/claude-plugins --all -g -y

预览 repo 内 skill

npx skills add nicknisi/claude-plugins --list

SKILL.md

Frontmatter
{
    "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."
}

Link Reader

Read content from URLs that block direct web fetching by routing through proxy APIs.

Supported Platforms

Twitter / X

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)

Regular Tweets

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}

Twitter/X Articles

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:

  • title — article title
  • cover_image — hero image metadata (use original_img_url)
  • content.blocks[] — array of content blocks
  • content.entityMap — links and media referenced by blocks

Converting blocks to markdown:

Each block has a type and text:

  • unstyled → plain paragraph
  • header-one# heading
  • header-two## heading
  • header-three### heading
  • blockquote> quote
  • code-block → fenced code block
  • unordered-list-item- list item
  • ordered-list-item1. list item
  • atomic → look up in entityMap for embedded media/links

Resolving entity ranges:

Each block may have entityRanges: [{ key, offset, length }]. Look up content.entityMap[key]:

  • If type: "LINK" → wrap the text span in [text](url) using data.url
  • If type: "IMAGE" → insert ![](data.src)

Resolving inline styles:

Each block may have inlineStyleRanges: [{ style, offset, length }]:

  • BOLD**text**
  • ITALIC*text*
  • CODE`text`

Format the full article as:

# {article.title}

**@{author.screen_name}** · {article.created_at}

{converted markdown content}

---
Likes: {likes} · Retweets: {retweets} · Views: {views}

Reddit

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:
    • [0].data.children[0].data → the post
    • [1].data.children[*].data → top-level comments

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.

Adding New Platforms

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

General Guidelines

  • Always attempt the proxy fetch — do not tell the user you can't access the URL without trying first
  • If the proxy returns an error, explain clearly (e.g., "Tweet not found", "Account is private")
  • For tweet threads, fetch the main tweet first and offer to follow the conversation
  • Present image/video URLs directly so the user can open them
  • Keep formatting clean and focused on the content

Version History

  • 6a6decd Current 2026-08-19 21:41

Same Skill Collection

plugins/consultant/skills/consult/SKILL.md
plugins/consultant/skills/deliberate/SKILL.md
plugins/consultant/skills/research/SKILL.md
plugins/content/skills/blog-post-writer/SKILL.md
plugins/content/skills/conference-talk-builder/SKILL.md
plugins/content/skills/tighten-prose/SKILL.md
plugins/essentials/skills/handoff/SKILL.md
plugins/essentials/skills/link-reader/SKILL.md
plugins/essentials/skills/security-audit/SKILL.md
plugins/essentials/skills/thermo-nuclear-code-quality-review/SKILL.md
plugins/essentials/skills/ultrathink/SKILL.md
plugins/image-gen/skills/image-gen/SKILL.md
plugins/essentials/skills/brainstorming/SKILL.md
plugins/essentials/skills/codebase-rehab/SKILL.md
plugins/essentials/skills/codebase-sweep/SKILL.md
plugins/essentials/skills/de-slopify/SKILL.md
plugins/essentials/skills/explain-diff/SKILL.md
plugins/essentials/skills/pr/SKILL.md
plugins/essentials/skills/prototype/SKILL.md
plugins/essentials/skills/socratic-tutor/SKILL.md
plugins/essentials/skills/squad-review/SKILL.md
plugins/essentials/skills/zoom-out/SKILL.md
plugins/sources/skills/youtube-notes/SKILL.md
plugins/tmux/skills/tmux/SKILL.md

Metadata

Files
0
Version
6a6decd
Hash
2743959e
Indexed
2026-08-19 21:41

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 08:23
浙ICP备14020137号-1 $Гость$