Use interagir para controlar uma sessão ativa do navegador — clique em botões, preencha formulários e extraia conteúdo dinâmico. Crie app/routes/interact.tsx:
import { json, type ActionFunctionArgs } from "@remix-run/node";import { Form, useActionData } from "@remix-run/react";import Firecrawl from "@mendable/firecrawl-js";const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });export async function action({ request }: ActionFunctionArgs) { const formData = await request.formData(); const url = formData.get("url") as string; const result = await firecrawl.scrape(url, { formats: ['markdown'] }); const scrapeId = result.metadata?.scrapeId; await firecrawl.interact(scrapeId, { prompt: 'Search for iPhone 16 Pro Max' }); const response = await firecrawl.interact(scrapeId, { prompt: 'Click on the first result and tell me the price' }); await firecrawl.stopInteraction(scrapeId); return json({ output: response.output });}export default function InteractPage() { const data = useActionData<typeof action>(); return ( <div> <Form method="post"> <input name="url" placeholder="URL para interagir..." /> <button type="submit">Interagir</button> </Form> {data?.output && <pre>{data.output}</pre>} </div> );}