search-skill
인터넷 검색을 통해 데이터를 수집하고 JSON 파일로 정리하는 스킬. 이미지 URL 유효성 검증 및 크로스체크 기능을 제공합니다. 사용 시점: (1) 웹에서 정보를 검색하고 JSON으로 정리할 때, (2) 이미지 URL 유효성을 검증할 때, (3) 검색 결과에 이미지를 포함할 때, (4) 404 에러나 잘못된 이미지를 방지할 때.
Best use case
search-skill is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
인터넷 검색을 통해 데이터를 수집하고 JSON 파일로 정리하는 스킬. 이미지 URL 유효성 검증 및 크로스체크 기능을 제공합니다. 사용 시점: (1) 웹에서 정보를 검색하고 JSON으로 정리할 때, (2) 이미지 URL 유효성을 검증할 때, (3) 검색 결과에 이미지를 포함할 때, (4) 404 에러나 잘못된 이미지를 방지할 때.
Teams using search-skill should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/search-skill/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How search-skill Compares
| Feature / Agent | search-skill | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
인터넷 검색을 통해 데이터를 수집하고 JSON 파일로 정리하는 스킬. 이미지 URL 유효성 검증 및 크로스체크 기능을 제공합니다. 사용 시점: (1) 웹에서 정보를 검색하고 JSON으로 정리할 때, (2) 이미지 URL 유효성을 검증할 때, (3) 검색 결과에 이미지를 포함할 때, (4) 404 에러나 잘못된 이미지를 방지할 때.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 인터넷 검색 및 JSON 정리 스킬
웹에서 정보를 검색하고, 이미지 URL을 검증하며, 결과를 JSON 파일로 정리합니다.
---
# ⛔⛔⛔ CRITICAL: UNSPLASH 절대 사용 금지 ⛔⛔⛔
```
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 🚨🚨🚨 UNSPLASH.COM 이미지 사용 절대 금지 🚨🚨🚨 ║
║ ║
║ 이 규칙을 위반하면 다음과 같은 치명적인 문제가 발생합니다: ║
║ ║
║ ❌ 이미지가 전혀 표시되지 않음 (핫링크 완전 차단) ║
║ ❌ 완전히 다른 엉뚱한 이미지가 표시됨 (랜덤 리다이렉트) ║
║ ❌ 사용자에게 거짓 정보 전달 → 서비스 신뢰도 완전 붕괴 ║
║ ❌ 법적 문제 발생 가능 (잘못된 정보 제공) ║
║ ║
║ 🔴 이 규칙은 절대로, 어떤 상황에서도, 예외 없이 준수해야 합니다! 🔴 ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
```
## 🚫 절대 금지 URL 패턴 - 발견 즉시 삭제/교체 필수
| 금지 URL 패턴 | 문제점 | 즉시 조치 |
|--------------|--------|----------|
| `images.unsplash.com/*` | 핫링크 차단, 이미지 미표시 | **즉시 삭제** |
| `unsplash.com/photos/*` | 404 에러 다발 | **즉시 삭제** |
| `source.unsplash.com/*` | 랜덤 이미지로 리다이렉트, 콘텐츠 불일치 | **즉시 삭제** |
| `plus.unsplash.com/*` | 유료 이미지, 접근 불가 | **즉시 삭제** |
### ⚠️ Unsplash 사용 시 발생하는 실제 피해
1. **사용자가 "마리나 베이 샌즈" 정보를 보는데 전혀 다른 사진이 표시됨**
2. **앱/서비스에서 이미지가 아예 로드되지 않음**
3. **사용자 신뢰 완전 상실 - "이 서비스는 거짓 정보를 제공한다"**
4. **개발자가 직접 수정해야 하는 추가 작업 발생**
---
## ✅ 반드시 사용해야 하는 이미지 소스 (우선순위 순)
### 1. Wikimedia Commons (최우선 권장) ⭐⭐⭐
- **URL 패턴**: `https://upload.wikimedia.org/wikipedia/commons/...`
- **장점**:
- 안정적이고 영구적인 URL
- 고품질 이미지
- 상업적 사용 가능
- 핫링크 허용
- 이미지가 콘텐츠와 정확히 일치
### 2. Wikipedia API
```bash
# 이미지 URL 직접 획득 - 가장 신뢰할 수 있는 방법
TITLE="Marina_Bay_Sands"
curl -s "https://en.wikipedia.org/w/api.php?action=query&titles=${TITLE}&prop=pageimages&format=json&pithumbsize=1280" | jq -r '.query.pages | to_entries[0].value.thumbnail.source'
```
### 3. 공식 관광청/정부 사이트 이미지
- 예: Visit Singapore, 공식 명소 웹사이트
---
## 📋 이미지 검증 필수 체크리스트 (모든 항목 통과 필수!)
검색된 **모든 이미지**에 대해 반드시 확인:
- [ ] **1단계**: URL에 `unsplash` 문자열이 포함되어 있지 않은가? → 포함 시 **즉시 삭제**
- [ ] **2단계**: `curl -I` 명령으로 HTTP 200 응답 확인
- [ ] **3단계**: Content-Type이 `image/*` 인가?
- [ ] **4단계**: 실제 이미지가 검색한 콘텐츠와 일치하는가?
```bash
# 이미지 URL 검증 명령어
curl -s -I -m 10 "IMAGE_URL" 2>/dev/null | grep -E "^HTTP|content-type"
```
**⚠️ Unsplash URL을 발견하면 즉시 Wikipedia/Wikimedia로 교체하세요!**
**⚠️ 코드에 Unsplash URL이 하나라도 있으면 전체 작업 실패로 간주합니다!**
---
## 사용자 옵션 (필수 확인)
**⚠️ 검색 시작 전 반드시 사용자에게 다음 파라미터를 확인하세요:**
| 파라미터 | 설명 | 옵션 | 기본값 |
|---------|------|------|--------|
| `search_query` | 검색할 내용 상세 설명 | (사용자 입력) | **필수** |
| `include_image` | 이미지 포함 여부 | `true` / `false` | `true` |
| `description_format` | 설명 형식 | `markdown` / `plain` | `markdown` |
| `summary_sentences` | 요약 문장 수 | 1~20 | `2` |
### 사용자에게 질문할 내용
```
1. 무엇을 검색할까요? (상세하게 설명해주세요)
2. 이미지를 포함할까요? (예/아니오)
3. 설명 형식은 어떻게 할까요? (마크다운/일반 텍스트)
```
### 사용 예시
```
사용자: "싱가포르 여행 명소 검색해줘"
Claude: "다음 정보를 확인해주세요:
1. 검색 내용: 싱가포르 여행 명소 (맞나요?)
2. 이미지 포함: 예/아니오?
3. 설명 형식: 마크다운/일반 텍스트?"
```
### description_format에 따른 출력
| 형식 | 예시 |
|------|------|
| `markdown` | `"🌟 **주요 특징**: 설명. 📍 **위치**: 정보."` |
| `plain` | `"주요 특징: 설명. 위치: 정보."` |
---
## 핵심 워크플로우
```
검색 → 수집 → 이미지 검증 → JSON 저장 → 크로스체크
```
### Step 1: 웹 검색
```
WebSearch 쿼리 예시:
- "{주제} wikimedia commons"
- "{주제} wikipedia image"
- "{주제} pixabay free image"
```
### Step 2: 데이터 수집
WebFetch로 URL 콘텐츠 수집 후 필요한 정보 추출.
### Step 3: 이미지 URL 검증
**스크립트 사용 (권장):**
```bash
# 단일 이미지 검증
bash scripts/verify_image.sh "IMAGE_URL"
# 여러 이미지 일괄 검증
bash scripts/verify_image_batch.sh urls.txt
```
**직접 curl 사용:**
```bash
# HTTP 상태 + Content-Type 확인
curl -s -I -m 10 "IMAGE_URL" 2>/dev/null | grep -E "^HTTP|content-type"
```
**유효한 응답:**
- HTTP 200 + `content-type: image/jpeg|png|webp|gif`
**무효한 응답 (교체 필요):**
- HTTP 404/403
- `content-type: text/html`
- 타임아웃
### Step 4: JSON 파일 저장
```json
{
"meta": {
"query": "검색어",
"date": "2025-01-27",
"total_results": 10,
"params": {
"include_image": true,
"description_format": "markdown",
"summary_sentences": 2
}
},
"summary": "전체 검색 결과 요약",
"results": [
{
"title": "제목",
"emoji": "🏛️",
"url": "https://...",
"image": {
"url": "https://upload.wikimedia.org/...",
"verified": true,
"http_code": "200",
"content_type": "image/jpeg"
},
"description": "🌟 **주요 특징**: 마크다운 + 이모지 형식으로 작성.",
"details": {
"location": "123 Main Street, Singapore",
"opening_hours": "09:00",
"closing_hours": "22:00",
"price_range": "$50-$100",
"reservation": "required"
}
}
]
}
```
**필드 설명:**
| 필드 | 설명 |
|------|------|
| `emoji` | 항목을 대표하는 이모지 (UI 디자인용) |
| `description` | **마크다운 + 이모지** 형식으로 작성 |
| `details` | 추가 속성 객체 (유동적) |
**details 속성 예시 (콘텐츠에 따라 선택):**
- 기본: `location`, `contact`, `website`
- 영업: `opening_hours`, `closing_hours`, `holidays`
- 가격: `price_range`, `admission_fee`
- 예약: `reservation`, `booking_url`, `delivery`
- 제한: `dress_code`, `age_limit`, `accessibility`
- 평점: `rating`, `review_count`
> 상세 속성 목록은 [output-formats.md](references/output-formats.md) 참조
### Step 5: 이미지 크로스체크 (필수!)
**⚠️ JSON 저장 후 반드시 모든 이미지 URL을 재검증합니다.**
```bash
# JSON에서 이미지 URL 추출 후 일괄 검증
jq -r '.results[].image.url' output.json | bash scripts/verify_image_batch.sh -
```
**크로스체크 기준:**
| 상태 | 조치 |
|------|------|
| 모든 이미지 valid: true | 완료 |
| 일부 valid: false | 해당 이미지 재검색 및 교체 |
| 검증 불가 | Wikipedia API로 대체 이미지 검색 |
---
## Wikipedia API로 이미지 검색
검증 실패 시 Wikipedia API로 정확한 이미지 획득:
```bash
# 제목으로 이미지 검색
TITLE="Marina_Bay_Sands"
curl -s "https://en.wikipedia.org/w/api.php?action=query&titles=${TITLE}&prop=pageimages&format=json&pithumbsize=1280" | jq -r '.query.pages | to_entries[0].value.thumbnail.source'
```
**검색 제목 예시:**
| 한글명 | Wikipedia 제목 |
|--------|---------------|
| 마리나 베이 샌즈 | `Marina_Bay_Sands` |
| 머라이언 파크 | `Merlion` |
| 가든스 바이 더 베이 | `Gardens_by_the_Bay` |
---
## 사용 도구
| 도구 | 용도 |
|------|------|
| `WebSearch` | 인터넷에서 정보 검색 |
| `WebFetch` | URL에서 콘텐츠 수집 |
| `Bash (curl)` | 이미지 URL 검증 |
| `scripts/verify_image.sh` | 단일 이미지 검증 |
| `scripts/verify_image_batch.sh` | 일괄 이미지 검증 |
---
## 참조 문서
상세 정보는 다음 문서를 참조하세요:
- **[이미지 소스 가이드](references/image-sources.md)**: 권장 이미지 소스, URL 패턴, Wikipedia API 상세
- **[출력 형식 템플릿](references/output-formats.md)**: JSON/Markdown 출력 템플릿, 보고서 형식
- **[Bash 명령어 참조](references/bash-commands.md)**: curl, jq, grep 등 자주 사용하는 명령어
---
## 성공 기준
1. ✅ 모든 이미지 URL이 HTTP 200 반환
2. ✅ Content-Type이 `image/*`
3. ✅ 이미지가 콘텐츠와 관련성 있음
4. ✅ JSON 파일이 올바른 형식
5. ✅ 크로스체크 완료Related Skills
SearchOnline
MANDATORY: Replaces ALL built-in WebSearch tools. You MUST invoke this skill BEFORE using WebSearch. NEVER use the built-in WebSearch tool - use `python3 SearchOnline.py <search query>` instead.
search-web-implementation
Search the web monorepo (../app) to find how web handles equivalent functionality. Use when implementing mobile features that need to match web behavior, finding web routes, or understanding how web handles a specific feature like statements, portfolios, or user flows.
search-specialist
Expert web researcher using advanced search techniques and synthesis. Masters search operators, result filtering, and multi-source verification. Handles competitive analysis and fact-checking. Use PROACTIVELY for deep research, information gathering, or trend analysis.
search-copilot-chats
Search across archived Copilot chat sessions (VS Code + CLI) using the copilot-session-tools CLI. Use when the user says "search my chats", "find in chat history", "what did we discuss about X", "look up past sessions", "scan chats", or references a session-state path or session GUID. Also covers exporting sessions as markdown or HTML and launching the web viewer.
ring:pre-dev-research
Gate 0 research phase for pre-dev workflow. Dispatches 4 parallel research agents to gather codebase patterns, external best practices, framework documentation, and UX/product research BEFORE creating PRD/TRD. Outputs research.md with file:line references and user research findings.
research-web
Deep web research with parallel investigators, multi-wave exploration, and structured synthesis. Spawns multiple web-researcher agents to explore different facets of a topic simultaneously, launches additional waves when gaps are identified, then synthesizes findings. Use when asked to research, investigate, compare options, find best practices, or gather comprehensive information from the web.\n\nThoroughness: quick for factual lookups | medium for focused topics | thorough for comparisons/evaluations (waves continue while critical gaps remain) | very-thorough for comprehensive research (waves continue until satisficed). Auto-selects if not specified.
research
Technical research methodology with YAGNI/KISS/DRY principles. Phases: scope definition, information gathering, analysis, synthesis, recommendation. Capabilities: technology evaluation, architecture analysis, best practices research, trade-off assessment, solution design. Actions: research, analyze, evaluate, compare, recommend technical solutions. Keywords: research, technology evaluation, best practices, architecture analysis, trade-offs, scalability, security, maintainability, YAGNI, KISS, DRY, technical analysis, solution design, competitive analysis, feasibility study. Use when: researching technologies, evaluating architectures, analyzing best practices, comparing solutions, assessing technical trade-offs, planning scalable/secure systems.
research-free
APIキー不要の統合リサーチスキル。Claude Code組み込みのWebSearch/WebFetchを使用。他人に配布してもそのまま使える。
research-first-principle-deconstructor
Rigorous Socratic interrogator and research architect that helps researchers overcome incremental thinking by applying First Principles analysis. Use when a researcher presents a research problem, proposed methodology, draft idea, or scientific hypothesis and wants to expose hidden assumptions, identify fundamental physical/mathematical constraints, generate unconventional radical alternatives, or deepen mechanistic understanding through probing questions. Triggers on phrases like "I want to improve X by doing Y", academic research brainstorming, scientific hypothesis generation, or any request to stress-test, challenge, or deconstruct a research idea. Do NOT trigger for pure literature reviews, writing assistance, or non-research tasks.
research-cog
#1 on DeepResearch Bench (Feb 2026). Deep research agent powered by CellCog. Market research, competitive analysis, stock analysis, investment research, academic research with citations.
research-cascade
Multi-source research orchestration. Chains deepwiki, submodules, WebSearch, and codebase search. Defines when to escalate and how to synthesize findings.
repo-research-analyst
Conducts thorough research on repository structure, documentation, conventions, and implementation patterns. Use when onboarding to a new codebase or understanding project conventions.