with one click
read
// Fetches any URL or PDF as clean Markdown for reading, quoting, citation, or downstream work. Handles paywalls, JS-heavy pages, X/Twitter, and Chinese platforms via proxy cascade. Not for local text files already in the repo.
// Fetches any URL or PDF as clean Markdown for reading, quoting, citation, or downstream work. Handles paywalls, JS-heavy pages, X/Twitter, and Chinese platforms via proxy cascade. Not for local text files already in the repo.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | read |
| description | Fetches any URL or PDF as clean Markdown for reading, quoting, citation, or downstream work. Handles paywalls, JS-heavy pages, X/Twitter, and Chinese platforms via proxy cascade. Not for local text files already in the repo. |
| when_to_use | any URL or PDF to fetch, ็่ฟไธช้พๆฅ, ่ฏปไธไธ, ็็่ฟไธช็ฝ้กต, ๆๅ็ฝ้กต, read this, check this URL, fetch this page |
| metadata | {"version":"3.14.0"} |
Prefix your first line with ๐ฅท inline, not as its own paragraph.
Convert any URL or local PDF to clean Markdown. No analysis, no summary, no discussion of the content unless explicitly asked after the fetch.
| Input | Method |
|---|---|
feishu.cn, larksuite.com | Feishu API script |
mp.weixin.qq.com | Proxy cascade first, built-in WeChat article script only if the proxies fail |
.pdf URL or local PDF path | PDF extraction |
GitHub URLs (github.com, raw.githubusercontent.com) | Prefer raw content or gh first. Use the proxy cascade only as fallback. |
x.com, twitter.com | Proxy cascade (r.jina.ai keeps image URLs). Do not try WebFetch; it 402s. |
| Everything else | Proxy cascade |
After routing, load references/read-methods.md and run the commands for the chosen method.
Title: {title}
Author: {author} (if available)
Source: {platform}
URL: {original url}
Content
{full Markdown, truncated at 200 lines if long}
Default: display only. Show the converted Markdown inline. Do not create a file.
Save to ~/Downloads/{title}.md with YAML frontmatter when any of these are true:
/learn (Phase 1 expects a file to move)When saving:
-1, -2, etc. Never overwrite without confirmation.When not saving:
By default only save Markdown. Download images only when the user explicitly asks: "download images", "save images", "ๅธฆๅพ", "ไธ่ฝฝๅพ็", or similar.
When asked, after saving the Markdown:
grep -oE 'https?://[^ )"]+\.(jpg|jpeg|png|webp|gif)' {md_path} | sort -u~/Downloads/{title}-images/ and curl each URL in parallel (& + wait). Use the same proxy env vars as the fetch step.| What happened | Rule |
|---|---|
| Fetched a paywalled article and returned a login page as Markdown | Inspect the first 10 lines for paywall signals ("Subscribe", "Sign in", "Continue reading"). If found, stop and warn the user. Do not save the login page. |
| User said "read this" but meant "summarize and act on it" | Deliver the Markdown first, then ask what to do next. Do not save unless asked. |
| URL returned empty page or paywall with no content | Report the failure clearly: what was tried, what failed. Do not fabricate or guess the content. |
| r.jina.ai or defuddle.md returned empty for a JS-heavy site | Try the local fallback (agent-fetch or defuddle parse) before giving up. |
| Network failures | Prepend local proxy env vars if available and retry once. |
| Long content | Preview with head -n 200 first; mention truncation when reporting the save. |
| Local fallback tools returned JSON | Extract the Markdown-bearing field. Raw JSON is not a valid final output for /read. |
| All methods failed | Stop and tell the user what was tried and what failed. Suggest opening the URL in a browser or providing an alternative. Do not silently return empty or partial results. |
Activate when: "extract content", "reformat this document", or user hands over a document to restyle
Extract and tag:
Output: Clean, tagged content ready to feed into kami or other typesetting tools.