
web-to-markdown
Convert a web URL into cleaned Markdown with deterministic routing. Use when Codex needs to read article-like content from links and should apply source-aware fetch strategies: default to r.jina.ai for general pages (including X/Twitter), use defuddle.md for YouTube links, and use browser-impersonated extraction for WeChat/Zhihu/Feishu pages with Mozilla Readability cleanup.
- Installs
- 249
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/rookie-ricardo/erduo-skills --skill web-to-markdown- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads web-to-markdown automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Web To Markdown
Convert URLs into usable Markdown by applying domain-aware fetching routes, then return the cleaned content directly.
Quick Workflow
- Normalize and validate the input URL.
- Select route:
r.jina.ai: general web + X/Twitter.defuddle.md: YouTube transcript/content extraction.special-browser-fetch: WeChat/Zhihu/Feishu.
- Return markdown text (or JSON metadata if needed).
For generic URLs (non-YouTube, non-WeChat/Zhihu/Feishu), use this fallback chain:
- try
r.jina.aifirst, - if it fails, fallback to direct HTTP fetch + Readability,
- if direct fetch still fails or returns shell-like content, fallback to browser extraction.
Commands
Run from this skill directory (skills/web-to-markdown):
npm install
node scripts/url_to_markdown.mjs <url>
Return metadata with markdown:
node scripts/url_to_markdown.mjs <url> --json
Force special-site browser extraction:
node scripts/fetch_special_sites.mjs <url> --json
Routing Policy
- Default route:
https://r.jina.ai/<url>. - YouTube (
youtube.com,youtu.be):https://defuddle.md/<url>. - X/Twitter (
x.com,twitter.com):https://r.jina.ai/<url>. - WeChat/Zhihu/Feishu: run
scripts/fetch_special_sites.mjs. - If input is already proxy-formatted (
https://defuddle.md/https://...orhttps://r.jina.ai/https://...), normalize back to the original URL and re-apply routing.
Special-Site Extraction Behavior
Use a two-stage strategy for WeChat/Zhihu/Feishu:
- Try
cuimpHTTP/TLS impersonation first, then clean HTML with Mozilla Readability. - If stage 1 fails or returns blocked/shell content, fallback to
puppeteer-extrabrowser impersonation.
- HTTP stage impersonates modern Chrome TLS/HTTP profile via
cuimp. - Browser stage impersonates a modern Chrome user agent and standard
sec-ch-uaheaders. - Remove known login modals and backdrop overlays (best effort).
- Scroll the page to trigger lazy-loaded article blocks.
- Parse cleaned document with Mozilla Readability.
- Convert extracted HTML body to Markdown via Turndown.
- Resolve browser executable from
CHROME_PATHfirst, then system Chrome/Chromium/Edge paths.
If special-site extraction fails due to anti-bot checks, account-only pages, or network limits, report failure clearly and ask for fallback input (for example raw page text).
Output Contract
For normal usage, output markdown only.
When --json is used, return:
source: backend source (r.jina.ai,defuddle,cuimp,browser-readability).strategy: selected route (r-jina,defuddle,special-http-fetch,special-browser-fetch-fallback).requestedUrl: original input.resolvedUrl: normalized/final URL.markdown: extracted markdown body.
Resources
- references/routing-and-notes.md: domain routing rules and operational caveats.
scripts/url_to_markdown.mjs: primary entrypoint.scripts/fetch_special_sites_http.mjs: WeChat/Zhihu/Feishu HTTP impersonation fetcher (cuimpJS).scripts/fetch_special_sites.mjs: two-stage extractor (HTTP-first, browser-fallback).
FAQ
What does the web-to-markdown skill do?
Convert a web URL into cleaned Markdown with deterministic routing. Use when Codex needs to read article-like content from links and should apply source-aware fetch strategies: default to r.jina.ai for general pages (including X/Twitter), use defuddle.md for YouTube links, and use browser-impersonated extraction for WeChat/Zhihu/Feishu pages with Mozilla Readability cleanup.
How do I install web-to-markdown?
Run npx skills add https://github.com/rookie-ricardo/erduo-skills --skill web-to-markdown in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/web-to-markdown/ (personal) or .claude/skills/web-to-markdown/ (project).
Which AI agents can use web-to-markdown?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is web-to-markdown safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains web-to-markdown?
It is published by rookie-ricardo in rookie-ricardo/erduo-skills. It has 249 recorded installs.
More from rookie-ricardo/erduo-skills
gemini-watermark-remover
rookie-ricardo/erduo-skills
Remove the visible Gemini AI watermark from images using reverse alpha blending. Use when asked to strip Gemini watermarks, batch-process Gemini images, or build/modify a CLI script that removes the bottom-right Gemini watermark without HTML or server-side components.
ak-rss-digest
rookie-ricardo/erduo-skills
Curate a Chinese reading digest from a fixed bundle of RSS and Atom feeds, with a strong preference for AI agent thinking, frontier AI commentary, deep interviews, and non-boring high-signal essays. Use when Codex needs to pull the latest week's posts by default, or a specific day's posts when explicitly requested, summarize them, score each article on a 10-point scale, and output only the posts scoring above 7 in a concise Chinese daily-brief style.
daily-news-report
rookie-ricardo/erduo-skills
Open the skill to read its SKILL.md instructions.
translate-polisher
rookie-ricardo/erduo-skills
Open the skill to read its SKILL.md instructions.
transcript-polisher
rookie-ricardo/erduo-skills
将语音转录文本(访谈、演讲、播客、会议)精修为可读性更高的文章段落。当用户提到"字幕精修"、"transcript polish"、"润色字幕"、"把视频字幕整理成文章"、"访谈文字整理"、处理访谈记录、转录文本优化、语音转文字整理、或者需要将大段对话/演讲文本整理成可读文章时触发。适用于单人演说或多人对谈的转录文本整理,要求保留原句原词、拒绝高度概括。即使用户只是说"帮我整理一下这段文字"并附上了明显的口语化文本,也应该触发此技能。
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.