X-Read Skill
When to use this skill
Use x-read whenever you need to capture the text, media links, and basic metadata from a public X/Twitter permalink without using the API, creating an account, or burning Brave search credits. It works best for thread permalink URLs (https://x.com/<user>/status/<id>) and articles posted on X that surface their content on the same page.
Inputs
url(required): The exact permalink you want to render. Include the fullhttps://x.com/...path so the Puppeteer browser can navigate directly.
What happens when you run it
- Puppeteer launches a sandboxed Chromium instance with a realistic user-agent and loads the URL.
- The script waits for
article[data-testid="tweet"]elements, captures the main thread (tweet + up to three replies), and extracts any linked card or media attachments. - Media is reprinted as
markdown withALTtext when available, and the main article body is appended beneath the primary tweet. - The output is a short markdown summary listing the thread author, timestamp, text, links, and media so the Telegram chat stays readable.
Output format
## Tweet Thread Summary
Source: <url>
### **MAIN TWEET** by Display Name (@handle)
*2026-02-21T18:24:00Z*
Tweet text …
**Linked Article:** [Title](card URL)
**Media:**
- 
- 
---
Replied tweets follow the same pattern with the Reply heading. Media URLs retain the name=large parameter for better quality.
Limitations and troubleshooting
- The skill only reads publicly available tweets. If X blocks the navigation with a login wall, you will see an error that logging in is required.
- Long-form articles sometimes use
article.content; the script appends that text to the main tweet so you still get the full written piece. - Because the skill uses a browser, it may take a few extra seconds compared to an API call—expect 5–10 seconds per URL.
- For best results, keep the thread URLs focused and don’t try to feed a feed of multiple unrelated URLs at once; run the tool per link.
Testing and safety
- The skill is read-only: it never posts, likes, DM’s, or authenticates to X.
- Review the
index.jsscript if X changes its DOM selectors (it relies ondata-testidattributes such astweet,tweetText,User-Name, andcard.wrapper). - Run the skill manually with
openclaw use x-read read_tweet --url <link>before publishing to confirm the output is what you expect.