Daftai url to markdown
Skill daftAI2026/daftAI-skills/skills/daftai-url-to-markdown
npx -y skills add daftAI2026/daftAI-skills --skill daftai-url-to-markdownAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Fetch any URL and convert to markdown using Chrome CDP, with automatic image downloading. Supports auto-capture and wait-for-user modes. Downloads article images to local directory and rewrites image references to relative paths. Use when user wants to save a webpage as markdown with images. Keywords: url to markdown, save webpage, download article, 网页转markdown
SKILL.md
6.3 KB, as published. Nobody here has run it
URL to Markdown
Fetches any URL via Chrome CDP and converts HTML to clean markdown, with automatic image downloading.
Script Directory
Important: All scripts are located in the scripts/ subdirectory of this skill.
Agent Execution Instructions:
- Determine this SKILL.md file's directory path as
SKILL_DIR - Script path =
${SKILL_DIR}/scripts/<script-name>.ts - Replace all
${SKILL_DIR}in this document with the actual path
Script Reference:
| Script | Purpose |
|---|---|
scripts/main.ts | CLI entry point for URL fetching |
scripts/download-images.ts | Image download and path rewriting |
Preferences (EXTEND.md)
Use Bash to check EXTEND.md existence (priority order):
# Check project-level first
test -f .daftai-skills/daftAI-url-to-markdown/EXTEND.md && echo "project"
# Then user-level
test -f "$HOME/.daftai-skills/daftAI-url-to-markdown/EXTEND.md" && echo "user"
| Path | Location |
|---|---|
.daftai-skills/daftAI-url-to-markdown/EXTEND.md | Project directory |
$HOME/.daftai-skills/daftAI-url-to-markdown/EXTEND.md | User home |
| Result | Action |
|---|---|
| Found | Read, parse, apply settings |
| Not found | Use defaults |
EXTEND.md Supports: Default output directory | Default capture mode | Timeout settings | Image download toggle
Features
- Chrome CDP for full JavaScript rendering
- Two capture modes: auto or wait-for-user
- Automatic image downloading with local path rewriting
<picture>/<source>tag support for complete image extraction- Clean markdown output with metadata
- Handles login-required pages via wait mode
Usage
# Auto mode (default) - capture and download images
bun ${SKILL_DIR}/scripts/main.ts <url>
# Wait mode - wait for user signal before capture
bun ${SKILL_DIR}/scripts/main.ts <url> --wait
# Skip image downloading
bun ${SKILL_DIR}/scripts/main.ts <url> --no-images
# Save to specific file
bun ${SKILL_DIR}/scripts/main.ts <url> -o output.md
Options
| Option | Description |
|---|---|
<url> | URL to fetch |
-o <path> | Output file path (default: auto-generated) |
--wait | Wait for user signal before capturing |
--no-images | Skip downloading images (keep remote URLs) |
--timeout <ms> | Page load timeout (default: 30000) |
Capture Modes
| Mode | Behavior | Use When |
|---|---|---|
| Auto (default) | Capture on network idle | Public pages, static content |
Wait (--wait) | User signals when ready | Login-required, lazy loading, paywalls |
Wait mode workflow:
- Run with
--wait→ script outputs "Press Enter when ready" - Ask user to confirm page is ready
- Send newline to stdin to trigger capture
Output Format
YAML front matter with url, title, description, author, published, captured_at fields, followed by converted markdown content.
Output Directory
url-to-markdown/<domain>/
├── <slug>.md
└── images/
├── image1.png
├── image2.svg
└── ...
<slug>: From page title or URL path (kebab-case, 2-6 words)- Images are saved to
images/subdirectory next to the markdown file - Image references in markdown use relative paths:
images/<filename> - Conflict resolution: Append timestamp
<slug>-YYYYMMDD-HHMMSS.md
Environment Variables
| Variable | Description |
|---|---|
URL_CHROME_PATH | Custom Chrome executable path |
URL_DATA_DIR | Custom data directory |
URL_CHROME_PROFILE_DIR | Custom Chrome profile directory |
Troubleshooting: Chrome not found → set URL_CHROME_PATH. Timeout → increase --timeout. Complex pages → try --wait mode.
Post-Capture Validation
After the script finishes, the agent MUST perform the following validation steps before reporting completion:
1. Completeness Check
- Use
read_web_pageto fetch the original URL - Compare the generated Markdown against the original page content
- Ensure no paragraphs, sections, or headings are missing
2. Video & Embedded Media Detection
- Search the original page source (
curl) for<video>,<iframe>,<source>, or links to Vimeo, YouTube, Wistia, Lottie, etc. - For each embedded video found, insert a link at the correct position in the Markdown:
[视频:<caption or description>](<video_url>) - Videos are often hidden in JS-rendered
mediaGalleryblocks — check the page's raw HTML/JSON forvimeo.com,youtube.com,.mp4,.webm
3. Image Placement Verification
- Confirm that images appear after the correct paragraphs, matching their positions on the original page
- Check that all
references point to files that actually exist in theimages/directory
4. Irrelevant Content Cleanup
- Remove navigation menus, tag/category lists, newsletter signup forms, "Related articles" sections, footer boilerplate, and social media icons
- Remove duplicate titles (e.g., page title repeated as H1)
- Keep only the article body content and author attribution
5. Formatting & Style Verification
- Check that bold/italic emphasis is preserved (not stripped during conversion)
- Verify heading hierarchy (H2/H3 levels match the original page structure)
- Confirm ordered/unordered lists retain their structure
- Ensure blockquotes are properly converted with
> - Verify code blocks use ``` fencing with correct language tags
- Check that
<hr>elements are converted to--- - Note: colors, fonts, spacing and other CSS-only styles are out of scope for Markdown
6. Link Verification
- Fix broken links caused by inline cards or embedded previews spanning multiple lines
- Convert relative links (e.g.,
/blog/some-post/) to absolute URLs (e.g.,https://domain.com/blog/some-post/) - Ensure all
[text](url)links are properly formatted
Extension Support
Custom configurations via EXTEND.md. See Preferences section for paths and supported options.