← 스킬 목록으로 돌아가기

url-metadata-extractor

v1.0.0 approved Web ⬇ 3 1일 전
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ 다운로드
설치 가이드↓
🤖 에이전트용 설치 명령 (curl / MCP / Claude Desktop)
▸ curl 한 줄 다운로드
curl -L -o url-metadata-extractor.skill   "https://aiskillstore.io/v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=ClaudeCode"
▸ MCP 도구 호출 (Skill Store MCP 등록 시)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "6e4ab882-c868-4830-a134-11b308c73f36",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP 설정 (1회)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 에이전트용 전체 API 가이드: /llms.txt  ·  MCP server card

Extract page title, OG tags, description, author, keywords, and canonical URL from any web page as structured JSON.

# metadata # og-tags # web-scraping # seo # link-preview # open-graph # twitter-card # korean

기본 정보

소유자 👤 aiskillstore-team 카테고리 Web 등록일 2026-05-29 최종 업데이트 2026-05-29 최신 버전 1.0.0 패키지 날짜 2026-05-29 검증 상태 approved 다운로드 수 3회 체크섬 (SHA256) 50ec347e2c3758677b5285e1ba8756da75b8f2b52b35690f5f8ca97074d2ff62

⚡ AGENT INFO USK v3

Capabilities
url_metadata web_scraping og_tags seo_analysis content_extraction link_preview
Permissions
✓ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3.11   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=OpenClaw GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=ClaudeCode GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=Cursor GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=GeminiCLI GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=CodexCLI GET /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=CustomAgent

설치 방법

호환 플랫폼: any

1
openclaw_skill_manager.py로 스킬을 설치합니다.
python openclaw_skill_manager.py --install url-metadata-extractor
2
설치 확인
python openclaw_skill_manager.py --list-installed
3
특정 버전 설치 (선택)
python openclaw_skill_manager.py --install url-metadata-extractor --version 1.0.0
1
스킬 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/skills/6e4ab882-c868-4830-a134-11b308c73f36/download
2
Claude Code commands 디렉터리에 배치합니다.
unzip url-metadata-extractor.skill -d ~/.claude/commands/url-metadata-extractor/
3
Claude Code에서 슬래시 커맨드로 사용합니다.
/url-metadata-extractor
1
Agent Skills 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=ClaudeCodeAgentSkill
2
Claude Code skills 디렉터리에 압축을 해제합니다.
unzip url-metadata-extractor-agent-skill-*.skill -d ~/.claude/skills/url-metadata-extractor/
3
Claude Code를 재시작하면 세션 시작 시 자동으로 로드됩니다. 슬래시 커맨드 없이 자연어로 사용 가능합니다.
1
Cursor 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=Cursor
2
압축 해제 후 영구 위치에 저장합니다.
unzip url-metadata-extractor-cursor-*.skill -d ~/.cursor/skills/url-metadata-extractor/
3
.cursor/mcp.json에 MCP 서버 설정을 추가하고 Cursor를 재시작합니다.
cat ~/.cursor/skills/url-metadata-extractor/cursor_mcp_config.json
1
Gemini CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=GeminiCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip url-metadata-extractor-geminicli-*.skill -d ~/.gemini/skills/url-metadata-extractor/
3
~/.gemini/settings.json에 MCP 서버 설정을 추가하고 Gemini CLI를 재시작합니다.
cat ~/.gemini/skills/url-metadata-extractor/gemini_settings_snippet.json
1
Codex CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/download?platform=CodexCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip url-metadata-extractor-codexcli-*.skill -d ~/.codex/skills/url-metadata-extractor/
3
~/.codex/config.toml에 MCP 서버 설정을 추가하고 Codex CLI를 재시작합니다.
cat ~/.codex/skills/url-metadata-extractor/codex_config_snippet.toml
1
REST API로 스킬 패키지를 다운로드합니다.
GET https://aiskillstore.io/v1/skills/6e4ab882-c868-4830-a134-11b308c73f36/download
2
에이전트 플랫폼의 skills 디렉터리에 배치합니다.
cp url-metadata-extractor.skill ./skills/
3
설치 가이드 API로 플랫폼별 상세 정보를 조회합니다.
GET https://aiskillstore.io/v1/skills/6e4ab882-c868-4830-a134-11b308c73f36/install-guide?platform=CustomAgent

요구사항

# Python 패키지
pip install requests>=2.31.0 beautifulsoup4>=4.12.0 lxml>=5.0.0

보안 검증 보고서

검증 결과 CAUTION

검사 결과: ["USK v3 경고: interface.runtime 'python3.11'이 권장 값이 아닙니다 (권장: ['python3', 'node', 'bash', 'binary', 'any'])"]

✅ 보안 위험 항목이 발견되지 않았습니다.

AI 검수 단계

검수 주체 gemini 위험도 🟢 낮음 검수 요약 웹 페이지 메타데이터 추출 스킬로, 선언된 네트워크 권한을 적절히 사용하며, 입력 유효성 검사를 포함한 안전한 코드 구조를 가집니다.
판단 근거

1. **권한 일치**: 메타데이터에 `network: true` 권한이 선언되었고, 코드에서 `requests` 라이브러리를 사용하여 HTTP 요청을 수행하는 것이 확인되었습니다. 이는 스킬의 핵심 기능(웹 페이지 메타데이터 추출)에 필수적인 권한이며 적절하게 사용됩니다. `filesystem: false` 및 `subprocess: false`로 선언되었으며, 제공된 코드 스니펫에서는 해당 권한을 사용하는 부분이 발견되지 않았습니다. 2. **악의적 목적 코드 없음**: 사용자 입력 `url`에 대해 `http://` 또는 `https://` 스키마를 강제하는 유효성 검사가 포함되어 있어, 잠재적인 로컬 파일 접근(예: `file:///`)이나 기타 비표준 프로토콜을 통한 공격을 방지합니다. 데이터 탈취, 시스템 파괴, 코드 난독화 등의 악의적인 목적은 발견되지 않았습니다. 3. **선언되지 않은 외부 통신 없음**: 선언된 `network` 권한을 통해 사용자 지정 URL로 HTTP 요청을 보내는 것 외에, 선언되지 않은 외부 통신은 확인되지 않았습니다. `User-Agent` 헤더를 통해 스킬의 정체를 명확히 밝히고 있습니다. 4. **사용자 데이터 무단 수집/전송 없음**: 스킬의 목적에 따라 URL 메타데이터를 추출하여 반환할 뿐, 사용자 데이터를 무단으로 수집하거나 외부로 전송하는 행위는 발견되지 않았습니다. 5. **코드 품질**: 입력 유효성 검사, 의존성 확인, 예외 처리 등 전반적인 코드 구조가 스킬의 목적에 부합하며 안전하게 작성되었습니다. `timeout` 값을 60초로 제한하여 서비스 거부 공격 가능성을 줄입니다. 6. **정적 분석 결과**: 정적 분석 결과 `red_flags_found` 및 `obfuscation_warnings`가 비어 있어, 코드 자체에서 심각한 보안 취약점이나 악의적인 패턴은 발견되지 않았습니다. `caution` 상태는 네트워크 접근 스킬에 대한 일반적인 경고이거나 매우 경미한 사항으로 판단됩니다.

버전 히스토리

버전 USK v3 검증 상태 패키지 날짜 다운로드 변경사항
v1.0.0 approved 2026-05-29 ⬇ 3 1.0.0: Initial release — lightweight metadata-only extraction with OG, Twitter Card, JSON-LD, and Korean language support

사용 예시 (Examples) 5 개

이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.

basic_blog_post
# blog# og# twitter-card

Extract metadata from a blog post URL

📥 입력
{
  "include_keywords": true,
  "timeout": 10,
  "url": "https://example.com/blog/ai-trends-2026"
}
📤 출력
{
  "author": "Jane Doe",
  "canonical_url": "https://example.com/blog/ai-trends-2026",
  "description": "A comprehensive overview of the top AI trends shaping 2026.",
  "keywords": [
    "AI",
    "machine learning",
    "2026",
    "trends"
  ],
  "lang": "en",
  "og": {
    "description": "A comprehensive overview of the top AI trends shaping 2026.",
    "image": "https://example.com/images/ai-trends.jpg",
    "site_name": "ExampleBlog",
    "title": "AI Trends in 2026",
    "type": "article"
  },
  "published_date": "2026-01-15",
  "status_code": 200,
  "title": "AI Trends in 2026",
  "twitter": {
    "card": "summary_large_image",
    "title": "AI Trends in 2026"
  },
  "url": "https://example.com/blog/ai-trends-2026"
}
korean_news_article
# korean# news# og

한국어 뉴스 페이지 메타데이터 추출

📥 입력
{
  "include_keywords": true,
  "timeout": 15,
  "url": "https://news.example.kr/article/12345"
}
📤 출력
{
  "author": "\ud64d\uae38\ub3d9",
  "canonical_url": "https://news.example.kr/article/12345",
  "description": "\uc778\uacf5\uc9c0\ub2a5 \uae30\uc220\uc758 \ucd5c\uc2e0 \ub3d9\ud5a5\uacfc \ubbf8\ub798 \uc804\ub9dd\uc744 \ubd84\uc11d\ud569\ub2c8\ub2e4.",
  "keywords": [
    "AI",
    "\uc778\uacf5\uc9c0\ub2a5",
    "\uae30\uc220",
    "2026"
  ],
  "lang": "ko",
  "og": {
    "description": "\uc778\uacf5\uc9c0\ub2a5 \uae30\uc220\uc758 \ucd5c\uc2e0 \ub3d9\ud5a5\uacfc \ubbf8\ub798 \uc804\ub9dd\uc744 \ubd84\uc11d\ud569\ub2c8\ub2e4.",
    "image": "https://news.example.kr/images/ai-2026.jpg",
    "site_name": "ExampleNews Korea",
    "title": "2026\ub144 AI \uae30\uc220 \ub3d9\ud5a5 \ubd84\uc11d",
    "type": "article"
  },
  "published_date": "2026-03-10",
  "status_code": 200,
  "title": "2026\ub144 AI \uae30\uc220 \ub3d9\ud5a5 \ubd84\uc11d",
  "twitter": {
    "card": "summary",
    "title": "2026\ub144 AI \uae30\uc220 \ub3d9\ud5a5 \ubd84\uc11d"
  },
  "url": "https://news.example.kr/article/12345"
}
include_response_headers
# github# headers# debug

HTTP response headers also returned for debugging

📥 입력
{
  "include_headers": true,
  "include_keywords": false,
  "timeout": 10,
  "url": "https://github.com/anthropics/anthropic-sdk-python"
}
📤 출력
{
  "author": "",
  "canonical_url": "https://github.com/anthropics/anthropic-sdk-python",
  "description": "Official Python SDK for the Anthropic API",
  "headers": {
    "content-type": "text/html; charset=utf-8",
    "x-frame-options": "deny"
  },
  "keywords": [],
  "lang": "en",
  "og": {
    "image": "https://opengraph.githubassets.com/abc123",
    "site_name": "GitHub",
    "title": "anthropics/anthropic-sdk-python",
    "type": "object"
  },
  "published_date": "",
  "status_code": 200,
  "title": "GitHub - anthropics/anthropic-sdk-python",
  "twitter": {
    "card": "summary_large_image"
  },
  "url": "https://github.com/anthropics/anthropic-sdk-python"
}
timeout_error
# error# timeout

Timeout error response when server is too slow

📥 입력
{
  "timeout": 1,
  "url": "https://slow-server.example.com/page"
}
📤 출력
{
  "error": {
    "code": "TIMEOUT",
    "message": "Request timed out after 1 seconds"
  },
  "status_code": 0,
  "url": "https://slow-server.example.com/page"
}
http_error_404
# error# http-error

Non-200 HTTP response handled gracefully

📥 입력
{
  "timeout": 10,
  "url": "https://example.com/nonexistent-page"
}
📤 출력
{
  "error": {
    "code": "HTTP_ERROR",
    "message": "HTTP 404: Not Found"
  },
  "status_code": 404,
  "url": "https://example.com/nonexistent-page"
}

모든 예시는 에이전트 API로도 조회 가능: /v1/agent/skills/6e4ab882-c868-4830-a134-11b308c73f36/schema

리뷰 & 평점

아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!

✍️ 리뷰 작성