Loading...
Loading...
Lấy nội dung chính của một trang web — mặc định ra markdown sạch kèm frontmatter (title, author, published, source…), hoặc HTML đã làm sạch, hoặc JSON đủ metadata — mở trang bằng Chrome headless qua Chrome DevTools Protocol (CDP), chạy defuddle ngay trong tab để bỏ menu, quảng cáo, sidebar. Dùng khi user đưa một URL và muốn đọc, tóm tắt, trích nội dung, lưu bài thành markdown/HTML/JSON, hoặc khi WebFetch/curl bị chặn (Cloudflare "Just a moment...") hay trả về trang thiếu nội dung vì phải chạy JS mới hiện.
npx skill4agent add namitfruits/skills fetch-pageURL ──► Chrome headless ──CDP──► tab đã chạy JS xong ──► defuddle chạy trong tab ──► md | html | jsonPage.navigateparseAsync()--format${CLAUDE_SKILL_DIR}node_modules/npm install --prefix ${CLAUDE_SKILL_DIR}node ${CLAUDE_SKILL_DIR}/fetch-page.mjs <url> -o /tmp/page.md| Flag | Tác dụng |
|---|---|
| Dạng đầu ra, mặc định |
| Ghi kết quả ra file. Không có thì in ra stdout |
| Lưu thêm HTML thô của trang (sau khi JS chạy, trước khi defuddle lọc) để soi khi kết quả lạ |
| Ra gì | Khi nào dùng |
|---|---|---|
| Frontmatter YAML + markdown, giống | Đọc, tóm tắt, lưu bài |
| HTML đã làm sạch, không kèm metadata | Cần giữ cấu trúc HTML (bảng phức tạp, render lại) |
| Cả object defuddle trả về: | Cần metadata để xử lý tiếp bằng code |
WebSocketCHROME_PATHtitleurlwordCountwordCount--raw-html<p>net::ERR_NAME_NOT_RESOLVED| Trong script | Nếu không có |
|---|---|
| Cloudflare trả trang "Just a moment..." thay cho bài (machinelearningmastery.com) |
| Khung headless mặc định ~756px, AP News coi là mobile, gập nửa sau bài bằng |
Không chờ | Trang báo nhiều quảng cáo không bao giờ bắn |
| Plugin WordPress này vẽ code thành bảng số dòng + code, defuddle ra bảng markdown với code dồn một dòng |
| Script thoát mã 0 và in trang "Let's confirm you are human" ra như một bài 29 từ (arstechnica.com) |
| Trang có CSP chặt chặn việc inject bundle defuddle |
| Chờ Chrome thoát hẳn rồi mới xoá profile tạm | |
--raw-htmltextareadata-*FIX_CODE_HIGHLIGHTERSdisplay: nonehiddenremoveHiddenElementswordCount```jsbuildFrontmatternode_modules/defuddle/dist/0.19.4package.json