diff --git a/api-reference/v2-openapi.json b/api-reference/v2-openapi.json index 3326fddcf..ae0bcd758 100644 --- a/api-reference/v2-openapi.json +++ b/api-reference/v2-openapi.json @@ -493,6 +493,32 @@ "description": "If true, this will enable zero data retention for this scrape. To enable this feature, please contact help@firecrawl.dev" } } + }, + { + "type": "object", + "properties": { + "alexandria": { + "oneOf": [ + { + "$ref": "#/components/schemas/AlexandriaCall" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 10, + "items": { + "$ref": "#/components/schemas/AlexandriaCall" + } + } + ], + "description": "Execute one or more catalogued provider tools instead of scraping a URL. Cannot be combined with `url`, `formats`, or other scrape options (400); the only allowed sibling keys are `timeout`, `origin`, and `integration`. Use the `x-request-id` request header as a client-chosen idempotency key (1 to 128 characters of letters, digits, `.`, `_`, `:`, `-`) — it is echoed back, and a completed request with the same key replays its original response and `scrape_id` instead of re-executing." + }, + "domainTools": { + "type": "boolean", + "default": false, + "description": "When true on an ordinary URL scrape, `data.tools` lists tool contracts matched to the scraped page's domain (same `DiscoveredTool` shape as search). Requires the team's Alexandria access to be enabled and no zero data retention (403 otherwise). Free." + } + } } ] } @@ -505,21 +531,148 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScrapeResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/ScrapeResponse" + }, + { + "$ref": "#/components/schemas/AlexandriaScrapeResponse" + } + ] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Bad request. `alexandria` cannot be combined with `url`, `formats`, or other scrape options, and only recognizes `provider`, `capability`, and `options`." + }, + "code": { + "type": "string" + }, + "chargeId": { + "type": "string" + } + } } } } }, "402": { - "description": "Payment required", + "description": "Payment required. Also returned as `insufficient_credits` when the team lacks the credits to execute an `alexandria` request; in that case nothing is executed.", "content": { "application/json": { "schema": { "type": "object", "properties": { + "success": { + "type": "boolean", + "example": false + }, "error": { "type": "string", "example": "Payment required to access this resource." + }, + "code": { + "type": "string", + "example": "insufficient_credits" + }, + "chargeId": { + "type": "string" + } + } + } + } + } + }, + "403": { + "description": "Forbidden. Returned when `alexandria` execution or `domainTools` is not enabled for the team, when zero data retention is active, or when third-party data terms have not been accepted (`THIRD_PARTY_DATA_TERMS_REQUIRED`, which includes `requiresAction`).", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string" + }, + "code": { + "type": "string", + "example": "THIRD_PARTY_DATA_TERMS_REQUIRED" + }, + "requiresAction": { + "type": "boolean", + "description": "Present when the team must take action (e.g. accept third-party data terms) before this request can be retried." + }, + "chargeId": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "Not found. Returned as `unknown_provider` when an `alexandria` call references a provider or capability that does not exist; nothing is executed.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string" + }, + "code": { + "type": "string", + "example": "unknown_provider" + }, + "chargeId": { + "type": "string" + } + } + } + } + } + }, + "409": { + "description": "Conflict. Returned as `duplicate_request` or `request_in_flight` when the same `x-request-id` is reused while the original request is still being processed or was already completed with different parameters.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string" + }, + "code": { + "type": "string", + "example": "duplicate_request" + }, + "chargeId": { + "type": "string", + "description": "The charge ID of the in-flight or original request." } } } @@ -565,6 +718,33 @@ } } } + }, + "503": { + "description": "Service unavailable. Returned as `request_unresolved` when the outcome of an in-flight `alexandria` request with this `x-request-id` could not be determined — keep the same `x-request-id` and retry rather than issuing a new request. Also returned as `billing_unavailable` when credits could not be charged.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string" + }, + "code": { + "type": "string", + "example": "request_unresolved" + }, + "chargeId": { + "type": "string", + "description": "The charge ID of the unresolved request. Reuse the same `x-request-id` to retry; do not create a new request." + } + } + } + } + } } } } @@ -4059,14 +4239,34 @@ "required": [ "type" ] + }, + { + "type": "object", + "title": "Alexandria", + "properties": { + "type": { + "type": "string", + "enum": [ + "alexandria" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false } ] }, - "description": "Sources to search. Will determine the arrays available in the response. Defaults to ['web'].", + "description": "Sources to search. Will determine the arrays available in the response. Defaults to ['web']. The plain string form (e.g. `[\"web\", \"alexandria\"]`) is also accepted. The `alexandria` source returns tool contracts discovered from the Alexandria catalogue in `data.tools` instead of search results; it is free and is never counted in `creditsUsed`. Requires the team's Alexandria access to be enabled (403 otherwise).", "default": [ "web" ] }, + "domainTools": { + "type": "boolean", + "description": "Include tool contracts whose provider matches the domains of the returned web results. Defaults to on when `alexandria` is among the sources; set `false` to disable, or `true` alone to add domain-matched tools beside ordinary web results. Free." + }, "categories": { "type": "array", "items": { @@ -4438,6 +4638,13 @@ } } } + }, + "tools": { + "type": "array", + "description": "Tool contracts discovered from the Alexandria catalogue. Present when `alexandria` is among the sources or when `domainTools` was requested; up to `limit` results per discovery source (semantic matches from the `alexandria` source, domain matches from `domainTools`).", + "items": { + "$ref": "#/components/schemas/DiscoveredTool" + } } }, "description": "The search results. The arrays available will depend on the sources you specified in the request. By default, the `web` array will be returned." @@ -4445,7 +4652,7 @@ "warning": { "type": "string", "nullable": true, - "description": "Warning message if any issues occurred" + "description": "Warning message if any issues occurred. Includes `Some tool discovery results are unavailable.` when Alexandria or domain tool discovery partially failed." }, "id": { "type": "string", @@ -10154,11 +10361,274 @@ "isMenu", "sections" ] + }, + "tools": { + "type": "array", + "nullable": true, + "description": "Tool contracts matched to the scraped page's domain. Present only when `domainTools` is `true` on the request. Requires Alexandria access and no zero data retention (403 otherwise); free.", + "items": { + "$ref": "#/components/schemas/DiscoveredTool" + } } } } } }, + "AlexandriaCall": { + "type": "object", + "description": "A single provider tool to execute from the Alexandria catalogue.", + "properties": { + "provider": { + "type": "string", + "minLength": 1, + "maxLength": 200, + "description": "The catalogued provider to call, e.g. `fred`." + }, + "capability": { + "type": "string", + "minLength": 1, + "maxLength": 200, + "description": "The provider-relative capability to invoke, e.g. `series/observations`." + }, + "options": { + "type": "object", + "default": {}, + "description": "Capability-specific options passed through to the provider tool." + } + }, + "required": [ + "provider", + "capability" + ] + }, + "AlexandriaResult": { + "type": "object", + "description": "The outcome of one executed Alexandria call, returned in the same order as the request.", + "oneOf": [ + { + "type": "object", + "title": "Success", + "properties": { + "provider": { + "type": "string", + "description": "The provider that was called." + }, + "capability": { + "type": "string", + "description": "The capability that was invoked." + }, + "creditsCost": { + "type": "integer", + "minimum": 0, + "description": "Credits charged for this call." + }, + "data": { + "description": "The provider's response payload." + }, + "records": { + "type": "integer", + "description": "Number of records returned, when applicable." + }, + "upstreamStatus": { + "type": "integer", + "description": "HTTP status code returned by the upstream provider, when applicable." + } + }, + "required": [ + "provider", + "capability", + "creditsCost", + "data" + ] + }, + { + "type": "object", + "title": "Error", + "properties": { + "provider": { + "type": "string", + "description": "The provider that was called." + }, + "capability": { + "type": "string", + "description": "The capability that was invoked." + }, + "creditsCost": { + "type": "integer", + "default": 0, + "description": "Always 0 for a failed call." + }, + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code for this call." + }, + "message": { + "type": "string", + "description": "Human-readable error message for this call." + }, + "status": { + "type": "integer", + "description": "HTTP status code returned by the upstream provider, when applicable." + } + }, + "required": [ + "code", + "message" + ] + } + }, + "required": [ + "error" + ] + } + ] + }, + "DiscoveredTool": { + "type": "object", + "description": "A catalogued provider tool discovered via Alexandria, semantic search, or domain matching.", + "additionalProperties": true, + "properties": { + "id": { + "type": "string", + "description": "The tool's identifier, formatted as `provider/capability`." + }, + "provider": { + "type": "string", + "description": "The catalogued provider." + }, + "capability": { + "type": "string", + "description": "The provider-relative capability." + }, + "name": { + "type": "string", + "description": "Human-readable name of the tool." + }, + "description": { + "type": "string", + "description": "Human-readable description of what the tool does." + }, + "creditsCost": { + "type": "integer", + "minimum": 0, + "description": "Credits charged per execution of this tool." + }, + "perRecord": { + "type": "boolean", + "description": "Whether `creditsCost` is charged per record returned rather than per call." + }, + "options": { + "type": "array", + "description": "The capability's accepted options.", + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "The option name." + }, + "type": { + "type": "string", + "description": "The option's data type." + } + } + } + }, + "response": { + "type": "object", + "additionalProperties": true, + "description": "Description of the shape of a successful response's `data`.", + "properties": { + "about": { + "type": "string", + "description": "Human-readable description of the response payload." + }, + "key": { + "type": "string", + "description": "The key under which the primary payload is returned, when applicable." + }, + "fields": { + "type": "array", + "description": "The response's documented fields.", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "matchedBy": { + "type": "array", + "description": "Why this tool was surfaced.", + "items": { + "type": "string", + "enum": [ + "semantic", + "domain" + ] + } + }, + "matchedUrls": { + "type": "array", + "description": "URLs whose domain matched this tool, when matched by domain.", + "items": { + "type": "string" + } + } + }, + "required": [ + "id", + "provider", + "capability", + "name", + "description", + "creditsCost", + "perRecord" + ] + }, + "AlexandriaScrapeResponse": { + "type": "object", + "description": "Response returned when the request executed Alexandria provider tools instead of scraping a URL.", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "scrape_id": { + "type": "string", + "description": "Identifier for this request. A completed request replays the same response and `scrape_id` when retried with the same `x-request-id`." + }, + "data": { + "type": "object", + "properties": { + "alexandria": { + "type": "array", + "description": "Results for each requested Alexandria call, in the same order as the request.", + "items": { + "$ref": "#/components/schemas/AlexandriaResult" + } + }, + "creditsCost": { + "type": "integer", + "description": "Sum of `creditsCost` across successful items." + } + }, + "required": [ + "alexandria", + "creditsCost" + ] + } + }, + "required": [ + "success", + "scrape_id", + "data" + ] + }, "CrawlStatusResponseObj": { "type": "object", "properties": { diff --git a/docs.json b/docs.json index 65de8d829..38ca3b28f 100755 --- a/docs.json +++ b/docs.json @@ -4859,6 +4859,10 @@ ] }, "redirects": [ + { + "source": "/features/exchange", + "destination": "/features/alexandria" + }, { "destination": "/api-reference/endpoint/browser-create", "source": "/api-reference/endpoint/browser-create-session" diff --git a/es/features/change-tracking.mdx b/es/features/change-tracking.mdx index bbe6bc2d0..c92681df5 100644 --- a/es/features/change-tracking.mdx +++ b/es/features/change-tracking.mdx @@ -43,7 +43,7 @@ La respuesta incluye estos campos en el objeto `changeTracking`: ## Uso básico -Incluye tanto `markdown` como `seguimientoDeCambios` en el array `formats`. El formato `markdown` es obligatorio porque seguimientoDeCambios compara las páginas según su contenido en markdown. +Incluye tanto `markdown` como `changeTracking` en el array `formats`. El formato `markdown` es obligatorio porque changeTracking compara las páginas según su contenido en markdown. ```python Python @@ -551,7 +551,7 @@ Plataformas sin código como **n8n**, **Zapier** y **Make** pueden llamar perió ## Webhooks -Para operaciones asíncronas como `crawl` y *batch scrape*, usa [webhooks](/es/webhooks/overview) para recibir resultados de seguimientoDeCambios a medida que llegan en lugar de hacer *polling*. +Para operaciones asíncronas como `crawl` y *batch scrape*, usa [webhooks](/es/webhooks/overview) para recibir resultados de changeTracking a medida que llegan en lugar de hacer *polling*. ```python Python @@ -643,7 +643,7 @@ Para más detalles sobre la configuración de webhooks (encabezados, metadatos, ## Referencia de configuración -El conjunto completo de opciones disponibles al pasar un objeto de formato `seguimientoDeCambios`: +El conjunto completo de opciones disponibles al pasar un objeto de formato `changeTracking`: | Parameter | Type | Default | Description | |-----------|------|---------|-------------| diff --git a/es/features/fast-scraping.mdx b/es/features/fast-scraping.mdx index 9bc3113e7..1ea433af0 100644 --- a/es/features/fast-scraping.mdx +++ b/es/features/fast-scraping.mdx @@ -97,7 +97,7 @@ La caché se omite automáticamente cuando tu solicitud incluye cualquiera de lo * `headers` personalizados * `actions` (pasos de automatización del navegador) * Un `profile` del navegador -* Formato `seguimientoDeCambios` +* Formato `changeTracking` * Configuración personalizada de viewport o calidad de `screenshot`
diff --git a/es/features/search.mdx b/es/features/search.mdx index 480a221b6..5fae77f1f 100644 --- a/es/features/search.mdx +++ b/es/features/search.mdx @@ -655,7 +655,7 @@ Para ayudar a controlar los costos: ## Opciones avanzadas de scraping
-Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y seguimientoDeCambios, es compatible con este punto de conexión de búsqueda. +Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y changeTracking, es compatible con este punto de conexión de búsqueda. > ¿Eres un agente de IA que necesita una API key de Firecrawl? Consulta [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para ver las instrucciones de incorporación automatizada. diff --git a/es/sdks/cli.mdx b/es/sdks/cli.mdx index 85149e271..98a50c39e 100644 --- a/es/sdks/cli.mdx +++ b/es/sdks/cli.mdx @@ -153,7 +153,7 @@ Extrae el contenido de una única URL en distintos formatos. | Opción | Alias | Descripción | | ------------------------ | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--url ` | `-u` | URL para hacer scrape (alternativa al argumento posicional) | -| `--format ` | `-f` | Formatos de salida (separados por comas): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `seguimientoDeCambios`, `attributes`, `branding` | +| `--format ` | `-f` | Formatos de salida (separados por comas): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `changeTracking`, `attributes`, `branding` | | `--html` | `-H` | Atajo para `--format html` | | `--only-main-content` | | Extraer solo el contenido principal | | `--wait-for ` | | Tiempo de espera en milisegundos para el renderizado de JS | diff --git a/es/v1/features/search.mdx b/es/v1/features/search.mdx index 96a0e6a9e..05114da71 100644 --- a/es/v1/features/search.mdx +++ b/es/v1/features/search.mdx @@ -369,4 +369,4 @@ Para ayudar a controlar los costos: ## Opciones avanzadas de scraping -Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y la función de seguimientoDeCambios, es compatible con este punto de conexión de búsqueda. \ No newline at end of file +Para más detalles sobre las opciones de scraping, consulta la [documentación de la función Scrape](https://docs.firecrawl.dev/features/scrape). Todo, excepto FIRE-1 (Agente) y la función de changeTracking, es compatible con este punto de conexión de búsqueda. \ No newline at end of file diff --git a/es/webhooks/events.mdx b/es/webhooks/events.mdx index aeff3fa7a..0d75d2c7e 100644 --- a/es/webhooks/events.mdx +++ b/es/webhooks/events.mdx @@ -72,7 +72,7 @@ Se envía cuando la tarea de rastreo comienza a procesarse. ```json { "success": true, - "type": "rastreo.iniciado", + "type": "crawl.started", "id": "550e8400-e29b-41d4-a716-446655440000", "data": [], "metadata": {} diff --git a/features/alexandria.mdx b/features/alexandria.mdx new file mode 100644 index 000000000..5eb85aa86 --- /dev/null +++ b/features/alexandria.mdx @@ -0,0 +1,191 @@ +--- +title: "Alexandria" +description: "The knowledge library for superintelligence" +og:title: "Alexandria | Firecrawl" +og:description: "Discover and use data tools through Firecrawl, with just the context your agent needs." +icon: "books" +--- + +import AlexandriaJourney from "/snippets/alexandria-journey.mdx"; + + + +Alexandria gives agents access to structured data through Firecrawl. Discover a tool, inspect its inputs, then run it. Discovery is free; execution uses the credits listed on the tool. + +[Browse providers](https://www.firecrawl.dev/app/alexandria) · [Manage provider terms](https://www.firecrawl.dev/app/settings?tab=data-sources) + +## Built for agents + +Install the [CLI](/sdks/cli) or connect the [MCP server](/mcp-server). + + + +```bash +# Find tools alongside web results. +firecrawl search "podcast conversations about AI agents" --sources web,alexandria --domain-tools --limit 2 + +# Inspect inputs and pricing. +firecrawl find-tools --providers particle --level tools --expand options,response + +# Run the tool. +firecrawl scrape particle/podcasts/episodes/search --options '{"keyword_search":"AI agents","limit":2}' +``` + Install with `npm install -g firecrawl-cli` and sign in with `firecrawl login`. + + + Ask your agent: "Find Particle's podcast tools, inspect episode-search inputs and pricing, then find conversations about AI agents." + + The agent uses `firecrawl_search` to discover tools, `firecrawl_find_tools` to inspect them, and `firecrawl_scrape` to execute them. + + + +## Use it from the SDKs and API + + + + Describe what you need. Alexandria returns relevant tools alongside your web results. + + +```javascript JavaScript +const result = await firecrawl.search( + "podcast conversations about AI agents", + { + sources: ["web", "alexandria"], + limit: 2, + }, +); +``` + +```python Python +result = firecrawl.search( + "podcast conversations about AI agents", + sources=["web", "alexandria"], + limit=2, +) +``` + +```bash cURL +curl https://api.firecrawl.dev/v2/search \ + -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "query": "podcast conversations about AI agents", + "sources": [ + "web", + "alexandria" + ], + "limit": 2 +}' +``` + + + Results contain `web` pages and ranked `tools`. Each tool includes its provider, capability, inputs, response contract, and price. + + + + Read the selected tool's `options`, `response`, and execution price before calling it. Use [Find Tools](#find-tools) for more detail. + + + + Use `scrape` to call the tool with the inputs from its contract. Supply the provider and capability under `alexandria`; no page URL is needed. + + +```javascript JavaScript +const episodes = await firecrawl.scrape({ + alexandria: { + provider: "particle", + capability: "podcasts/episodes/search", + options: { + semantic_search: "AI agents", + limit: 2, + }, + }, +}); + +console.log(episodes.alexandria[0].data); +``` + +```python Python +episodes = firecrawl.scrape( + alexandria={ + "provider": "particle", + "capability": "podcasts/episodes/search", + "options": { + "semantic_search": "AI agents", + "limit": 2, + }, + }, +) + +print(episodes.alexandria[0].data) +``` + +```bash cURL +REQUEST_ID="$(uuidgen)" + +curl https://api.firecrawl.dev/v2/scrape \ + -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ + -H "Content-Type: application/json" \ + -H "x-request-id: $REQUEST_ID" \ + -d '{ + "alexandria": { + "provider": "particle", + "capability": "podcasts/episodes/search", + "options": { + "semantic_search": "AI agents", + "limit": 2 + } + } +}' +``` + + + Read the result from `episodes.alexandria[0].data`. Check each tool result for errors before using its data. Raw HTTP responses wrap the SDK result in `data`. + + + +## Find Tools + +Use `findTools` / `find_tools` to browse providers and inspect their tools for free. Follow an item's `next` request for more detail; the top-level `next` paginates the catalogue. + + +```javascript JavaScript +const catalogue = await firecrawl.findTools({ + providers: ["particle"], + limit: 2, +}); + +// Each next request reveals another part of the catalogue. +const next = catalogue.items[0]?.next; +if (next) { + const details = await firecrawl.scrape({ alexandria: next }); + console.log(details.alexandria[0].data); +} +``` + +```python Python +catalogue = firecrawl.find_tools(providers=["particle"], limit=2) + +if catalogue.items and catalogue.items[0].get("next"): + details = firecrawl.scrape(alexandria=catalogue.items[0]["next"]) + print(details.alexandria[0].data) +``` + + +## Pricing and access + +- **Tool discovery:** free. Use `sources: ["alexandria"]` for tools only, or `["web", "alexandria"]` to include paid web results. +- **Execution:** charged at the tool's listed price. +- **Provider terms:** a `THIRD_PARTY_DATA_TERMS_REQUIRED` error includes `requiresAction.url`. An org admin must review and accept the terms there. Agents need explicit user authorization before accepting terms. + + + + Add `domainTools: true` to a search or ordinary URL scrape to include tools matched to the website. Matching is free; the web search or page scrape is billed normally. Results include `matchedBy` and `matchedUrls`. + + Search enables domain matching by default when `sources` includes `alexandria`; set `domainTools: false` to disable it. For URL scrapes, domain matching is off by default. + + + +## Feedback + +Report issues or request capabilities with `firecrawl alexandria feedback`. Run `firecrawl alexandria feedback --help` for options. diff --git a/fr/features/change-tracking.mdx b/fr/features/change-tracking.mdx index 3b5332e27..475e673c3 100644 --- a/fr/features/change-tracking.mdx +++ b/fr/features/change-tracking.mdx @@ -8,7 +8,7 @@ og:description: "Détecter et surveiller les changements dans le contenu web ent ![Change Tracking](/images/launch-week/lw3d12.webp) -Le suivi des modifications compare le contenu actuel d’une page à celui de la dernière fois où vous l’avez extraite. Ajoutez `suiviDesModifications` à votre tableau `formats` pour détecter si une page est nouvelle, inchangée ou modifiée et, si vous le souhaitez, obtenir un diff structuré de ce qui a changé. +Le suivi des modifications compare le contenu actuel d’une page à celui de la dernière fois où vous l’avez extraite. Ajoutez `changeTracking` à votre tableau `formats` pour détecter si une page est nouvelle, inchangée ou modifiée et, si vous le souhaitez, obtenir un diff structuré de ce qui a changé. * Fonctionne avec `/scrape`, `/crawl` et `/batch/scrape` * Deux modes de diff : `git-diff` pour les changements au niveau des lignes, `json` pour la comparaison au niveau des champs @@ -43,7 +43,7 @@ La réponse inclut ces champs dans l'objet `changeTracking` : ## Utilisation de base -Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `formats`. Le format `markdown` est obligatoire, car la fonctionnalité de suivi des modifications compare les pages à partir de leur contenu Markdown. +Incluez à la fois `markdown` et `changeTracking` dans le tableau `formats`. Le format `markdown` est obligatoire, car la fonctionnalité de suivi des modifications compare les pages à partir de leur contenu Markdown. ```python Python @@ -53,7 +53,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format result = firecrawl.scrape( "https://example.com/pricing", - formats=["markdown", "suiviDesModifications"] + formats=["markdown", "changeTracking"] ) print(result.changeTracking) @@ -65,7 +65,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" }); const result = await firecrawl.scrape('https://example.com/pricing', { - formats: ['markdown', 'suiviDesModifications'] + formats: ['markdown', 'changeTracking'] }); console.log(result.changeTracking); @@ -77,7 +77,7 @@ Incluez à la fois `markdown` et `suiviDesModifications` dans le tableau `format -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/pricing", - "formats": ["markdown", "suiviDesModifications"] + "formats": ["markdown", "changeTracking"] }' ``` @@ -176,7 +176,7 @@ L'objet `diff` contient à la fois un diff en texte brut et une représentat ```json { - "suiviDesModifications": { + "changeTracking": { "previousScrapeAt": "2025-06-01T10:00:00.000+00:00", "changeStatus": "changed", "visibility": "visible", diff --git a/fr/features/monitoring.mdx b/fr/features/monitoring.mdx index 724ef4e3e..589fcc9a3 100644 --- a/fr/features/monitoring.mdx +++ b/fr/features/monitoring.mdx @@ -165,7 +165,7 @@ L'intervalle minimal est de 5 minutes. Les réponses de l'API renvoient ## Suivi des modifications -Les moniteurs [Page](/fr/features/monitoring-page) et [website](/fr/features/monitoring-website) calculent par défaut les différences dans le markdown de chaque page et indiquent `same`, `changed`, `new`, `removed` ou `error`. Le même calcul de différences est disponible en un seul appel via le format [suivi des modifications](/fr/features/change-tracking) lorsque vous exécutez vous-même le scrape. Si vous souhaitez détecter des modifications dans des **champs structurés précis** (prix, titre, indicateur de disponibilité, éléments d’une liste, etc.), activez le suivi des modifications en mode JSON en ajoutant le format `suiviDesModifications` avec `modes: ["json"]` aux `scrapeOptions` de la cible. +Les moniteurs [Page](/fr/features/monitoring-page) et [website](/fr/features/monitoring-website) calculent par défaut les différences dans le markdown de chaque page et indiquent `same`, `changed`, `new`, `removed` ou `error`. Le même calcul de différences est disponible en un seul appel via le format [suivi des modifications](/fr/features/change-tracking) lorsque vous exécutez vous-même le scrape. Si vous souhaitez détecter des modifications dans des **champs structurés précis** (prix, titre, indicateur de disponibilité, éléments d’une liste, etc.), activez le suivi des modifications en mode JSON en ajoutant le format `changeTracking` avec `modes: ["json"]` aux `scrapeOptions` de la cible. Le suivi des modifications s’applique aux cibles `scrape` et `crawl`. Les moniteurs web à grande échelle (`search`) génèrent des alertes sur les nouveaux résultats plutôt que de calculer des différences sur des pages connues. Voir [Statuses and dedup](/fr/features/monitoring-web-scale#statuses-and-dedup). @@ -183,7 +183,7 @@ Lorsque `scrapeOptions.formats` vaut simplement `["markdown"]`, chaque page modi ### mode JSON -Transmettez un format `suiviDesModifications` avec `modes: ["json"]`, ainsi qu’un schéma JSON (ou un `prompt`) décrivant les champs qui vous intéressent. Firecrawl extrait ce JSON à chaque vérification et génère un **diff par champ** indexé par le chemin du champ, ainsi qu’un `snapshot.json` contenant l’extraction complète actuelle, afin que les consommateurs n’aient pas à récupérer à nouveau le scrape sous-jacent. +Transmettez un format `changeTracking` avec `modes: ["json"]`, ainsi qu’un schéma JSON (ou un `prompt`) décrivant les champs qui vous intéressent. Firecrawl extrait ce JSON à chaque vérification et génère un **diff par champ** indexé par le chemin du champ, ainsi qu’un `snapshot.json` contenant l’extraction complète actuelle, afin que les consommateurs n’aient pas à récupérer à nouveau le scrape sous-jacent. diff --git a/fr/sdks/cli.mdx b/fr/sdks/cli.mdx index 7bf6eb3b6..535119a42 100644 --- a/fr/sdks/cli.mdx +++ b/fr/sdks/cli.mdx @@ -153,7 +153,7 @@ Analysez une seule URL et extrayez son contenu dans différents formats. | Option | Forme courte | Description | | ------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--url ` | `-u` | URL à Scrape (alternative à l'argument positionnel) | -| `--format ` | `-f` | formats de sortie (séparés par des virgules) : `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `suiviDesModifications`, `attributes`, `branding` | +| `--format ` | `-f` | formats de sortie (séparés par des virgules) : `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `changeTracking`, `attributes`, `branding` | | `--html` | `-H` | Raccourci pour `--format html` | | `--only-main-content` | | Extraire uniquement le contenu principal | | `--wait-for ` | | Temps d'attente en millisecondes pour le rendu JS | diff --git a/fr/v1/features/search.mdx b/fr/v1/features/search.mdx index 58f9f8011..ec760ac0e 100644 --- a/fr/v1/features/search.mdx +++ b/fr/v1/features/search.mdx @@ -369,4 +369,4 @@ Pour maîtriser les coûts : ## Options de scraping avancées -Pour plus de détails sur les options de scraping, consultez la [documentation de la fonctionnalité Scrape](https://docs.firecrawl.dev/features/scrape). Tout, à l’exception de FIRE-1 (Agent) et du suiviDesModifications, est pris en charge par ce point de terminaison Search. \ No newline at end of file +Pour plus de détails sur les options de scraping, consultez la [documentation de la fonctionnalité Scrape](https://docs.firecrawl.dev/features/scrape). Tout, à l’exception de FIRE-1 (Agent) et du changeTracking, est pris en charge par ce point de terminaison Search. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-openapi.json b/pt-BR/api-reference/v1-openapi.json index ee6e70744..ec2433469 100644 --- a/pt-BR/api-reference/v1-openapi.json +++ b/pt-BR/api-reference/v1-openapi.json @@ -961,7 +961,7 @@ "type": "object" }, "changeTracking": { - "description": "Informações de rastreioDeMudanças se `changeTracking` estiver em `formats`. Só estará presente quando o formato `changeTracking` for solicitado.", + "description": "Informações de changeTracking se `changeTracking` estiver em `formats`. Só estará presente quando o formato `changeTracking` for solicitado.", "nullable": true, "properties": { "changeStatus": { diff --git a/pt-BR/features/change-tracking.mdx b/pt-BR/features/change-tracking.mdx index 2a03597f8..e16bca58e 100644 --- a/pt-BR/features/change-tracking.mdx +++ b/pt-BR/features/change-tracking.mdx @@ -176,7 +176,7 @@ O objeto `diff` contém um diff em texto simples e uma representação JSON estr ```json { - "rastreioDeMudanças": { + "changeTracking": { "previousScrapeAt": "2025-06-01T10:00:00.000+00:00", "changeStatus": "changed", "visibility": "visible", @@ -701,7 +701,7 @@ O conjunto completo de opções disponível ao passar um objeto no formato `chan - O formato `markdown` deve sempre ser incluído junto com `changeTracking`. O rastreioDeMudanças compara páginas com base no conteúdo em markdown. + O formato `markdown` deve sempre ser incluído junto com `changeTracking`. O changeTracking compara páginas com base no conteúdo em markdown. * **Retenção de snapshots**: Snapshots são armazenados de forma persistente e não expiram. Uma raspagem feita meses após a anterior ainda será comparada corretamente com o snapshot anterior. diff --git a/pt-BR/sdks/cli.mdx b/pt-BR/sdks/cli.mdx index dfe1b726c..69e448702 100644 --- a/pt-BR/sdks/cli.mdx +++ b/pt-BR/sdks/cli.mdx @@ -153,7 +153,7 @@ Faça scraping de uma única URL e extraia seu conteúdo em vários formatos. | Opção | Atalho | Descrição | | ------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--url ` | `-u` | URL para extrair conteúdo (alternativa ao argumento posicional) | -| `--format ` | `-f` | formatos de saída (separados por vírgula): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `rastreioDeMudanças`, `attributes`, `branding` | +| `--format ` | `-f` | formatos de saída (separados por vírgula): `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `images`, `summary`, `changeTracking`, `attributes`, `branding` | | `--html` | `-H` | Atalho para `--format html` | | `--only-main-content` | | Extrair apenas o conteúdo principal | | `--wait-for ` | | Tempo de espera, em milissegundos, para renderização de JS | diff --git a/pt-BR/v0/sdks/node.mdx b/pt-BR/v0/sdks/node.mdx index d77e8df55..72ce23f02 100644 --- a/pt-BR/v0/sdks/node.mdx +++ b/pt-BR/v0/sdks/node.mdx @@ -67,7 +67,7 @@ Para extrair o conteúdo de uma única URL com tratamento de erros, use o métod ```js const url = 'https://exemplo.com'; -const dadosRaspados = await app.scrapeUrl(url); +const scrapedData = await app.scrapeUrl(url); ```
diff --git a/pt-BR/v1/features/search.mdx b/pt-BR/v1/features/search.mdx index 19847ec1e..14c333f44 100644 --- a/pt-BR/v1/features/search.mdx +++ b/pt-BR/v1/features/search.mdx @@ -369,4 +369,4 @@ Para ajudar a controlar os custos: ## Opções avançadas de scraping
-Para mais detalhes sobre as opções de scraping, consulte a [documentação do recurso de Scrape](https://docs.firecrawl.dev/features/scrape). Tudo, exceto o FIRE-1 (Agente) e o recurso de rastreioDeMudanças, é compatível com este endpoint de Search. \ No newline at end of file +Para mais detalhes sobre as opções de scraping, consulte a [documentação do recurso de Scrape](https://docs.firecrawl.dev/features/scrape). Tudo, exceto o FIRE-1 (Agente) e o recurso de changeTracking, é compatível com este endpoint de Search. \ No newline at end of file diff --git a/snippets/alexandria-journey.mdx b/snippets/alexandria-journey.mdx new file mode 100644 index 000000000..a40078e99 --- /dev/null +++ b/snippets/alexandria-journey.mdx @@ -0,0 +1,352 @@ +