๐ŸŽฏ

web-to-markdown

๐ŸŽฏSkill

from bear2u/my-skills

VibeIndex|
What it does

Converts web pages to markdown format, offering various modes like standard, AI-optimized, and dual version generation for easy archiving and context preparation.

๐Ÿ“ฆ

Part of

bear2u/my-skills(19 items)

web-to-markdown

Installation

npxRun with npx
npx @modelcontextprotocol/server-playwright
npm installInstall npm package
npm install playwright
๐Ÿ“– Extracted from docs: bear2u/my-skills
9Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

์›นํŽ˜์ด์ง€ URL์„ ์ž…๋ ฅ๋ฐ›์•„ ๋งˆํฌ๋‹ค์šด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ฌธ์„œ๋ฅผ ๋กœ์ปฌ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ๋กœ ์•„์นด์ด๋น™ํ•˜๊ฑฐ๋‚˜ ์ •๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Overview

# Web to Markdown Converter

์›นํŽ˜์ด์ง€์˜ URL์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค.

When to Use

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ์ด ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

  • "์›นํŽ˜์ด์ง€๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜"
  • "์ด URL์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์ค˜"
  • "์›น์‚ฌ์ดํŠธ ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ค˜"
  • "์›นํŽ˜์ด์ง€ ์•„์นด์ด๋น™ํ•ด์ค˜"
  • "๋ธ”๋กœ๊ทธ ๊ธ€์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์ค˜"
  • "AI๊ฐ€ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค˜" (AI ์ตœ์ ํ™” ๋ชจ๋“œ)
  • "์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค˜" (AI ์ตœ์ ํ™” ๋ชจ๋“œ)
  • "์›๋ณธ์ด๋ž‘ AI ์ตœ์ ํ™” ๋ฒ„์ „ ๋‘˜ ๋‹ค ๋งŒ๋“ค์–ด์ค˜" (๋“€์–ผ ๋ชจ๋“œ) โญ NEW

Core Workflow

Step 1: URL ์ž…๋ ฅ๋ฐ›๊ธฐ

์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ•˜๋Š” ์›นํŽ˜์ด์ง€์˜ URL์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.

Example:

```

Claude: ๋ณ€ํ™˜ํ•˜์‹ค ์›นํŽ˜์ด์ง€์˜ URL์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

User: https://example.com/article

```

Important:

  • URL์€ http:// ๋˜๋Š” https://๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • HTTP URL์€ ์ž๋™์œผ๋กœ HTTPS๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฉ๋‹ˆ๋‹ค
  • ์œ ํšจํ•˜์ง€ ์•Š์€ URL์€ ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

Step 2: ๋ณ€ํ™˜ ๋ชจ๋“œ ์„ ํƒ

์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ถ„์„ํ•˜์—ฌ ์ ์ ˆํ•œ ๋ณ€ํ™˜ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ๋ชจ๋“œ:

  1. ์ผ๋ฐ˜ ๋ชจ๋“œ (๊ธฐ๋ณธ): ์›นํŽ˜์ด์ง€๋ฅผ ์ฝ๊ธฐ ์ข‹์€ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜
  2. AI ์ตœ์ ํ™” ๋ชจ๋“œ: AI ์—์ด์ „ํŠธ๊ฐ€ ์ปจํ…์ŠคํŠธ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
  3. ๋“€์–ผ ๋ชจ๋“œ โญ NEW: ์›๋ณธ + AI ์ตœ์ ํ™” ๋ฒ„์ „ 2๊ฐœ ํŒŒ์ผ ์ƒ์„ฑ

์ž๋™ ๊ฐ์ง€ ํ‚ค์›Œ๋“œ:

  • "AI๊ฐ€ ์ฝ๊ธฐ ์ข‹๊ฒŒ", "์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉ", "AI ํ•™์Šต์šฉ" โ†’ AI ์ตœ์ ํ™” ๋ชจ๋“œ
  • "์›๋ณธ์ด๋ž‘", "๋‘˜ ๋‹ค", "2๊ฐœ", "both", "์›๋ณธ๋„ ์ €์žฅ" โ†’ ๋“€์–ผ ๋ชจ๋“œ
  • ๊ธฐํƒ€ โ†’ ์ผ๋ฐ˜ ๋ชจ๋“œ

Example 1 (AI ์ตœ์ ํ™”):

```

User: https://example.com/article AI๊ฐ€ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค˜

Claude: AI ์ตœ์ ํ™” ๋ชจ๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ํฌ๋งท๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

```

Example 2 (๋“€์–ผ ๋ชจ๋“œ):

```

User: https://example.com/article ์›๋ณธ์ด๋ž‘ AI ์ตœ์ ํ™” ๋ฒ„์ „ ๋‘˜ ๋‹ค ๋งŒ๋“ค์–ด์ค˜

Claude: ๋“€์–ผ ๋ชจ๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์›๋ณธ ๋งˆํฌ๋‹ค์šด (article.md)
  • AI ์ตœ์ ํ™” ๋ฒ„์ „ (article.context.md)

2๊ฐœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

```

Step 3: ์ €์žฅ ์˜ต์…˜ ํ™•์ธ

์‚ฌ์šฉ์ž์—๊ฒŒ ์ €์žฅ ์œ„์น˜์™€ ํŒŒ์ผ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Example:

```

Claude: ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์„ ์–ด๋””์— ์ €์žฅํ• ๊นŒ์š”?

์˜ต์…˜:

  1. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ (./)
  2. ํŠน์ • ๊ฒฝ๋กœ ์ง€์ •
  3. ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‚ด์šฉ๋งŒ ๋ณด๊ธฐ

ํŒŒ์ผ๋ช…์€? (๊ธฐ๋ณธ๊ฐ’: webpage.md)

User: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— article.md๋กœ ์ €์žฅํ•ด์ค˜

```

Step 4: ์›นํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋ณ€ํ™˜

WebFetch ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

#### ์ผ๋ฐ˜ ๋ชจ๋“œ ํ”„๋กฌํ”„ํŠธ

```python

url = "https://example.com/article"

prompt = "์›นํŽ˜์ด์ง€์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”. ์ œ๋ชฉ, ๋ณธ๋ฌธ, ๋งํฌ, ์ด๋ฏธ์ง€ ๋“ฑ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋˜, ๋ถˆํ•„์š”ํ•œ ๋„ค๋น„๊ฒŒ์ด์…˜์ด๋‚˜ ๊ด‘๊ณ ๋Š” ์ œ์™ธํ•ด์ฃผ์„ธ์š”."

```

#### AI ์ตœ์ ํ™” ๋ชจ๋“œ ํ”„๋กฌํ”„ํŠธ (CRITICAL)

```python

url = "https://example.com/article"

prompt = """์ด ์›นํŽ˜์ด์ง€๋ฅผ AI ์—์ด์ „ํŠธ๊ฐ€ ์ปจํ…์ŠคํŠธ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”:

ํ•„์ˆ˜ ๊ตฌ์กฐ:

  1. ํ”„๋ก ํŠธ๋งคํ„ฐ (YAML ํ˜•์‹)

---

title: "ํŽ˜์ด์ง€ ์ œ๋ชฉ"

url: "์›๋ณธ URL"

author: "์ž‘์„ฑ์ž (์žˆ๋Š” ๊ฒฝ์šฐ)"

date: "๋ฐœํ–‰์ผ (์žˆ๋Š” ๊ฒฝ์šฐ)"

word_count: ๋Œ€๋žต์ ์ธ ๋‹จ์–ด ์ˆ˜

topics: ["์ฃผ์ œ1", "์ฃผ์ œ2", "์ฃผ์ œ3"]

summary: |

์ด ๊ธ€์˜ ํ•ต์‹ฌ์„ 3-5์ค„๋กœ ์š”์•ฝ

AI๊ฐ€ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก

main_points:

- ํ•ต์‹ฌ ํฌ์ธํŠธ 1

- ํ•ต์‹ฌ ํฌ์ธํŠธ 2

- ํ•ต์‹ฌ ํฌ์ธํŠธ 3

content_type: "tutorial|guide|article|documentation|news|blog"

difficulty: "beginner|intermediate|advanced"

---

  1. ๋ณธ๋ฌธ ๊ตฌ์กฐ

# [์›๋ณธ ์ œ๋ชฉ]

ํ•ต์‹ฌ ์š”์•ฝ

[3-5์ค„๋กœ ์ด ๊ธ€์ด ๋ฌด์—‡์„ ๋‹ค๋ฃจ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ]

์ฃผ์š” ๋‚ด์šฉ

[๋ช…ํ™•ํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์„น์…˜ ๊ตฌ๋ถ„, H2/H3 ์‚ฌ์šฉ]

์„น์…˜ 1

[๋‚ด์šฉ]

์„น์…˜ 2

[๋‚ด์šฉ]

ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

  • ์ธ์‚ฌ์ดํŠธ 1
  • ์ธ์‚ฌ์ดํŠธ 2
  • ์ธ์‚ฌ์ดํŠธ 3

์‹ค์šฉ์  ์ ์šฉ

[์ด ๋‚ด์šฉ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€]

๊ด€๋ จ ๋ฆฌ์†Œ์Šค

[๋งํฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์„ค๋ช…๊ณผ ํ•จ๊ป˜]

๊ฒฐ๋ก 

[๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ]

๋ณ€ํ™˜ ๊ทœ์น™:

  • ๊ด‘๊ณ , ๋„ค๋น„๊ฒŒ์ด์…˜, ํ‘ธํ„ฐ, ์‚ฌ์ด๋“œ๋ฐ” ์™„์ „ ์ œ๊ฑฐ
  • ์ฝ”๋“œ ๋ธ”๋ก์€ ์–ธ์–ด ๋ช…์‹œ (``python, ``javascript ๋“ฑ)
  • ๋งํฌ๋Š” [์„ค๋ช…](URL) ํ˜•์‹์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ
  • ์ด๋ฏธ์ง€๋Š” ![์„ค๋ช…](URL) ํ˜•์‹์œผ๋กœ
  • ๋ถˆํ•„์š”ํ•œ ์ˆ˜์‹์–ด ์ œ๊ฑฐ, ๊ฐ„๊ฒฐํ•˜๊ฒŒ
  • ๋ฆฌ์ŠคํŠธ๋Š” ๋ช…ํ™•ํ•œ bullet points๋กœ
  • ์ค‘์š”ํ•œ ๊ฐœ๋…์€ ๊ตต๊ฒŒ ๊ฐ•์กฐ

์ตœ์ข… ๋ชฉํ‘œ:

AI๊ฐ€ ์ด ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ํ•ต์‹ฌ์„ 3์ดˆ ์•ˆ์— ํŒŒ์•…ํ•˜๊ณ ,

์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์— ์ •ํ™•ํ•˜๊ฒŒ ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”

"""

```

Important:

  • WebFetch๋Š” HTML์„ ์ž๋™์œผ๋กœ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค
  • 15๋ถ„ ์บ์‹œ๊ฐ€ ์ ์šฉ๋˜์–ด ๊ฐ™์€ URL์„ ๋ฐ˜๋ณต ์š”์ฒญํ•ด๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ๋กœ์šด URL๋กœ ๋‹ค์‹œ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค
  • AI ์ตœ์ ํ™” ๋ชจ๋“œ๋Š” ํ† ํฐ์„ 30-50% ์ ˆ๊ฐํ•˜๊ณ  ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค

Step 5: ๋งˆํฌ๋‹ค์šด ์ €์žฅ

๋ณ€ํ™˜๋œ ๋งˆํฌ๋‹ค์šด์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

```bash

# Write ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์ €์žฅ

Write {

file_path: "/Users/symverse/workspaces-skill-test/my-skills-hub/article.md"

content: "[๋ณ€ํ™˜๋œ ๋งˆํฌ๋‹ค์šด ๋‚ด์šฉ]"

}

```

AI ์ตœ์ ํ™” ๋ชจ๋“œ ํŒŒ์ผ๋ช… ๊ถŒ์žฅ:

  • ์ผ๋ฐ˜: article.md
  • AI ์ตœ์ ํ™”: article-ai-optimized.md ๋˜๋Š” article.context.md

Step 6: ๊ฒฐ๊ณผ ํ™•์ธ

์ €์žฅ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์™€ ๊ฐ„๋‹จํ•œ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

```

โœ… ์›นํŽ˜์ด์ง€๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค!

๐Ÿ“„ ํŒŒ์ผ: article.md

๐Ÿ“ ๊ฒฝ๋กœ: /Users/symverse/workspaces-skill-test/my-skills-hub/article.md

๐Ÿ“Š ํฌ๊ธฐ: ์•ฝ 1,234 ๊ธ€์ž

[View file](computer:///Users/symverse/workspaces-skill-test/my-skills-hub/article.md)

```

๋“€์–ผ ๋ชจ๋“œ ์›Œํฌํ”Œ๋กœ์šฐ โญ NEW

๋“€์–ผ ๋ชจ๋“œ๋Š” ์›๋ณธ ๋งˆํฌ๋‹ค์šด๊ณผ AI ์ตœ์ ํ™” ๋ฒ„์ „์„ ๋ชจ๋‘ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ์ฝ์„ ์ž๋ฃŒ์™€ AI๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ž๋ฃŒ๋ฅผ ๋™์‹œ์— ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋“€์–ผ ๋ชจ๋“œ Step 1: URL ๋ฐ ํŒŒ์ผ๋ช… ํ™•์ธ

```

User: https://react.dev/reference/react/useState ์›๋ณธ์ด๋ž‘ AI ์ตœ์ ํ™” ๋ฒ„์ „ ๋‘˜ ๋‹ค ๋งŒ๋“ค์–ด์ค˜

Claude: ๋“€์–ผ ๋ชจ๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํŒŒ์ผ๋ช…์€? (๊ธฐ๋ณธ: webpage)

```

๋“€์–ผ ๋ชจ๋“œ Step 2: ์›๋ณธ ๋งˆํฌ๋‹ค์šด ์ƒ์„ฑ

์ผ๋ฐ˜ ๋ชจ๋“œ ํ”„๋กฌํ”„ํŠธ๋กœ WebFetch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ณธ ๋งˆํฌ๋‹ค์šด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

```python

url = "https://react.dev/reference/react/useState"

prompt = "์›นํŽ˜์ด์ง€์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”. ์ œ๋ชฉ, ๋ณธ๋ฌธ, ๋งํฌ, ์ด๋ฏธ์ง€ ๋“ฑ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋˜, ๋ถˆํ•„์š”ํ•œ ๋„ค๋น„๊ฒŒ์ด์…˜์ด๋‚˜ ๊ด‘๊ณ ๋Š” ์ œ์™ธํ•ด์ฃผ์„ธ์š”."

```

์›๋ณธ ํŒŒ์ผ ์ €์žฅ:

```bash

Write {

file_path: "/path/to/useState.md"

content: "[์›๋ณธ ๋งˆํฌ๋‹ค์šด ๋‚ด์šฉ]"

}

```

๋“€์–ผ ๋ชจ๋“œ Step 3: AI ์ตœ์ ํ™” ๋ฒ„์ „ ์ƒ์„ฑ

CRITICAL: ๊ฐ™์€ URL์— ๋Œ€ํ•ด AI ์ตœ์ ํ™” ํ”„๋กฌํ”„ํŠธ๋กœ ๋‹ค์‹œ WebFetch๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

```python

url = "https://react.dev/reference/react/useState" # ๋™์ผํ•œ URL

prompt = """์ด ์›นํŽ˜์ด์ง€๋ฅผ AI ์—์ด์ „ํŠธ๊ฐ€ ์ปจํ…์ŠคํŠธ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”:

ํ•„์ˆ˜ ๊ตฌ์กฐ:

  1. ํ”„๋ก ํŠธ๋งคํ„ฐ (YAML ํ˜•์‹)

---

title: "ํŽ˜์ด์ง€ ์ œ๋ชฉ"

url: "์›๋ณธ URL"

author: "์ž‘์„ฑ์ž (์žˆ๋Š” ๊ฒฝ์šฐ)"

date: "๋ฐœํ–‰์ผ (์žˆ๋Š” ๊ฒฝ์šฐ)"

word_count: ๋Œ€๋žต์ ์ธ ๋‹จ์–ด ์ˆ˜

topics: ["์ฃผ์ œ1", "์ฃผ์ œ2", "์ฃผ์ œ3"]

summary: |

์ด ๊ธ€์˜ ํ•ต์‹ฌ์„ 3-5์ค„๋กœ ์š”์•ฝ

AI๊ฐ€ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก

main_points:

- ํ•ต์‹ฌ ํฌ์ธํŠธ 1

- ํ•ต์‹ฌ ํฌ์ธํŠธ 2

- ํ•ต์‹ฌ ํฌ์ธํŠธ 3

content_type: "tutorial|guide|article|documentation|news|blog"

difficulty: "beginner|intermediate|advanced"

---

  1. ๋ณธ๋ฌธ ๊ตฌ์กฐ

# [์›๋ณธ ์ œ๋ชฉ]

ํ•ต์‹ฌ ์š”์•ฝ

[3-5์ค„๋กœ ์ด ๊ธ€์ด ๋ฌด์—‡์„ ๋‹ค๋ฃจ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ]

์ฃผ์š” ๋‚ด์šฉ

[๋ช…ํ™•ํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์„น์…˜ ๊ตฌ๋ถ„, H2/H3 ์‚ฌ์šฉ]

์„น์…˜ 1

[๋‚ด์šฉ]

์„น์…˜ 2

[๋‚ด์šฉ]

ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

  • ์ธ์‚ฌ์ดํŠธ 1
  • ์ธ์‚ฌ์ดํŠธ 2
  • ์ธ์‚ฌ์ดํŠธ 3

์‹ค์šฉ์  ์ ์šฉ

[์ด ๋‚ด์šฉ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€]

๊ด€๋ จ ๋ฆฌ์†Œ์Šค

[๋งํฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์„ค๋ช…๊ณผ ํ•จ๊ป˜]

๊ฒฐ๋ก 

[๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ]

๋ณ€ํ™˜ ๊ทœ์น™:

  • ๊ด‘๊ณ , ๋„ค๋น„๊ฒŒ์ด์…˜, ํ‘ธํ„ฐ, ์‚ฌ์ด๋“œ๋ฐ” ์™„์ „ ์ œ๊ฑฐ
  • ์ฝ”๋“œ ๋ธ”๋ก์€ ์–ธ์–ด ๋ช…์‹œ (``python, ``javascript ๋“ฑ)
  • ๋งํฌ๋Š” [์„ค๋ช…](URL) ํ˜•์‹์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ
  • ์ด๋ฏธ์ง€๋Š” ![์„ค๋ช…](URL) ํ˜•์‹์œผ๋กœ
  • ๋ถˆํ•„์š”ํ•œ ์ˆ˜์‹์–ด ์ œ๊ฑฐ, ๊ฐ„๊ฒฐํ•˜๊ฒŒ
  • ๋ฆฌ์ŠคํŠธ๋Š” ๋ช…ํ™•ํ•œ bullet points๋กœ
  • ์ค‘์š”ํ•œ ๊ฐœ๋…์€ ๊ตต๊ฒŒ ๊ฐ•์กฐ

์ตœ์ข… ๋ชฉํ‘œ:

AI๊ฐ€ ์ด ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ํ•ต์‹ฌ์„ 3์ดˆ ์•ˆ์— ํŒŒ์•…ํ•˜๊ณ ,

์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์— ์ •ํ™•ํ•˜๊ฒŒ ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”

"""

```

AI ์ตœ์ ํ™” ํŒŒ์ผ ์ €์žฅ:

```bash

Write {

file_path: "/path/to/useState.context.md"

content: "[AI ์ตœ์ ํ™” ๋งˆํฌ๋‹ค์šด ๋‚ด์šฉ]"

}

```

๋“€์–ผ ๋ชจ๋“œ Step 4: ๊ฒฐ๊ณผ ์š”์•ฝ

2๊ฐœ ํŒŒ์ผ ์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

```

โœ… ๋“€์–ผ ๋ชจ๋“œ ๋ณ€ํ™˜ ์™„๋ฃŒ! 2๊ฐœ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“„ ์›๋ณธ ๋งˆํฌ๋‹ค์šด:

  • ํŒŒ์ผ: useState.md
  • ๊ฒฝ๋กœ: /path/to/useState.md
  • ํฌ๊ธฐ: ์•ฝ 3,500 ๊ธ€์ž
  • ์šฉ๋„: ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์ข‹์€ ์›๋ณธ ๋ณด์กด

[View file](computer:///path/to/useState.md)

๐Ÿ“„ AI ์ตœ์ ํ™” ๋ฒ„์ „:

  • ํŒŒ์ผ: useState.context.md
  • ๊ฒฝ๋กœ: /path/to/useState.context.md
  • ํฌ๊ธฐ: ์•ฝ 2,100 ๊ธ€์ž (40% ์ ˆ๊ฐ)
  • ์šฉ๋„: AI ์ปจํ…์ŠคํŠธ๋กœ ํ™œ์šฉ

[View file](computer:///path/to/useState.context.md)

๐Ÿ’ก ํŒ:

  • ์›๋ณธ(.md)์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ๋•Œ ์‚ฌ์šฉ
  • AI ์ตœ์ ํ™”(.context.md)๋Š” RAG ์‹œ์Šคํ…œ์ด๋‚˜ AI ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉ

```

๋“€์–ผ ๋ชจ๋“œ ํŒŒ์ผ๋ช… ๊ทœ์น™

ํŒจํ„ด 1: ํ™•์žฅ์ž ๊ตฌ๋ถ„ (๊ถŒ์žฅ)

  • ์›๋ณธ: article.md
  • AI ์ตœ์ ํ™”: article.context.md

ํŒจํ„ด 2: ์ ‘๋ฏธ์‚ฌ ๊ตฌ๋ถ„

  • ์›๋ณธ: article.md
  • AI ์ตœ์ ํ™”: article-ai-optimized.md

ํŒจํ„ด 3: ํด๋” ๊ตฌ๋ถ„

```

/docs

โ”œโ”€โ”€ original/

โ”‚ โ””โ”€โ”€ article.md

โ””โ”€โ”€ optimized/

โ””โ”€โ”€ article.md

```

๋“€์–ผ ๋ชจ๋“œ ์žฅ์ 

  1. ์›๋ณธ ๋ณด์กด: ์‚ฌ๋žŒ์ด ์ฝ์„ ์ž๋ฃŒ๋Š” ์›๋ณธ ๊ทธ๋Œ€๋กœ ์œ ์ง€
  2. AI ํšจ์œจ์„ฑ: AI์šฉ์€ ํ† ํฐ ์ ˆ๊ฐ ๋ฐ ๊ตฌ์กฐํ™”
  3. ์šฉ๋„๋ณ„ ๋ถ„๋ฆฌ: ๋ชฉ์ ์— ๋งž๋Š” ํŒŒ์ผ ์‚ฌ์šฉ
  4. ๋ฐฑ์—… ํšจ๊ณผ: 2๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ๋™์‹œ ๋ฐฑ์—…
  5. ๋น„๊ต ๊ฐ€๋Šฅ: ์›๋ณธ๊ณผ ์ตœ์ ํ™” ๋ฒ„์ „ ๋น„๊ต ๋ถ„์„ ๊ฐ€๋Šฅ

๋“€์–ผ ๋ชจ๋“œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

์‹œ๋‚˜๋ฆฌ์˜ค 1: ๊ธฐ์ˆ  ๋ฌธ์„œ ์•„์นด์ด๋น™

```

User: ์ด React ๋ฌธ์„œ๋“ค ์›๋ณธ์ด๋ž‘ AI ์ตœ์ ํ™” ๋ฒ„์ „ ๋‘˜ ๋‹ค ๋งŒ๋“ค์–ด์ค˜

  • https://react.dev/reference/react/useState
  • https://react.dev/reference/react/useEffect

Claude: ๋“€์–ผ ๋ชจ๋“œ๋กœ 4๊ฐœ ํŒŒ์ผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • useState.md (์›๋ณธ)
  • useState.context.md (AI ์ตœ์ ํ™”)
  • useEffect.md (์›๋ณธ)
  • useEffect.context.md (AI ์ตœ์ ํ™”)

```

์‹œ๋‚˜๋ฆฌ์˜ค 2: ๋ธ”๋กœ๊ทธ ๊ธ€ ๋ฐฑ์—…

```

User: ๋‚ด ๋ธ”๋กœ๊ทธ ๊ธ€์„ ๋ฐฑ์—…ํ•˜๋Š”๋ฐ ์›๋ณธ๋„ ์ €์žฅํ•˜๊ณ  AI๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „๋„ ๋งŒ๋“ค์–ด์ค˜

Claude: ๋“€์–ผ ๋ชจ๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์›๋ณธ: ์‚ฌ๋žŒ์ด ๋‹ค์‹œ ์ฝ์„ ๋•Œ
  • AI ์ตœ์ ํ™”: ๋‚˜์ค‘์— AI์—๊ฒŒ ์งˆ๋ฌธํ•  ๋•Œ

```

์‹œ๋‚˜๋ฆฌ์˜ค 3: ํ•™์Šต ์ž๋ฃŒ ๊ตฌ์ถ•

```

User: ์ด ํŠœํ† ๋ฆฌ์–ผ๋“ค์„ ๋‘˜ ๋‹ค ๋ฒ„์ „์œผ๋กœ ์ €์žฅํ•ด์ค˜

Claude:

study-materials/

โ”œโ”€โ”€ original/ # ์‚ฌ๋žŒ์ด ํ•™์Šต์šฉ

โ”‚ โ”œโ”€โ”€ intro.md

โ”‚ โ””โ”€โ”€ advanced.md

โ””โ”€โ”€ ai-optimized/ # AI ์งˆ๋ฌธ ๋‹ต๋ณ€์šฉ

โ”œโ”€โ”€ intro.context.md

โ””โ”€โ”€ advanced.context.md

```

Advanced Options

์—ฌ๋Ÿฌ URL ์ผ๊ด„ ๋ณ€ํ™˜

์—ฌ๋Ÿฌ ์›นํŽ˜์ด์ง€๋ฅผ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Example:

```

User: ์ด URL๋“ค์„ ์ „๋ถ€ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์ค˜

  • https://example.com/article1
  • https://example.com/article2
  • https://example.com/article3

Claude: 3๊ฐœ์˜ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ๋ช…์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ• ๊นŒ์š”, ์•„๋‹ˆ๋ฉด ๊ฐ๊ฐ ์ง€์ •ํ•˜์‹œ๊ฒ ์–ด์š”?

User: ์ž๋™์œผ๋กœ

Claude: [๊ฐ URL์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ article1.md, article2.md, article3.md๋กœ ์ €์žฅ]

```

ํŠน์ • ์„น์…˜๋งŒ ์ถ”์ถœ

์›นํŽ˜์ด์ง€์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Example:

```

User: https://example.com/docs ์—์„œ "Installation" ์„น์…˜๋งŒ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์ค˜

Claude: [WebFetch ํ”„๋กฌํ”„ํŠธ์— "Installation ์„น์…˜๋งŒ ์ถ”์ถœ"์„ ๋ช…์‹œํ•˜์—ฌ ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ๋ณ€ํ™˜]

```

๋งˆํฌ๋‹ค์šด ํฌ๋งท ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

๋ณ€ํ™˜ ์‹œ ์›ํ•˜๋Š” ๋งˆํฌ๋‹ค์šด ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Example:

```

User: ์ด ๋ธ”๋กœ๊ทธ ๊ธ€์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋˜, ๋ชจ๋“  ์ œ๋ชฉ์„ H2(##)๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ฝ”๋“œ ๋ธ”๋ก์€ syntax highlighting ํฌํ•จํ•ด์ค˜

Claude: [WebFetch ํ”„๋กฌํ”„ํŠธ์— ํฌ๋งท ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ช…์‹œ]

```

Error Handling

์ž˜๋ชป๋œ URL

```

User: htp://wrong-url

Claude: โŒ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ URL์ž…๋‹ˆ๋‹ค. http:// ๋˜๋Š” https://๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ „์ฒด URL์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

```

์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€

```

Claude: โŒ ํ•ด๋‹น ์›นํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ํŽ˜์ด์ง€๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๊ฑฐ๋‚˜
  • ์ ‘๊ทผ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜
  • ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

```

ํŒŒ์ผ ์ €์žฅ ์˜ค๋ฅ˜

```

Claude: โŒ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”
  • ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”
  • ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”

```

Example Workflows

Example 1: ๋‹จ์ผ ์›นํŽ˜์ด์ง€ ๋ณ€ํ™˜

```

User: https://docs.python.org/3/tutorial/index.html ์ด๊ฑฐ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์ค˜

Claude: ํŒŒ์ด์ฌ ํŠœํ† ๋ฆฌ์–ผ ํŽ˜์ด์ง€๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ๋ช…์„ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? (๊ธฐ๋ณธ: webpage.md)

User: python-tutorial.md

Claude: [WebFetch๋กœ ํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ]

Claude: [๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜]

Claude: [ํŒŒ์ผ ์ €์žฅ]

โœ… ์›นํŽ˜์ด์ง€๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค!

๐Ÿ“„ ํŒŒ์ผ: python-tutorial.md

๐Ÿ“ ๊ฒฝ๋กœ: /Users/symverse/workspaces-skill-test/my-skills-hub/python-tutorial.md

๐Ÿ“Š ํฌ๊ธฐ: ์•ฝ 15,234 ๊ธ€์ž

[View file](computer:///Users/symverse/workspaces-skill-test/my-skills-hub/python-tutorial.md)

```

Example 2: ๋ธ”๋กœ๊ทธ ๊ธ€ ์•„์นด์ด๋น™

```

User: ์ด ๋ธ”๋กœ๊ทธ ๊ธ€๋“ค์„ ์ „๋ถ€ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ €์žฅํ•ด์„œ ์•„์นด์ด๋ธŒ ํด๋”์— ๋„ฃ์–ด์ค˜

  • https://blog.example.com/post1
  • https://blog.example.com/post2

Claude: 2๊ฐœ์˜ ๋ธ”๋กœ๊ทธ ๊ธ€์„ archive ํด๋”์— ์ €์žฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

[๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ]

[๊ฐ URL์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณ€ํ™˜]

โœ… 2๊ฐœ์˜ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค!

๐Ÿ“ archive/

โ”œโ”€โ”€ post1.md

โ””โ”€โ”€ post2.md

```

Example 3: ๋ฌธ์„œ ๋‚ด์šฉ๋งŒ ๋ณด๊ธฐ (์ €์žฅ ์•ˆ ํ•จ)

```

User: https://github.com/anthropics/claude-code ์ด ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณด์—ฌ์ค˜๋งŒ ํ•˜๊ณ  ์ €์žฅ์€ ํ•˜์ง€๋งˆ

Claude: [WebFetch๋กœ ํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ]

๋‹ค์Œ์€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค:

---

# Claude Code

Claude Code is an official CLI...

[์ „์ฒด ๋‚ด์šฉ ์ถœ๋ ฅ]

---

์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‚ด์šฉ๋งŒ ๋ณด์—ฌ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.

```

Technical Details

WebFetch ์‚ฌ์šฉ

  • ์ž๋™ ๋ณ€ํ™˜: HTML โ†’ ๋งˆํฌ๋‹ค์šด ์ž๋™ ๋ณ€ํ™˜
  • ์บ์‹ฑ: 15๋ถ„ ์ž๊ฐ€ ์ •๋ฆฌ ์บ์‹œ
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌ: ์ž๋™์œผ๋กœ ์ƒˆ URL๋กœ ์žฌ์š”์ฒญ

๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ํ’ˆ์งˆ

WebFetch๋Š” ๋‹ค์Œ ์š”์†Œ๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

  • ์ œ๋ชฉ (H1-H6)
  • ๋‹จ๋ฝ๊ณผ ํ…์ŠคํŠธ ํฌ๋งท (bold, italic, code)
  • ๋งํฌ์™€ ์ด๋ฏธ์ง€
  • ๋ฆฌ์ŠคํŠธ (ordered, unordered)
  • ์ฝ”๋“œ ๋ธ”๋ก
  • ์ธ์šฉ๊ตฌ
  • ํ…Œ์ด๋ธ”

๋ถˆํ•„์š”ํ•œ ์š”์†Œ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค:

  • ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฉ”๋‰ด
  • ํ‘ธํ„ฐ
  • ๊ด‘๊ณ 
  • ์‚ฌ์ด๋“œ๋ฐ” (์ƒํ™ฉ์— ๋”ฐ๋ผ)

ํŒŒ์ผ ์ €์žฅ

  • ๊ธฐ๋ณธ ๊ฒฝ๋กœ: ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ
  • ํŒŒ์ผ ํ™•์žฅ์ž: .md
  • ์ธ์ฝ”๋”ฉ: UTF-8
  • ๋ฎ์–ด์“ฐ๊ธฐ: ๊ธฐ์กด ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ํ™•์ธ ํ›„ ๋ฎ์–ด์”€

Best Practices

  1. ๋ช…ํ™•ํ•œ ํŒŒ์ผ๋ช… ์‚ฌ์šฉ: ๋‚ด์šฉ์„ ์ž˜ ๋‚˜ํƒ€๋‚ด๋Š” ํŒŒ์ผ๋ช… ์‚ฌ์šฉ
  2. ํด๋” ๊ตฌ์กฐํ™”: ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ๋Š” ์ฃผ์ œ๋ณ„๋กœ ํด๋” ์ •๋ฆฌ
  3. URL ํ™•์ธ: ๋ณ€ํ™˜ ์ „ URL์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ
  4. ์ €์ž‘๊ถŒ ์ฃผ์˜: ์›นํŽ˜์ด์ง€ ๋‚ด์šฉ์˜ ์ €์ž‘๊ถŒ์„ ์กด์ค‘
  5. ๊ฐœ์ธ์  ์•„์นด์ด๋น™: ์ฃผ๋กœ ๊ฐœ์ธ์ ์ธ ์ฐธ๊ณ  ์ž๋ฃŒ๋กœ ์‚ฌ์šฉ

Dynamic Content Handling (๋™์  ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ)

๋ฌธ์ œ: JavaScript ๋ Œ๋”๋ง ํŽ˜์ด์ง€

WebFetch๋Š” ์ •์  HTML๋งŒ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ React, Vue, Next.js ๋“ฑ JavaScript๋กœ ๋ Œ๋”๋ง๋˜๋Š” ํŽ˜์ด์ง€๋Š” ๋นˆ ๋‚ด์šฉ์ด ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ์ƒ:

  • ๋ณ€ํ™˜๋œ ๋งˆํฌ๋‹ค์šด์ด ๊ฑฐ์˜ ๋น„์–ด์žˆ์Œ
  • "Loading..." ๊ฐ™์€ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋งŒ ๋ณด์ž„
  • ํ•ต์‹ฌ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ˆ„๋ฝ๋จ

ํ•ด๊ฒฐ์ฑ…: Playwright ํด๋ฐฑ

WebFetch๋กœ ๊ฐ€์ ธ์˜จ ๋‚ด์šฉ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋ถˆ์ถฉ๋ถ„ํ•˜๋ฉด, AskUserQuestion์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ Playwright ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.

#### Step 1: WebFetch ๊ฒฐ๊ณผ ๊ฒ€์ฆ

```python

# WebFetch๋กœ ๊ฐ€์ ธ์˜จ ๋งˆํฌ๋‹ค์šด ๋‚ด์šฉ ํ™•์ธ

if len(markdown_content.strip()) < 500: # ๋„ˆ๋ฌด ์งง์œผ๋ฉด

# ๋™์  ์ฝ˜ํ…์ธ ์ผ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ

```

#### Step 2: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ธฐ

AskUserQuestion ์‚ฌ์šฉ:

```javascript

AskUserQuestion {

questions: [

{

question: "์ด ํŽ˜์ด์ง€๋Š” ๋™์  ์ฝ˜ํ…์ธ (JavaScript)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Playwright๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ๊นŒ์š”?",

header: "Playwright",

multiSelect: false,

options: [

{

label: "Yes, Playwright๋กœ ์žฌ์‹œ๋„",

description: "Chromium ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•ด์„œ JavaScript ๋ Œ๋”๋ง ํ›„ ์ฝ˜ํ…์ธ  ๊ฐ€์ ธ์˜ค๊ธฐ (๋А๋ฆผ, ์ •ํ™•ํ•จ)"

},

{

label: "No, ํ˜„์žฌ ๋‚ด์šฉ๋งŒ ์ €์žฅ",

description: "WebFetch ๊ฒฐ๊ณผ๋งŒ ์ €์žฅ (๋น ๋ฆ„, ๋ถˆ์™„์ „ํ•  ์ˆ˜ ์žˆ์Œ)"

}

]

}

]

}

```

#### Step 3-A: MCP Playwright ์‚ฌ์šฉ (๊ถŒ์žฅ โญ)

์‚ฌ์ „ ์ค€๋น„: MCP Playwright ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

```bash

# ์ตœ์ดˆ 1ํšŒ๋งŒ ์„ค์น˜

npx @modelcontextprotocol/server-playwright

```

์Šคํ‚ฌ์—์„œ ์‚ฌ์šฉ:

```javascript

// 1. ํŽ˜์ด์ง€ ์ด๋™

mcp__playwright__navigate({

url: "https://example.com"

})

// 2. JavaScript ๋ Œ๋”๋ง ๋Œ€๊ธฐ

mcp__playwright__waitForLoadState({

state: "networkidle"

})

// 3. HTML ์ฝ˜ํ…์ธ  ๊ฐ€์ ธ์˜ค๊ธฐ

const htmlContent = mcp__playwright__getContent()

// 4. ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ (WebFetch ํ”„๋กฌํ”„ํŠธ ์žฌ์‚ฌ์šฉ)

// htmlContent๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋กœ์ง

```

#### Step 3-B: Node Playwright ์‚ฌ์šฉ (๋Œ€์•ˆ)

MCP Playwright๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Node.js๋กœ ์ง์ ‘ ์‹คํ–‰:

```bash

# Playwright ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰

node << 'EOF'

const playwright = require('playwright');

(async () => {

const browser = await playwright.chromium.launch({ headless: true });

const page = await browser.newPage();

console.log('โณ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ค‘...');

await page.goto('https://example.com', { waitUntil: 'networkidle' });

console.log('โณ JavaScript ๋ Œ๋”๋ง ๋Œ€๊ธฐ ์ค‘...');

await page.waitForTimeout(3000); // 3์ดˆ ๋Œ€๊ธฐ

const content = await page.content();

console.log(content);

await browser.close();

})();

EOF

```

์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ์ €์žฅ:

```bash

# HTML์„ ์ž„์‹œ ํŒŒ์ผ๋กœ ์ €์žฅ

node playwright-script.js > temp.html

# ์ด์ œ ์ด HTML์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜

# (WebFetch ๋Œ€์‹  ์ง์ ‘ ๋ณ€ํ™˜ ๋กœ์ง ์‚ฌ์šฉ)

```

#### Step 4: ๋ณ€ํ™˜ ๋ฐ ์ €์žฅ

Playwright๋กœ ๊ฐ€์ ธ์˜จ HTML์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Option A: WebFetch ํ”„๋กฌํ”„ํŠธ ์žฌ์‚ฌ์šฉ

Playwright๋กœ ๊ฐ€์ ธ์˜จ ์ „์ฒด HTML์„ WebFetch ํ”„๋กฌํ”„ํŠธ์— ๋„ฃ์–ด ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Option B: ์ง์ ‘ ํŒŒ์‹ฑ

HTML โ†’ ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ (์˜ˆ: turndown, html-to-markdown)

์›Œํฌํ”Œ๋กœ์šฐ ์š”์•ฝ

```

  1. WebFetch๋กœ ์‹œ๋„ (๋น ๋ฆ„)

โ†“

  1. ๊ฒฐ๊ณผ ๊ฒ€์ฆ (๋‚ด์šฉ์ด ์ถฉ๋ถ„ํ•œ๊ฐ€?)

โ†“ NO

  1. AskUserQuestion (Playwright ์‚ฌ์šฉํ• ๊นŒ์š”?)

โ†“ YES

  1. Playwright๋กœ ์žฌ์‹œ๋„

โ”œโ”€ MCP Playwright (๊ถŒ์žฅ) ๋˜๋Š”

โ””โ”€ Node Playwright (๋Œ€์•ˆ)

โ†“

  1. ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ๋ฐ ์ €์žฅ

```

MCP Playwright vs Node Playwright ๋น„๊ต

| ํ•ญ๋ชฉ | MCP Playwright โญ | Node Playwright |

|------|------------------|-----------------|

| ์„ค์น˜ | MCP ์„œ๋ฒ„ ์„ค์น˜ ํ•„์š” | npm install playwright |

| ํ˜ธ์ถœ ๋ฐฉ์‹ | MCP ๋„๊ตฌ ํ˜ธ์ถœ | Bash ๋ช…๋ น์–ด ์‹คํ–‰ |

| ์„ธ์…˜ ๊ด€๋ฆฌ | ์ž๋™ | ์ˆ˜๋™ (์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ) |

| ์—๋Ÿฌ ํ•ธ๋“ค๋ง | ๊น”๋”ํ•จ | ๋ณต์žกํ•จ |

| Claude Code ํ†ตํ•ฉ | ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์› | ๊ฐ„์ ‘ ์‹คํ–‰ |

| ์ถ”์ฒœ๋„ | โญโญโญโญโญ | โญโญโญ |

์‹ค์ „ ์˜ˆ์ œ

์‹œ๋‚˜๋ฆฌ์˜ค: React ๊ณต์‹ ๋ฌธ์„œ ๋ณ€ํ™˜

```

User: https://react.dev/reference/react/useState ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜

Claude: [WebFetch ์‹œ๋„]

Claude: โš ๏ธ ์ด ํŽ˜์ด์ง€๋Š” JavaScript๋กœ ๋ Œ๋”๋ง๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด์šฉ์ด ๊ฑฐ์˜ ๋น„์–ด์žˆ๋„ค์š”.

[AskUserQuestion ํ˜ธ์ถœ]

User: Yes, Playwright๋กœ ์žฌ์‹œ๋„

Claude: โณ Playwright๋กœ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ค‘...

Claude: โœ… JavaScript ๋ Œ๋”๋ง ์™„๋ฃŒ

Claude: โœ… ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ์™„๋ฃŒ

๐Ÿ“„ ํŒŒ์ผ: useState.md

๐Ÿ“ ๊ฒฝ๋กœ: /path/to/useState.md

๐Ÿ“Š ํฌ๊ธฐ: ์•ฝ 5,234 ๊ธ€์ž (์ „์ฒด ์ฝ˜ํ…์ธ  ํฌํ•จ)

```

์ถ”๊ฐ€ ์˜ต์…˜: ์ž๋™ ๊ฐ์ง€ ๋ชจ๋“œ

๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด --auto-playwright ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```

User: https://react.dev/reference/react/useState ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜ (์ž๋™์œผ๋กœ Playwright ์‚ฌ์šฉํ•ด๋„ ๋ผ)

Claude: [WebFetch ์‹œ๋„]

Claude: [์ž๋™์œผ๋กœ Playwright ํด๋ฐฑ]

Claude: โœ… ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ์™„๋ฃŒ

```

Tips

  • ๊ธด ๋ฌธ์„œ: ๋งค์šฐ ๊ธด ์›นํŽ˜์ด์ง€๋Š” ์š”์•ฝ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋™์  ์ฝ˜ํ…์ธ : JavaScript๋กœ ๋ Œ๋”๋ง๋˜๋Š” ์ฝ˜ํ…์ธ ๋Š” Playwright๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ โญ NEW
  • ์ด๋ฏธ์ง€: ์ด๋ฏธ์ง€๋Š” ์›๋ณธ URL ๋งํฌ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค (๋‹ค์šด๋กœ๋“œ๋˜์ง€ ์•Š์Œ)
  • ์žฌ๋ณ€ํ™˜: ๊ฐ™์€ URL์„ 15๋ถ„ ๋‚ด์— ๋‹ค์‹œ ์š”์ฒญํ•˜๋ฉด ์บ์‹œ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
  • MCP Playwright: ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ MCP Playwright ์„œ๋ฒ„ ์„ค์น˜ ๊ถŒ์žฅ