← Back to Skills

html-to-markdown

v1.0.0 approved Text Processing updated today
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ Download
Install Guide↓
🤖 Agent install commands (curl / MCP / Claude Desktop)
▸ curl one-liner
curl -L -o html-to-markdown.skill   "https://aiskillstore.io/v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=ClaudeCode"
▸ MCP tool call (after registering Skill Store MCP)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "1035cf0f-b063-46f5-af9f-3c9ebfebe853",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP config (one-time)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 Full agent API guide: /llms.txt  ·  MCP server card

HTML to Markdown converter with 5 actions: convert, sanitize, extract_text, extract_links, audit. Zero external dependencies, GFM tables/strikethrough/task lists, script/style removal.

# html # markdown # converter # gfm # sanitize # web-scraping # text-processing

Basic Info

Owner 👤 aiskillstore-team Category Text Processing Registered 2026-05-05 Last Updated 2026-05-05 Latest Version 1.0.0 Packaged At 2026-05-05 Vetting Status approved Downloads 0 Checksum (SHA256) 1f17cd761334fd2623c62e392e0353163565cd1570ec9528717fd35ca9728214

⚡ AGENT INFO USK v3

Capabilities
html_to_markdown html_sanitization gfm_conversion link_extraction content_audit
Permissions
✗ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=OpenClaw GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=ClaudeCode GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=Cursor GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=GeminiCLI GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=CodexCLI GET /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=CustomAgent

Installation

Compatible Platforms any

1
Install the skill using openclaw_skill_manager.py.
python openclaw_skill_manager.py --install html-to-markdown
2
Verify installation
python openclaw_skill_manager.py --list-installed
3
Install a specific version (optional)
python openclaw_skill_manager.py --install html-to-markdown --version 1.0.0
1
Download the skill package.
curl -O https://aiskillstore.io/v1/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download
2
Place it in the Claude Code commands directory.
unzip html-to-markdown.skill -d ~/.claude/commands/html-to-markdown/
3
Use it as a slash command in Claude Code.
/html-to-markdown
1
Download the Agent Skills package.
curl -O https://aiskillstore.io/v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=ClaudeCodeAgentSkill
2
Unzip it into the Claude Code skills directory.
unzip html-to-markdown-agent-skill-*.skill -d ~/.claude/skills/html-to-markdown/
3
Restart Claude Code — the skill is auto-loaded at session start. No slash command needed.
1
Download the Cursor-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=Cursor
2
Unzip and place it in a permanent location.
unzip html-to-markdown-cursor-*.skill -d ~/.cursor/skills/html-to-markdown/
3
Add the MCP server config to .cursor/mcp.json, then restart Cursor.
cat ~/.cursor/skills/html-to-markdown/cursor_mcp_config.json
1
Download the Gemini CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=GeminiCLI
2
Unzip and place it in a permanent location.
unzip html-to-markdown-geminicli-*.skill -d ~/.gemini/skills/html-to-markdown/
3
Add the MCP server config to ~/.gemini/settings.json, then restart Gemini CLI.
cat ~/.gemini/skills/html-to-markdown/gemini_settings_snippet.json
1
Download the Codex CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download?platform=CodexCLI
2
Unzip and place it in a permanent location.
unzip html-to-markdown-codexcli-*.skill -d ~/.codex/skills/html-to-markdown/
3
Add the MCP server config to ~/.codex/config.toml, then restart Codex CLI.
cat ~/.codex/skills/html-to-markdown/codex_config_snippet.toml
1
Download the skill package via REST API.
GET https://aiskillstore.io/v1/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/download
2
Place it in your agent platform's skills directory.
cp html-to-markdown.skill ./skills/
3
Fetch platform-specific details via the Install Guide API.
GET https://aiskillstore.io/v1/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/install-guide?platform=CustomAgent

Security Vetting Report

Vetting Result APPROVED

Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]

✅ No security risks found.

AI Review Stage

Reviewer gemini Risk Level 🟢 Low Review Summary HTML을 Markdown으로 변환, 정화, 텍스트/링크 추출 및 감사 기능을 제공하는 안전하고 외부 의존성이 없는 스킬입니다. 선언된 권한을 준수하며 악의적인 코드가 발견되지 않았습니다.
Reasoning

제공된 스킬 메타데이터, 코드 파일(main.py, lib/converter.py) 및 정적 분석 결과를 종합적으로 검토했습니다. 1. **선언된 permissions(network/filesystem/subprocess)과 실제 코드가 일치하는가?** * 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`, `env_vars: []`로 명시되어 있습니다. * `main.py`와 `lib/converter.py` 코드에서 `requests`, `urllib`, `socket` 등 네트워크 통신을 위한 모듈 사용이 발견되지 않았습니다. * `os` 모듈은 `sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))`와 같이 내부 모듈 로딩을 위한 경로 조작에만 사용되며, 임의의 파일 시스템 접근(`open()`, `shutil` 등)은 발견되지 않았습니다. 이는 `filesystem: false` 권한 위반으로 간주되지 않습니다. * `subprocess` 모듈 사용이나 `os.system()`과 같은 외부 프로세스 실행 코드는 발견되지 않았습니다. * 환경 변수 접근(`os.getenv()`)도 발견되지 않았습니다. * **결론: 선언된 권한과 실제 코드가 완벽하게 일치합니다.** 2. **악의적 목적의 코드가 있는가? (데이터 탈취, 시스템 파괴, 난독화 등)** * 코드는 HTML 파싱 및 Markdown 변환, 정화, 텍스트/링크 추출, 감사 등 스킬의 명시된 목적에 충실하게 작성되어 있습니다. * 데이터 탈취, 시스템 파괴, 암호화폐 채굴 등 악의적인 행위를 시도하는 코드는 발견되지 않았습니다. * 코드는 명확하고 가독성이 높으며, 난독화된 부분은 없습니다. 3. **선언되지 않은 외부 통신이 있는가?** * 위 1번 항목에서 확인했듯이, 어떠한 형태의 외부 통신도 발견되지 않았습니다. 4. **사용자 데이터를 무단으로 수집하거나 전송하는가?** * 스킬은 `stdin`으로 입력받은 HTML 데이터를 처리하고 `stdout`으로 결과를 반환하는 `stdin_stdout` 패턴을 따릅니다. * 처리된 데이터를 외부로 전송하거나 저장하는 기능은 없습니다. 5. **코드 품질이 스킬의 목적과 일치하는가?** * 코드는 Python 표준 라이브러리(`html.parser`, `re`, `json` 등)만을 사용하여 'Zero external dependencies'라는 설명에 부합합니다. * HTML 파싱에 `html.parser`를 사용하여 안전하고 견고한 방식으로 HTML을 처리합니다. * `sanitize` 및 `audit` 액션은 XSS 위험 요소, 이벤트 핸들러, 누락된 속성 등 잠재적인 보안 및 품질 문제를 식별하고 제거하는 기능을 제공하여 스킬의 유용성과 안전성을 높입니다. * 코드 구조가 명확하고, 오류 처리 로직(`_error` 함수)도 잘 구현되어 있습니다. **정적 분석 결과:** * `status: approved`로 표시되었으며, `red_flags_found`, `obfuscation_warnings`, `forbidden_exec_files_found` 모두 비어 있어 자동화된 검사에서도 문제가 발견되지 않았음을 확인했습니다. 종합적으로 판단할 때, 이 스킬은 선언된 모든 보안 기준을 충족하며, 악의적인 요소나 잠재적 위험이 없어 안전하게 서비스에 배포될 수 있습니다.

Version History

Version USK v3 Vetting Status Packaged At Downloads Changelog
v1.0.0 approved 2026-05-05 ⬇ 0

Examples 8

Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.

convert_basic
# convert# basic# heading

기본 HTML을 Markdown으로 변환 / Convert basic HTML to Markdown

📥 Input
{
  "action": "convert",
  "html": "\u003ch1\u003eHello World\u003c/h1\u003e\u003cp\u003eThis is a \u003cstrong\u003ebold\u003c/strong\u003e and \u003cem\u003eitalic\u003c/em\u003e paragraph.\u003c/p\u003e"
}
📤 Output
{
  "action": "convert",
  "markdown": "# Hello World\n\nThis is a **bold** and *italic* paragraph.",
  "stats": {
    "headings_converted": 1,
    "input_chars": 74,
    "links_converted": 0,
    "output_chars": 49,
    "tables_converted": 0
  }
}
convert_gfm_table
# convert# gfm# table

GFM 테이블 변환 / Convert HTML table to GFM Markdown table

📥 Input
{
  "action": "convert",
  "html": "\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eName\u003c/th\u003e\u003cth\u003eAge\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eAlice\u003c/td\u003e\u003ctd\u003e30\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eBob\u003c/td\u003e\u003ctd\u003e25\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e",
  "options": {
    "gfm_tables": true
  }
}
📤 Output
{
  "action": "convert",
  "markdown": "GFM table with Name/Age columns, Alice/30 and Bob/25 rows",
  "stats": {
    "tables_converted": 1
  }
}
convert_code_block
# convert# code# python

코드 블록 변환 / Convert pre/code to fenced code blocks

📥 Input
{
  "action": "convert",
  "html": "\u003cpre\u003e\u003ccode class=\u0027language-python\u0027\u003edef hello(): print(\u0027world\u0027)\u003c/code\u003e\u003c/pre\u003e"
}
📤 Output
{
  "action": "convert",
  "markdown": "Fenced Python code block with def hello() and print statement",
  "stats": {
    "code_blocks_converted": 1
  }
}
convert_task_list
# convert# task-list# gfm

GFM 체크박스 목록 변환 / Convert checkbox inputs to GFM task list

📥 Input
{
  "action": "convert",
  "html": "\u003cul\u003e\u003cli\u003e\u003cinput type=\"checkbox\" checked\u003e Done\u003c/li\u003e\u003cli\u003e\u003cinput type=\"checkbox\"\u003e Todo\u003c/li\u003e\u003c/ul\u003e",
  "options": {
    "gfm_task_lists": true
  }
}
📤 Output
{
  "action": "convert",
  "markdown": "- [x] Done\n- [ ] Todo"
}
sanitize_html
# sanitize# xss# security

악성 스크립트 제거 / Sanitize HTML by removing scripts and event handlers

📥 Input
{
  "action": "sanitize",
  "html": "\u003cp onclick=\"alert(\u0027xss\u0027)\"\u003eSafe text\u003c/p\u003e\u003cscript\u003ealert(\u0027xss\u0027)\u003c/script\u003e\u003cstyle\u003e.bad{}\u003c/style\u003e",
  "sanitize_options": {
    "remove_on_events": true,
    "remove_scripts": true,
    "remove_styles": true
  }
}
📤 Output
{
  "action": "sanitize",
  "removed_elements": [
    {
      "reason": "script \ud0dc\uadf8 \uc81c\uac70 / script tag removed",
      "tag": "script"
    },
    {
      "reason": "style \ud0dc\uadf8 \uc81c\uac70 / style tag removed",
      "tag": "style"
    },
    {
      "reason": "\uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec \uc18d\uc131 \uc81c\uac70 / event handler attribute removed",
      "tag": "p[onclick]"
    }
  ],
  "sanitized_html": "\u003cp\u003eSafe text\u003c/p\u003e"
}
extract_links
# extract# links# metadata

HTML에서 링크 목록 추출 / Extract all links from HTML

📥 Input
{
  "action": "extract_links",
  "html": "\u003ca href=\u0027https://example.com\u0027 title=\u0027Example\u0027\u003eExample\u003c/a\u003e\u003ca href=\u0027https://test.org\u0027\u003eTest\u003c/a\u003e",
  "include_metadata": true
}
📤 Output
{
  "action": "extract_links",
  "links": [
    {
      "href": "https://example.com",
      "tag": "a",
      "text": "Example",
      "title": "Example"
    },
    {
      "href": "https://test.org",
      "tag": "a",
      "text": "Test",
      "title": ""
    }
  ]
}
extract_text
# extract# text# plain

HTML에서 순수 텍스트 추출 / Extract plain text from HTML

📥 Input
{
  "action": "extract_text",
  "html": "\u003ch1\u003eTitle\u003c/h1\u003e\u003cp\u003eParagraph with \u003cstrong\u003ebold\u003c/strong\u003e text.\u003c/p\u003e"
}
📤 Output
{
  "action": "extract_text",
  "stats": {
    "input_chars": 62,
    "output_chars": 30
  },
  "text": "Title\n\nParagraph with bold text."
}
audit_html
# audit# security# accessibility

HTML 품질 감사 / Audit HTML for quality issues

📥 Input
{
  "action": "audit",
  "html": "\u003chtml\u003e\u003cbody\u003e\u003cp onclick=\"bad()\"\u003eText\u003c/p\u003e\u003cscript\u003eevil()\u003c/script\u003e\u003cimg src=\"x\"\u003e\u003c/body\u003e\u003c/html\u003e"
}
📤 Output
{
  "action": "audit",
  "audit_score": 45,
  "issues": [
    {
      "fix_hint": {
        "action": "remove",
        "location": "script",
        "reference": "OWASP XSS Prevention",
        "suggested_replacement": "sanitize \uc561\uc158\uc73c\ub85c \uc81c\uac70\ud558\uc138\uc694"
      },
      "message": "script \ud0dc\uadf8 \ubc1c\uacac \u2014 XSS \uc704\ud5d8 / script tag found \u2014 XSS risk",
      "rule": "SCRIPT_FOUND",
      "severity": "error"
    },
    {
      "fix_hint": {
        "action": "remove",
        "location": "onclick attribute",
        "reference": "Content Security Policy",
        "suggested_replacement": "onclick=\u0027...\u0027 \uc18d\uc131 \uc81c\uac70"
      },
      "message": "\uc778\ub77c\uc778 \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec \ubc1c\uacac / Inline event handler found",
      "rule": "EVENT_HANDLER",
      "severity": "error"
    },
    {
      "fix_hint": {
        "action": "add",
        "location": "img[src=x]",
        "reference": "WCAG 2.1 1.1.1",
        "suggested_replacement": "\u003cimg src=\u0027x\u0027 alt=\u0027description\u0027\u003e"
      },
      "message": "alt \uc18d\uc131 \uc5c6\ub294 \uc774\ubbf8\uc9c0 \ubc1c\uacac / Image missing alt attribute",
      "rule": "IMG_NO_ALT",
      "severity": "warning"
    }
  ]
}

All examples are also available via the agent API: /v1/agent/skills/1035cf0f-b063-46f5-af9f-3c9ebfebe853/schema

Reviews & Ratings

No reviews yet. Be the first to leave one!

✍️ Write a Review