跳到主要内容
知仓学习社ZHICANG

automating-the-browser

>-

不碰外部(只输出文字)无严重或高危命中hashgraph-online/awesome-codex-plugins

它会碰到什么

扫了多少1 个文本文件,6 KB
它会碰到什么不碰外部(只输出文字)
命中总数1 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Automating the browser

kreuzcrawl interact <url> --actions '[...]' drives a real headless browser

through an ordered list of actions, then captures the resulting page. Reach for

it when a static scrape is not enough: the content lives behind a "Load more"

button, an infinite scroll, a form submission, or JS that only runs on

interaction.

Quick recipe

kreuzcrawl interact https://example.com \
  --actions '[{"type":"click","selector":"#load-more"},
              {"type":"wait","milliseconds":500},
              {"type":"scrape"}]'

Actions run in order. The result wraps the final page state under

interaction (see Output below).

Flag surface

| Flag | Default | Purpose |

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

| --actions | — | Required. JSON array of action objects (see below). |

| --format | json | json (full result) or markdown (final HTML only). |

| --timeout | 30000 | Per-request timeout in ms. |

| --browser-mode | auto | auto, always, never. Interaction needs a browser. |

| --browser-endpoint | — | External CDP ws:// or wss:// URL. |

| --config | — | Inline JSON or @file.json for the full CrawlConfig. |

There is no --respect-robots-txt flag on interact; it targets the one URL

you point it at.

Action schema

Each action is a JSON object tagged by type (camelCase). Unknown fields are

rejected, so match the shapes exactly:

| type | Fields | Notes |

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

| click | selector | Click the element matching the CSS selector. |

| type | selector, text | Type text into the input matching selector. |

| press | key | Press a key, e.g. "Enter", "Tab", "Escape". |

| scroll | direction ("up"/"down"), selector?, amount? | Scroll the page, or a scrollable element if selector is set. |

| wait | milliseconds?, selector? | Wait a fixed time, or until selector appears (selector wins). |

| screenshot | fullPage? | Capture the viewport, or the full scrollable page if true. |

| executeJs | script | Run arbitrary JS in the page context. Trusted scripts only. |

| scrape | — | Capture the current page HTML into the result. |

There is no select action and no wait_for_selector action: to wait for an

element, use wait with a selector field. Scroll direction is up or

down only.

Limits (enforced — exceeding them errors)

  • Max 100 actions per call.
  • Single wait: max 300000 ms; total wait across all wait actions: max 300 s.
  • selector max 4096 bytes; text and executeJs script max 1 MB each.
  • scroll amount max 100000 px (absolute).

Output

JSON mode (default)

The result is wrapped under an interaction key. It carries the final page

HTML (interaction.final_html) and a per-action record under

interaction.action_results[...] — including screenshot data and executeJs

return values where applicable.

kreuzcrawl interact https://example.com \
  --actions '[{"type":"type","selector":"#q","text":"rust"},
              {"type":"press","key":"Enter"},
              {"type":"wait","selector":".results"},
              {"type":"scrape"}]' \
  --format json | jq '.interaction.final_html | length'

Markdown mode

Prints interaction.final_html directly — the raw final DOM, not converted

Markdown. Use JSON mode and feed final_html to a scrape step when you need

clean Markdown.

Patterns

Expand lazy content, then capture

kreuzcrawl interact https://example.com/feed \
  --actions '[{"type":"scroll","direction":"down"},
              {"type":"wait","milliseconds":800},
              {"type":"scroll","direction":"down"},
              {"type":"wait","milliseconds":800},
              {"type":"scrape"}]'

Capture a full-page screenshot after login

kreuzcrawl interact https://app.example.com \
  --actions '[{"type":"type","selector":"#email","text":"me@example.com"},
              {"type":"type","selector":"#password","text":"..."},
              {"type":"click","selector":"button[type=submit]"},
              {"type":"wait","selector":".dashboard"},
              {"type":"screenshot","fullPage":true}]'

Never hardcode credentials — pass them from the environment or a secrets store.

Point at an external Chrome

kreuzcrawl interact https://example.com \
  --browser-endpoint ws://browser.internal:9222/devtools/browser/<id> \
  --actions '[{"type":"click","selector":"#go"},{"type":"scrape"}]'

See the headless-fallback skill for CDP endpoints, wait strategies, and

persistent browser profiles set via --config.

When to reach for scrape or crawl instead

If the page yields its content on a plain fetch (or via `--browser-mode

always) with no clicking or typing, use kreuzcrawl scrape` — see

scraping-html-to-markdown. Use interact only when ordered actions must run

before the content exists.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 1,027
本站分层T1
该仓技能数1910
原文件路径plugins/kreuzberg-dev/plugins/plugins/kreuzcrawl/skills/automating-the-browser/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 1910 个技能

同名技能的其他版本

有 2 个不同仓库或目录里都有叫 automating-the-browser 的技能。它们内容并不相同,别混用: