Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计提醒

web-navigation-strategies网络导航策略

Agent Skill

web-navigation-strategies 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

329

周安装

14

GitHub Stars

851

下载量

115
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:web-navigation-strategies(网络导航策略)
来源仓库:https://github.com/krafton-ai/kira
仓库路径:skills/web-navigation-strategies
安装命令:
npx skills add https://github.com/krafton-ai/kira --skill web-navigation-strategies
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/krafton-ai/kira --skill web-navigation-strategies

简介

用于查找、检索和筛选网络导航策略相关信息,支持路径规划场景。

  • 适合根据关键词或任务需求快速定位候选算法和实现方案。
  • 通过 GitHub 仓库安装,支持 Codex、Claude、Cursor、Gemini CLI 等宿主。
  • 使用前应核实仓库维护状态和权限范围,确保策略适用当前应用场景。
  • web-navigation-strategies 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Web Navigation Strategies for Playwright MCP

Strategic guide for systematic web exploration using Playwright MCP tools. This skill provides navigation patterns, not executable code.

Reading Depth Decision Framework

1. Analyze User Intent

Query Analysis Decision Tree:
├── Keywords: "간단히, 요약, 훑어, quick, summary, overview"
│   → **QUICK MODE**
│   → Extract: Titles + First paragraphs only
│   → Pages: 30-50 (fast scan)
│
├── Keywords: "자세히, 상세, 모든, 댓글, detailed, comprehensive, everything"
│   → **DEEP MODE**
│   → Extract: Full content + Comments + Metadata + Related links
│   → Pages: 5-10 (thorough read)
│
└── No specific keywords
    → **STANDARD MODE**
    → Extract: Main content + Basic metadata
    → Pages: 15-20 (balanced)

2. Execute Based on Depth

Quick Mode Strategy

// Get titles and summaries only
mcp_playwright.navigate(url)
links = mcp_playwright.query_selector_all('h2 a, h3 a')
for (link in links.slice(0, 50)) {
    mcp_playwright.click(link)
    title = mcp_playwright.get_text('h1')
    summary = mcp_playwright.get_text('p:first-of-type')
    mcp_playwright.go_back()
}

Standard Mode Strategy

// Get full main content
mcp_playwright.navigate(url)
links = mcp_playwright.query_selector_all('article a')
for (link in links.slice(0, 20)) {
    mcp_playwright.click(link)
    mcp_playwright.wait_for_load_state('networkidle')
    content = mcp_playwright.get_text('main, article, .content')
    mcp_playwright.go_back()
}

Deep Mode Strategy

// Get everything including discussions
mcp_playwright.navigate(url)
links = mcp_playwright.query_selector_all('article a')
for (link in links.slice(0, 10)) {
    mcp_playwright.click(link)
    mcp_playwright.wait_for_load_state('networkidle')

    // Main content
    content = mcp_playwright.get_text('article, main')

    // Comments
    comments = mcp_playwright.query_selector_all('.comment')
    for (comment in comments) {
        comment_text = mcp_playwright.get_text(comment)
    }

    // Metadata
    author = mcp_playwright.get_text('.author, .writer')
    date = mcp_playwright.get_text('time, .date')

    // Related links
    related = mcp_playwright.query_selector_all('.related a')

    mcp_playwright.go_back()
}

Core Navigation Patterns

Pattern 1: List-Detail Navigation

Use for: Blog indexes, search results, news listings

Step-by-Step Process:
1. Navigate to list page
2. Collect all article links
3. For each link:
   a. Click link
   b. Wait for page load
   c. Extract content
   d. Navigate back
   e. Continue with next

MCP Commands:

// Navigate to list
mcp_playwright.navigate('https://blog.com/posts')

// Get all article links
article_links = mcp_playwright.query_selector_all('article a[href]')

// Process each
for (link in article_links) {
    // Enter detail page
    mcp_playwright.click(link)
    mcp_playwright.wait_for_load_state('networkidle')

    // Extract content
    text = mcp_playwright.get_text('article')

    // Return to list
    mcp_playwright.go_back()
    mcp_playwright.wait_for_load_state('networkidle')
}

Pattern 2: Pagination Traversal

Use for: Multi-page results, forums, archives

Process:
1. Process current page
2. Find "Next" button
3. Click and repeat
4. Stop when no more pages

MCP Commands:

while (true) {
    // Process current page
    articles = mcp_playwright.query_selector_all('article')
    for (article in articles) {
        // Extract content
    }

    // Check for next page
    next_button = mcp_playwright.query_selector('a.next, [rel="next"]')
    if (!next_button) break

    // Go to next page
    mcp_playwright.click(next_button)
    mcp_playwright.wait_for_load_state('networkidle')
}

Pattern 3: Infinite Scroll

Use for: Social media, modern blogs, dynamic content

// Scroll and load pattern
current_height = 0
while (true) {
    // Get current height
    new_height = mcp_playwright.evaluate('document.body.scrollHeight')

    if (new_height == current_height) break

    // Scroll to bottom
    mcp_playwright.evaluate('window.scrollTo(0, document.body.scrollHeight)')
    mcp_playwright.wait_for_timeout(2000)  // Wait for content load

    current_height = new_height
}

// Then extract all loaded content
all_articles = mcp_playwright.query_selector_all('article')

Site-Specific Selector Patterns

Korean Portals

Naver (네이버)

// Search results
list_selector: '.blog_list li'
link_selector: '.api_txt_lines.total_tit'
content_selector: '.se-main-container'
comment_selector: '.u_cbox_contents'

// Blog specific
blog_content: '#postViewArea, .se-main-container'
blog_title: '.se-title-text, .pcol1'

Daum (다음)

// Search results
list_selector: '.list_info'
link_selector: '.f_link_b, .tit_main'
content_selector: '.article_view'

// Tistory blogs
tistory_content: '.entry-content, .article-view'
tistory_comments: '.comment-list'

Brunch

article_list: '.wrap_article_list li'
article_link: 'a.link_post'
article_content: '.wrap_body'

Global Sites

Medium

article_list: 'article'
article_link: 'h2 a, h3 a'
article_content: 'section.pw-post-body'
clap_count: '[aria-label*="clap"]'

Reddit

post_list: '[data-testid="post-container"]'
post_content: '[data-click-id="text"]'
comments: '.Comment'
upvotes: '[aria-label*="upvote"]'

Generic Patterns

// Works on most blogs
article_containers: 'article, .post, .entry, .blog-post'
title_selectors: 'h1, .title, .post-title, .entry-title'
content_selectors: 'main, .content, .post-content, .entry-content'
comment_selectors: '.comments, .comment-list, #comments'
author_selectors: '.author, .by-author, .writer, [rel="author"]'
date_selectors: 'time, .date, .published, .post-date'

Intelligent Navigation Decisions

When to Use Each Pattern

ScenarioPatternDepthExample
"뉴스 헤드라인 훑어봐"List-DetailQuick50 titles
"블로그 글 10개 읽어줘"List-DetailStandardFull content
"포럼 댓글까지 분석해"List-DetailDeepWith comments
"모든 페이지 다 봐"PaginationStandardAll pages
"인스타 피드 쭉 봐"Infinite ScrollQuickSocial media

Selector Priority Strategy

1. Try specific selector first
   → '.se-main-container' (Naver specific)

2. Fallback to semantic HTML
   → 'article', 'main'

3. Try common class patterns
   → '.content', '.post-content'

4. Last resort: get all text
   → 'body' (then clean up)

MCP Command Reference

Essential Commands

// Navigation
mcp_playwright.navigate(url)
mcp_playwright.go_back()
mcp_playwright.go_forward()
mcp_playwright.reload()

// Element Selection
mcp_playwright.query_selector(selector)        // First match
mcp_playwright.query_selector_all(selector)    // All matches

// Interaction
mcp_playwright.click(element_or_selector)
mcp_playwright.type(selector, text)
mcp_playwright.scroll_to(x, y)

// Content Extraction
mcp_playwright.get_text(selector)
mcp_playwright.get_attribute(selector, attribute)
mcp_playwright.get_url()
mcp_playwright.get_title()

// Waiting
mcp_playwright.wait_for_selector(selector)
mcp_playwright.wait_for_load_state('networkidle')
mcp_playwright.wait_for_timeout(milliseconds)

// JavaScript Execution
mcp_playwright.evaluate(javascript_code)

Practical Examples

Example 1: Quick News Scan

// User: "네이버 뉴스 제목만 빠르게 훑어줘"
mcp_playwright.navigate('https://news.naver.com')
headlines = mcp_playwright.query_selector_all('.news_tit')
for (headline in headlines.slice(0, 30)) {
    title = mcp_playwright.get_text(headline)
    // Store title
}

Example 2: Blog Deep Dive

// User: "이 블로그 최신글 5개 댓글까지 자세히 봐줘"
mcp_playwright.navigate('https://blog.example.com')
posts = mcp_playwright.query_selector_all('.post-link')

for (post in posts.slice(0, 5)) {
    mcp_playwright.click(post)

    // Get everything
    title = mcp_playwright.get_text('h1')
    content = mcp_playwright.get_text('article')
    author = mcp_playwright.get_text('.author')
    date = mcp_playwright.get_text('.date')

    // Get all comments
    comments = mcp_playwright.query_selector_all('.comment')
    for (comment in comments) {
        text = mcp_playwright.get_text(comment)
    }

    mcp_playwright.go_back()
}

Example 3: Forum Thread Analysis

// User: "레딧 스레드 전체 토론 분석해줘"
mcp_playwright.navigate(reddit_url)

// Main post
main_post = mcp_playwright.get_text('[data-click-id="text"]')
upvotes = mcp_playwright.get_text('[aria-label*="upvote"]')

// All comments with nested replies
all_comments = mcp_playwright.query_selector_all('.Comment')
for (comment in all_comments) {
    text = mcp_playwright.get_text(comment)
    // Parse nested structure
}

Error Handling Strategies

Common Issues and Solutions

  1. Selector Not Found // Try multiple selectors content = mcp_playwright.query_selector('article') || mcp_playwright.query_selector('main') || mcp_playwright.query_selector('.content') || mcp_playwright.query_selector('body')
  2. Dynamic Content Not Loaded // Wait strategies mcp_playwright.wait_for_load_state('networkidle') mcp_playwright.wait_for_selector('.content', timeout=10000) mcp_playwright.wait_for_timeout(2000) // Last resort
  3. Navigation Failed try {mcp_playwright.go_back()} catch {// Fallback: navigate directly mcp_playwright.navigate(list_page_url)}

Best Practices

DO ✅

  • Wait for content to load before extraction
  • Use specific selectors when possible
  • Handle pagination and infinite scroll
  • Extract metadata (author, date) when available
  • Respect rate limits with waits between requests

DON'T ❌

  • Don't assume selectors work on all sites
  • Don't skip wait_for_load_state
  • Don't extract without checking element exists
  • Don't ignore error handling
  • Don't process too many pages in deep mode

Decision Flow Summary

User Request
    ↓
Analyze Keywords → Determine Depth (Quick/Standard/Deep)
    ↓
Identify Site Type → Choose Selectors
    ↓
Select Pattern → (List-Detail/Pagination/Scroll)
    ↓
Execute with MCP Commands
    ↓
Handle Errors → Fallback Strategies

Reference

For detailed patterns and selectors by site type, see:

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.55%
按下载量换算43

Claude

26.68%
按下载量换算31

Cursor

19.29%
按下载量换算22

Gemini CLI

9.19%
按下载量换算11

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills