ワンクリックで
firecrawl-via-nyxid
Teach an aevatar agent to run Firecrawl web-research/agent jobs through NyxID (submit, poll, then read the result).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Teach an aevatar agent to run Firecrawl web-research/agent jobs through NyxID (submit, poll, then read the result).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Aevatar scheduling & workflow automation: scheduled_agent_creator (cron/one-shot), the long-running task automation playbook, workflow creation semantics (Scope Workflow vs Ornn publish), agent_builder lifecycle, and scheduled-run credential lifetimes (5-minute broker token at fire) with a token_expired triage protocol.
Aevatar channel & delivery how-to: capability tools (code_execute, nyxid_proxy, GitHub PAT fallback, channel bots), token_expired/401 credential triage for capability tools, LLM route selection slash commands, channel_registrations (staged Lark provisioning), and agent_delivery_targets binding.
Configure and prove Aevatar codex_exec for one NyxID account, choosing either operator-managed OpenSandbox or a private NyxID node-backed SSH service. Use for managed allowlist/binding readiness, node registration, forced-command hardening, service binding, Codex authentication/workspace configuration, mandatory public-sample verification, or diagnosing managed sandbox and private SSH failures.
Mount and run harmless Aevatar workflows that prove codex_exec works through either the operator-managed OpenSandbox target or a private NyxID node-backed SSH target. Use after configuring managed access or a personal node, before real tasks, and when diagnosing identity, allowlist, binding, sandbox, service, principal, or Codex runner failures.
Decide — honestly — whether a thing the user wants to build on Aevatar is possible, what its prerequisites are, or why it cannot be done, BEFORE anyone starts building. Use this first whenever a user describes a goal rather than a concrete artifact — "can aevatar do X", "I want a bot that…", "build me something that posts to Twitter / reads my GitHub / replies on Telegram", "is it possible to…", "automate … every day", "let Lark Base trigger a workflow". It teaches the one hard premise (every third-party capability is brokered by NyxID), the two distinct surfaces (outbound connector vs inbound channel), external HTTP trigger options such as Lark Base automation, how to check what is actually connectable, the prerequisite for each capability class, what is host-gated (and so not self-serve), and what is genuinely impossible without new NyxID/Aevatar platform work — so you can negotiate scope and give the user a straight answer plus next steps instead of over-promising. It scopes; it does not build (hand off to
Entry point, panorama, and router for the entire Aevatar skill family — load this FIRST whenever someone wants to build, run, publish, schedule, externally trigger, or operate anything on Aevatar ("create an agent team", "make a workflow / member", "publish or bind a service", "register it with NyxID", "set up a recurring / cron run", "invoke my service", "let Lark Base trigger my workflow"), wants to know whether something is even possible ("can Aevatar do X?", "能不能用 aevatar 实现"), or just wants to know what Aevatar can do. It teaches the object model (scope → team → member[workflow|script|gagent] → service → schedule/external trigger), how to authenticate as a NyxID-bearer REST client, how to resolve your scope, and the two caller modes (client REST vs in-session server-side tools). It does not do the work itself — it routes you to the right companion skill (feasibility-advisor, workflow-authoring, team-builder, service-publisher, scheduler, plus diagnostics probes and the safety-net fallback), held together
| name | firecrawl-via-nyxid |
| description | Teach an aevatar agent to run Firecrawl web-research/agent jobs through NyxID (submit, poll, then read the result). |
| version | 1.1 |
| metadata | {"category":"plain","tag":["firecrawl","web-scraping","web-research","nyxid","aevatar"]} |
This skill teaches an aevatar agent how to drive Firecrawl through NyxID. NyxID brokers Firecrawl as a connected service and injects the user's Firecrawl API key automatically, so the agent never handles the raw fc-... key.
Firecrawl turns the live web into data. It offers:
urls to focus on and a JSON schema for structured output) and it browses, searches, and extracts on its own. It can work even without a URL.Reach for Firecrawl whenever you need fresh web data or structured extraction that the model cannot answer from its own knowledge — current prices, recent events, competitor pages, documentation lookups, or assembling a structured dataset from across the web. The agent operation is the most powerful: hand it a question and it figures out where to look.
This skill focuses on the agent operation (async submit -> poll -> result), but the same NyxID service slug reaches every Firecrawl endpoint listed above.
Firecrawl is brokered as NyxID service slug api-firecrawl (base https://api.firecrawl.dev, bearer auth). Before any agent can call it, the scope owner (a human, not the agent) connects it once with their Firecrawl API key:
POST /api/v1/keys
{ "service_slug": "api-firecrawl", "credential": "fc-..." }
This is a one-time setup step performed by the owner — the agent does not do this and never sees the key. After connecting, NyxID injects the key on every brokered request.
How the agent checks it is available. Confirm api-firecrawl appears in the connected-services list before calling it:
nyxid_services with {"action":"list"}, orGET /api/v1/servicesLook for an entry whose slug is api-firecrawl. If it is absent, Firecrawl is not connected yet — the agent cannot call it until the owner connects it (above). Surface that to the user rather than failing silently.
There are two interchangeable ways to invoke Firecrawl. Both go through NyxID; both inject the key automatically.
NyxID publishes an x-aevatar-tool OpenAPI overlay (live at GET {NYX}/api/v1/catalog-specs/firecrawl/openapi.json) that aevatar auto-discovers and materializes into typed workflow/agent tools. By the NyxID connected-service naming convention nyxid_{service_slug}__{operation}, the two operations become:
nyxid_api-firecrawl__agent (writes — readOnly: false)nyxid_api-firecrawl__agent_status (read-only — readOnly: true)Confirm the exact tool names by listing your available tools, since hyphen handling in the slug may be normalized in your environment.
Call nyxid_api-firecrawl__agent with the submit arguments, take the returned id, then call nyxid_api-firecrawl__agent_status with { "id": "<id>" } and repeat until the status is terminal.
nyxid_proxy tool call (always works, name-stable)When typed tools are not present, or you want a name-stable path, use the generic nyxid_proxy tool. It is the most reliable option and reaches every Firecrawl endpoint on the same slug.
Submit:
{
"tool": "nyxid_proxy",
"arguments": "{\"slug\":\"api-firecrawl\",\"path\":\"/v2/agent\",\"method\":\"POST\",\"body\":{\"prompt\":\"...\",\"model\":\"spark-1-mini\"}}"
}
Poll (substitute the id returned from submit):
{
"tool": "nyxid_proxy",
"arguments": "{\"slug\":\"api-firecrawl\",\"path\":\"/v2/agent/<id>\",\"method\":\"GET\"}"
}
The same slug also reaches the other operations for non-agent use — e.g. path: "/v2/scrape", /v2/crawl, /v2/search, /v2/map, /v2/extract.
These are the shapes the typed tools and the proxy wrap. Match them exactly.
Submit — POST /v2/agent:
{
"prompt": "<string, REQUIRED, <= 10000 chars>",
"model": "spark-1-mini", // default, cheaper | "spark-1-pro"
"urls": ["<string>"], // optional — focus/constrain the search
"schema": { "<JSON schema>": "..." },// optional — structured output
"maxCredits": 2500, // optional, default 2500
"strictConstrainToURLs": false // optional
}
Returns:
{ "success": true, "id": "<jobId, a UUID>", "status": "processing" }
Poll — GET /v2/agent/{id}:
{
"success": true,
"status": "processing", // "processing" | "completed" | "failed" | "cancelled"
"data": { }, // present when status == "completed"
"creditsUsed": 0,
"expiresAt": "<iso timestamp>"
}
Keep polling while status is processing. Stop on the terminal states completed (read data), failed, or cancelled. Results are retained for roughly 24 hours.
The Firecrawl agent is asynchronous: a submit returns immediately with a job id, and the job finishes in minutes — sometimes longer. You must submit once, then poll the status until it reaches a terminal state.
nyxid_api-firecrawl__agent (or the nyxid_proxy submit) with your prompt → get id.nyxid_api-firecrawl__agent_status (or the nyxid_proxy poll) with that id.status is processing, wait briefly and poll again. When status is completed, read data; on failed/cancelled, report the failure.Model it as: a tool_call submit → a while loop that polls with a delay between iterations → a switch on status to a terminal branch. Do not hand-roll the loop from memory — the engine's exact step syntax is easy to get wrong. Start from the canonical templates below and adapt them.
The one shape worth memorizing is the NyxID call itself. In real aevatar DSL a tool_call step puts tool/arguments under parameters:, interpolation uses ${...}, and you read a JSON field of a prior step's result with ${steps.<id>.json.<field>}:
- id: submit
type: tool_call
parameters:
tool: nyxid_proxy
arguments: '{"slug":"api-firecrawl","path":"/v2/agent","method":"POST","body":{"prompt":"Find ACME Cloud pricing tiers","model":"spark-1-mini","maxCredits":2500}}'
next: poll
# the submitted job id is then available as ${steps.submit.json.id}
Other real-DSL facts you will need: branching is switch with parameters: { on: "...", branch.<key>: <step-id> } plus a branches: map; delay takes parameters: { duration_ms: "5000" } (string value); a poll step's path interpolates the id, e.g. "/v2/agent/${steps.submit.json.id}". For the full submit → poll-loop → branch wiring, reuse the canonical templates rather than rewriting the loop.
aevatar already ships canonical templates for exactly this pattern, registered in its WorkflowDefinitionCatalog — prefer them over hand-rolling:
firecrawl_agent_async_submit.yamlfirecrawl_agent_async_poll.yamlEngine caps to respect: delay ≤ 5 minutes (duration_ms), while ≤ 1,000,000 iterations, wait_signal ≤ 24 hours. For multi-hour jobs that could exceed a single run's budget, do not block — decompose the wait across runs with self_reschedule.
maxCredits). Status polling is free — poll as needed.spark-1-mini (the default): it is roughly 60% cheaper than spark-1-pro. Only reach for spark-1-pro when a job genuinely needs the stronger model.maxCredits to cap spend per job.api-firecrawl once in NyxID (POST /api/v1/keys).api-firecrawl is in the connected-services list.model: spark-1-mini, a maxCredits cap, optional urls/schema) → get id.agent_status / GET /v2/agent/{id} until status is terminal; read data on completed.tool_call submit → while + delay poll → switch on status, or reuse the canonical firecrawl_agent_async_* templates.