Agent skill · writing content · daymade
twitter-reader
Fetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references. Use when retrieving a tweet's text or an X Article with images, or pulling post metadata for a Markdown/PKM record. Preferred over Jina alone for X Articles with images.
Why this skill is useful
Adds executable scripts for fetching Twitter/X content with images and metadata that significantly enhance the AI's capabilities.
What it needs
Requires uv installed locally. Requires jina account access. About 4k tokens when loaded. Last updated 2026-08-07. 1,320 stars on the source repository.
What this skill does
Twitter Reader Fetch Twitter/X post and article content with full media support. Reading a single post's text: fxtwitter first (2026-08-30) For plain post text, prefer the fxtwitter mirror API — login-free, key-free, works direct, and returns the full notetweet body in tweet.text (the fulltext key does not exist; a 2,324-char long-form announcement came back complete): replies is a count, not the reply thread. For X Articles with images, use fetcharticle.py below — fxtwitter does not carry article bodies. X Articles with images: fetcharticle.py Example: This will: Fetch structured data via twitter-cli (likes, retweets, bookmarks) Fetch content with images via jina.ai API Download all images to attachments/YYYY-MM-DD-AUTHOR-TITLE/ Generate complete Markdown with embedded image references Include YAML frontmatter with metadata Metadata and plain article text come from twitter-cli; the image URLs ride in the markdown Jina's reader returns. When Jina refuses (see the section below), the script warns on stderr, keeps the twitter-cli text, and reports Images: 0. The Markdown is still correct; it simply has no pictures. Images: 0 on an article that visibly contains images is the signature of a Jina refusal. Example Output Jina's reader is intermittent, and its refusals look like success Anonymous r.jina.ai access to x.com gets blocked for hours at a time when third-party callers abuse the domain. The block hits every anonymous caller and then expires on its own. Both states showed up minutes apart on 2026-09-12. A refusal does not look like a failure. curl exits 0 and the body is a JSON envelope: A lapsed or unfunded key returns the same shape with "code":402, "name":"InsufficientBalanceError". curl --fail catches neither: this endpoint answered HTTP 200 with the envelope in the body. The one signal that holds is the Markdown Content: marker that Jina's reader puts in front of the article body: no marker, no article. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills daymade/twitter-reader