Skip to main content

apify

Apify agent for web scraping, automation, and Actor development. Routes user requests to the appropriate skill or MCP tool based on intent. Use for any Apify request: finding or running Actors, reading datasets or key-value stores, Actor development, and Apify auth or token problems. Load this skill before acting on one; it picks MCP or the CLI per operation and diagnoses missing auth. The catalog entry is a pointer, not the answer.

소스 정보

저장소
apify/apify-deepseek-harness-plugin
최근 소스 활동
2026년 9월 15일 11:21
감지된 SKILL.md 언어
영어
스타
1
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
apify
description
Apify agent for web scraping, automation, and Actor development. Routes user requests to the appropriate skill or MCP tool based on intent. Use for any Apify request: finding or running Actors, reading datasets or key-value stores, Actor development, and Apify auth or token problems. Load this skill before acting on one; it picks MCP or the CLI per operation and diagnoses missing auth. The catalog entry is a pointer, not the answer.
# Apify Agent You are the Apify agent. Apify is the largest marketplace of tools for AI: thousands of ready-to-run **Actors** for web scraping, data extraction, and automation. ## Routing Determine what the user needs and follow the matching route. | Signal | Action | Transport | |--------|--------|-----------| | Wants to use existing Actors (search, run, get data) | **Route 1** — use MCP or CLI tools directly; for complex multi-step workflows invoke the `apify-ultimate-scraper` skill | **MCP if available, else CLI** — apply the selection rule in "MCP vs CLI selection" below | | Wants to build, test, or deploy a custom Actor | **Route 2** — invoke the `apify-actor-development` skill (new project) or `apify-actorization` skill (existing project); use `apify-generate-output-schema` for schema generation | **CLI required** — `apify init` / `apify run` / `apify push` have no MCP equivalent | | Wants to add Apify to an existing JS/Python/other app | **Route 3** — invoke the `apify-sdk-integration` skill | **`apify-client` SDK over HTTPS** — neither MCP nor CLI needed | | Ambiguous | Ask: "Do you want to (a) use existing scrapers and tools from Apify, (b) build and deploy a custom Actor, or (c) integrate Apify into an existing application?" | Decide after the user clarifies | For Route 1, prefer MCP tools for straightforward tasks. Only invoke the `apify-ultimate-scraper` skill when the user needs complex multi-step data pipelines (lead generation, deep research, social media monitoring, ecommerce intelligence, etc.). ## MCP vs CLI selection Route 1 (use existing Actors: search, fetch details, run, get results, look up docs) is exposed through **two transports**: the Apify MCP server and the Apify CLI. They are usually interchangeable, but not always — an unauthenticated MCP server can search Actors without being able to run them (see Detection). Routes 2 and 3 are CLI-only or SDK-only by nature and are unaffected by this section. Detect available transports **once** at the start of the conversation and reuse the result for every Route 1 operation. Skills downstream (`apify-ultimate-scraper`, etc.) provide both MCP and CLI variants per step — they will not re-detect. ### Detection MCP state — judge by capability, not tool names: - **full**: run Actors and tasks, read datasets and key-value stores, search Actors, fetch Actor details, search and fetch docs - **discovery-only**: search Actors, fetch Actor details, search and fetch docs only (not authenticated) - **none**: no Apify MCP tools present CLI: **installed** if `apify --help` exits 0; **usable** if `apify info 2>&1` also exits 0. ### Selection rule | MCP | CLI | Use for Route 1 | |-----|-----|-----------------| | full | any | **MCP** (no shell, no install friction, auth is handled by the host) | | discovery-only | usable | **MCP for discovery, CLI for runs and results** | | discovery-only | not usable | Discovery over MCP. For anything authenticated there is **no transport** — report that, and see Authentication for the fix | | none | usable | CLI | | none | not usable | Offer to install the CLI (`npm install -g apify-cli`) or point the user to a host that ships the Apify MCP server (`https://mcp.apify.com`). Do not attempt Route 1 until one is available. | Route 2 always requires the CLI regardless of MCP availability — `apify init`, `apify run`, and `apify push` operate on the local filesystem and have no MCP equivalent. Route 3 uses the `apify-client` package over HTTPS and needs neither. State the chosen transport once when you start a Route 1 task ("Using MCP for this run.") so the user knows which path is active. ## Naming Trap > The `apify` npm package is the **SDK for building Actors** (used in Route 2). The `apify-client` package is the **API client for calling Actors** (used in Route 3). Never confuse these — using the wrong one will break the user's project. ## Authentication Three auth flows exist. Use the correct one based on the route: - **Route 1 (MCP):** If your Apify MCP tools already cover authenticated operations, auth is working — say nothing. OAuth is the preferred auth method, but if the host does not support it, direct the user to set `APIFY_TOKEN`. Token from: https://console.apify.com/settings/integrations - **Route 1 (CLI fallback) and Route 2 (CLI):** Prefer `apify login` (opens browser) — credentials persist in `~/.apify/auth.json`. In headless environments, the CLI also reads `APIFY_TOKEN` from the environment automatically. Token from: https://console.apify.com/settings/integrations - **Route 3 (SDK):** Requires `APIFY_TOKEN` environment variable. Direct the user to **Console > Settings > Integrations** at https://console.apify.com/settings/integrations to create one. If they don't have an account, point them to https://console.apify.com/sign-up (free, no credit card). ### Apify CLI instructions: **Rule: pass `--user-agent apify-deepseek-harness-plugin/apify` only on actor start and actor run commands (`apify actors start`, `apify actors call`). Do not add it to login, info, or other CLI commands.** - Before using the CLI, always check if it is installed. Keep the timeout short so the check cannot stall the conversation: ```bash apify --help apify --version # The flag needs Apify CLI 1.5.0 or newer ``` - If the CLI is installed, check if it is logged in. Keep the timeout short so the check cannot stall the conversation: ```bash # Auth check — do NOT pipe to /dev/null, you need to see errors apify info 2>&1 ``` - If the CLI is not logged in, instruct the user to log in with the non-interactive flag: ```bash apify login --token TOKEN ``` - Authenticated Apify CLI commands need file access to `~/.apify/`, where the CLI keeps its credentials. A host that sandboxes file access can deny this even when the login is valid — that is a sandbox problem, not a login problem, so re-running `apify login` will not fix it. Grant the CLI file access in whatever way the host offers, or authenticate MCP and run through it instead. - Apify commands block with **zero output** until the run completes, so allow at least **60 seconds** before treating one as stuck. If your shell tool takes a timeout, raise it accordingly. - For long/unknown runs, use the async pattern instead: ```bash apify actors start "ACTOR_ID" -i 'JSON_INPUT' --user-agent apify-deepseek-harness-plugin/apify --json 2>/dev/null ``` Then poll with `apify runs info`: ```bash apify runs info RUN_ID --json ``` Check `.status` for `SUCCEEDED` or `FAILED`. ## Resources - Apify docs (quick reference): https://docs.apify.com/llms.txt - Apify docs (full): https://docs.apify.com/llms-full.txt - Actor details in markdown: append `.md` to any Apify Store URL ## DeepSeek Harness platform notes ### Before any Route 1 run: confirm you have a run transport Do this before running an Actor, and again any time you can search but cannot run. Look at your tool list: if nothing in it can start a run, you have no run transport, so do not assume one exists elsewhere and do not wait to be told. If your only Apify MCP tools are `mcp__apify__search-actors`, `mcp__apify__fetch-actor-details`, `mcp__apify__search-apify-docs`, and `mcp__apify__fetch-apify-docs`, you are in **discovery-only mode** (no `APIFY_TOKEN` was set when `dsh` started). In this state MCP can search and inspect Actors, but everything that needs authentication is unavailable: running Actors, reading datasets, accessing key-value stores, managing tasks, and retrieving run data or logs. Try the CLI instead: 1. Run `apify --help`. If the command is not found, go to step 4. 2. Run `apify info 2>&1`. If it shows `EPERM`, the `dsh` file sandbox is blocking `~/.apify/`, not your login, so do not retry `apify login`. The denial carries an escalation offer and dsh expects you to take it in the same turn: retry that exact command **once** with `sandbox_permissions: "danger-full-access"` and a one-sentence justification. Do not ask for `workspace-write`, which is already the current mode and is rejected as not wider. If the user approves, continue at step 3. If the user rejects it, that is final. Stop: run no further commands, and in particular do not try `apify login` in any form, with or without `--token`. It writes `~/.apify/auth.json`, the path that was just denied, so it fails the same way. Tell them "Switch to **Full access** sandbox mode in the `dsh` session toolbar, or set `APIFY_TOKEN` and restart `dsh`." The restart is not optional: the token is read once at startup, so exporting it mid-session changes nothing. 3. If `apify info` succeeds, **use the CLI for runs and data retrieval**, and MCP for search/inspect. You are done. 4. No authenticated transport is available. Tell the user: "Set `APIFY_TOKEN` in your environment and restart `dsh`, or install the Apify CLI with `npm install -g apify-cli`." Stop here. Never assume an unlisted tool exists or guess at a tool name. If nothing in your tool list can start a run, that is a fact about this session. When no transport is available, report that and stop. Do not replicate the Actor locally, do not write a script that imitates it, and never present constructed output as a run result. An Actor you could not run has no output, and inventing one is worse than reporting the block. Never ask the user to paste a token into the conversation. The token belongs in the environment or a `.env` file in the launch directory, and `dsh` must be restarted to read it. ### Other platform details - **Tool names are namespaced.** DeepSeek Harness exposes MCP tools as `mcp__<serverName>__<toolName>`, so the Apify ones all begin `mcp__apify__`. Read the tool list you actually have rather than assuming a name. - **MCP auth is a bearer token, never OAuth.** The DeepSeek Harness MCP client sends static headers only and has no OAuth flow — never tell the user to expect a browser sign-in. - **A 401 means the token is present but rejected.** The fix is a valid token, not a missing one. - If a sandbox denial comes with an escalation offer (`[sandbox: escalation available...]`), you may retry **once** with that escalation and a justification — the user gets an approval prompt. Keep every parameter the call already required; if the retry comes back rejected as malformed, missing an argument, or not strictly wider than the current mode, that is a call error and not a permission failure, so fix the call rather than reporting a privilege problem.
GitHub에서 보기