Agent Skillsnodetool-ai/nodetool › sandbox-html

sandbox-html

GitHub

提供HTML解析工具集,支持CSS选择、HTML转Markdown/纯文本、提取链接/媒体/元数据及正文内容,用于网页数据清洗与信息抽取。

packages/sandbox-packs/sandbox-html/SKILL.md nodetool-ai/nodetool

Trigger Scenarios

将HTML页面转换为Markdown格式 从HTML中提取特定元素或属性 获取网页中的链接、图片或视频资源 提取网页标题、描述等元数据 清理HTML并提取可读正文内容

Install

npx skills add nodetool-ai/nodetool --skill sandbox-html -g -y
More Options

Non-standard path

npx skills add https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-html -g -y

Use without installing

npx skills use nodetool-ai/nodetool@sandbox-html

指定 Agent (Claude Code)

npx skills add nodetool-ai/nodetool --skill sandbox-html -a claude-code -g -y

安装 repo 全部 skill

npx skills add nodetool-ai/nodetool --all -g -y

预览 repo 内 skill

npx skills add nodetool-ai/nodetool --list

SKILL.md

Frontmatter
{
    "name": "sandbox-html",
    "description": "Select elements out of HTML and convert a page to markdown in a Code node or CodeAct action, with cheerio and turndown running on the host"
}

HTML in the sandbox

Specifier: @nodetool-ai/sandbox-html. Import it at the top of the body.

cheerio imports 25 Node builtins and turndown wants a DOM, so neither compiles into the guest. This pack is a host module: the import resolves to a generated facade over NodeTool's own implementation. Both exports are async.

select — CSS selection

import { select } from "@nodetool-ai/sandbox-html";

const hrefs = await select(inputs.html, "a[href]", { attr: "href", limit: 500 });
const titles = await select(inputs.html, "h2");   // trimmed text of each match
return { hrefs, titles };

Returns trimmed text per match, or the named attribute when attr is set. limit defaults to 100 and is clamped to 1000 — the cap is in the host implementation, so raising it in the call does nothing.

toMarkdown — a whole page

import { toMarkdown } from "@nodetool-ai/sandbox-html";

const markdown = await toMarkdown(inputs.html);
return { markdown };

The usual first step before summarizing or indexing a fetched page. Pass { turndown: {...} } to override turndown's own options.

toText — a whole page as plain text

import { toText } from "@nodetool-ai/sandbox-html";

const text = await toText(inputs.html);
return { text };

Strips <script>/<style> and every tag, then collapses whitespace.

extractLinks / extractImages / extractAudio / extractVideos

import {
  extractLinks,
  extractImages,
  extractAudio,
  extractVideos
} from "@nodetool-ai/sandbox-html";

const links = await extractLinks(inputs.html, inputs.baseUrl);
// [{ href, text, type: "internal" | "external" }, ...]

const images = await extractImages(inputs.html, inputs.baseUrl); // string[] of resolved URLs
const audio = await extractAudio(inputs.html, inputs.baseUrl);
const videos = await extractVideos(inputs.html, inputs.baseUrl);

baseUrl is optional. When set, relative src/href values resolve against it and extractLinks classifies same-origin links as internal. Each extractor returns at most 1000 items.

extractMetadata — title, description, keywords

import { extractMetadata } from "@nodetool-ai/sandbox-html";

const { title, description, keywords } = await extractMetadata(inputs.html);

Any field the page doesn't set comes back null.

extractReadableText — strip chrome, keep the article

import { extractReadableText } from "@nodetool-ai/sandbox-html";

const article = await extractReadableText(inputs.html);

Removes script/style/nav/aside/footer/header, then returns the text of the first match among article, main, [id*=content], [class*=content], or body. A page with none of those returns "No main content found".

Getting a page's base URL

No import needed — new URL(pageUrl).origin gives the base URL to pass into the extractors above.

Gotchas

  • Every export is async.
  • 5 MB of HTML per call. Larger input is refused by name.
  • A selector that matches nothing returns [], never null. An invalid selector throws with cheerio's own message.
  • Extractors cap at 1000 items. Anything past that is silently dropped.

Version History

  • a6a7e57 Current 2026-08-20 09:52

Same Skill Collection

.claude/skills/ask-matt/SKILL.md
.claude/skills/ast-grep-outline/SKILL.md
.claude/skills/ast-grep/SKILL.md
.claude/skills/codebase-design/SKILL.md
.claude/skills/companion-clis/SKILL.md
.claude/skills/diagnosing-bugs/SKILL.md
.claude/skills/domain-modeling/SKILL.md
.claude/skills/flash/SKILL.md
.claude/skills/implement/SKILL.md
.claude/skills/improve-codebase-architecture/SKILL.md
.claude/skills/nodetool-api-reference/SKILL.md
.claude/skills/nodetool-browser-agent/SKILL.md
.claude/skills/nodetool-chat-cli/SKILL.md
.claude/skills/nodetool-custom-node-developer/SKILL.md
.claude/skills/nodetool-deployment/SKILL.md
.claude/skills/nodetool-model-provider-config/SKILL.md
.claude/skills/nodetool-rag-indexing/SKILL.md
.claude/skills/nodetool-troubleshooter/SKILL.md
.claude/skills/nodetool-workflow-builder/SKILL.md
.claude/skills/prototype/SKILL.md
.claude/skills/research/SKILL.md
.claude/skills/resolving-merge-conflicts/SKILL.md
.claude/skills/setup-matt-pocock-skills/SKILL.md
.claude/skills/tdd/SKILL.md
.claude/skills/to-spec/SKILL.md
.claude/skills/to-tickets/SKILL.md
.claude/skills/triage/SKILL.md
.claude/skills/wayfinder/SKILL.md
.claude/skills/wizard/SKILL.md
.claude/skills/yts806379-everything-claude-code-e2e-testing/SKILL.md
packages/sandbox-packs/sandbox-aws/SKILL.md
packages/sandbox-packs/sandbox-chrono/SKILL.md
packages/sandbox-packs/sandbox-color/SKILL.md
packages/sandbox-packs/sandbox-csv/SKILL.md
packages/sandbox-packs/sandbox-dates/SKILL.md
packages/sandbox-packs/sandbox-decimal/SKILL.md
packages/sandbox-packs/sandbox-diff/SKILL.md
packages/sandbox-packs/sandbox-docx/SKILL.md
packages/sandbox-packs/sandbox-dsl/SKILL.md
packages/sandbox-packs/sandbox-epub/SKILL.md
packages/sandbox-packs/sandbox-exif/SKILL.md
packages/sandbox-packs/sandbox-expr/SKILL.md
packages/sandbox-packs/sandbox-fabric/SKILL.md
packages/sandbox-packs/sandbox-flow/SKILL.md
packages/sandbox-packs/sandbox-gif/SKILL.md
packages/sandbox-packs/sandbox-ics/SKILL.md
packages/sandbox-packs/sandbox-jmespath/SKILL.md
packages/sandbox-packs/sandbox-mammoth/SKILL.md
packages/sandbox-packs/sandbox-markdown/SKILL.md

Metadata

Files
0
Version
a6a7e57
Hash
bac2f4bc
Indexed
2026-08-20 09:52

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 13:31
浙ICP备14020137号-1 $방문자$