Как мигрировать с Firecrawl на Nstdata: Руководство для разработчиков
TL;DR
Переход от Firecrawl к Nstdata - это миграция адаптера, а не простая замена базового URL.
Отдельно сопоставьте пути начала, опроса, сбора, нормализации и ошибок; поддерживайте стабильную структуру документа на вашем выходном уровне.
Публичные разделы быстрого старта и маршруты Nstdata отличаются по путям синхронного сканирования, поэтому подтверждайте справочные API вашей учетной записи перед подключением производственных запросов.
Интеграция по счастливому пути может занять 30 минут; полное время миграции зависит от ваших фильтров сканирования, обработки ошибок и приемочных тестов.
Что изменится при миграции?
Руководство по API сканирования Firecrawl описывает POST /v2/crawl, идентификатор задачи, опрос через GET /v2/crawl/{jobId} и пагинированную ссылку next для завершенных результатов. Nstdata Crawl описывает маршрут подачи запросов на сканирование сайта, проверку статуса, перечисление страниц и отдельные чтения хранилища для ссылок на артефакты. Это означает, что граница приложения должна быть внутренним адаптером crawl_site(), возвращающим ваши собственные записи страниц. Оставьте разбиение RAG и векторное хранилище неосведомленными о формах ответов поставщика.
Попробуйте Nstproxy Crawl - Начните Бесплатно Уже Сегодня
Опрос задачи
GET /v2/crawl/{jobId}
GET /api/v1/crawl/status/{crawlId}
Нормализовать состояние и конечные ошибки
Сбор страниц
Страницы результатов сканирования и next
GET /api/v1/crawl/pages/{crawlId}
Пагинируйте до завершения
Чтение контента
Встраиваемый контент страниц
Ссылка на артефакт, такая как markdownRef
Разрешить ссылку на хранилище при необходимости
Логирование ошибок
Ошибки сканирования плюс статус страницы
Статусы задачи и страниц
Сохранить оригинальные поля ошибок поставщика
Обзор Scrapy полезен, когда вы обладаете открытием в переходный период. Документация по API сканирования Nstdata является авторитетом для специфичных для аккаунта полей запросов и ответов. В его разделах быстрого старта и маршрутов в настоящее время показаны несогласованные метки конечных точек сканирования. Этот учебник намеренно избегает изобретения готового к производству тела запроса или притворства, что один маршрут работает для каждого аккаунта. Скопируйте проверенный пример из вашей живой справки, затем выполните тест нормализации ниже.
До: держите Firecrawl за адаптером
Пример ниже иллюстративный и требует вашего ключа Firecrawl и установленного SDK. Он показывает шов, который нужно сохранить, а не заявлять, что эта среда выполнила платное сканирование.
from firecrawl import Firecrawl
client = Firecrawl()result = client.crawl("https://example.com/docs", limit=50)
Избегайте того, чтобы код вниз по потоку обращался к полям, специфичным для Firecrawl, по всему приложению. Документированный удобный вызов .crawl() может скрыть опрос и пагинацию. Проверьте его текущий тип возвращаемого значения SDK перед внедрением замены. Если ваша цепочка использует извлечение JSON, скриншоты или фильтры сканирования, запишите каждую опцию явно. У них разные затраты и схемные implications, описанные в ценах на кредиты Firecrawl.
После: нормализуйте результаты перед изменением поставщика
Следующий код на Python можно тестировать в оффлайне и использует только стандартную библиотеку. Передайте ему словари страниц из аутентифицированного сканирования Nstdata после проверки текущей структуры ответа. Он избегает связывания остальной части вашей цепочки RAG с именем поля поставщика.
from dataclasses import dataclass
from typing import Mapping, Any
@dataclass(frozen=True)classDocument: url:str markdown:str status:int|None source_id:str|Nonedefnormalize_nstdata_page(page: Mapping[str, Any], markdown:str)-> Document: url =str(page.get("url")or page.get("sourceUrl")or"")ifnot url.startswith(("http://","https://")):raise ValueError("Отсутствует абсолютный URL источника") body = markdown.strip()ifnot body:raise ValueError(f"Пустой Markdown для {url}") raw_status = page.get("statusCode") status =int(raw_status)if raw_status isnotNoneelseNonereturn Document(url, body, status,str(page.get("id"))if page.get("id")elseNone)
Здесь markdown - это извлеченный текст артефакта; токен markdownRef не является самим телом. Документация по подписке Nstdata также делает прокси-трафик отдельным элементом затрат. Ведите учет по каждой странице с входным URL, каноническим URL, статусом, ссылкой на артефакт, временем извлечения и расчетными единицами.
Контур сценария миграции, который вы можете адаптировать
Используйте эту последовательность в однократном скрипте: загрузите фиксированный URL манифеста; отправьте ограниченный обход Nstdata; опрашивайте с использованием отката до завершения; перечислите каждую страницу результата; получите упомянутый Markdown; вызовите normalize_nstdata_page; сравните принятые URL с базовой линией Firecrawl; запишите файл формата JSON Lines. Сделайте скрипт возобновляемым с crawlId, чтобы таймаут не запустил дублирующий платный обход. Ограничьте конкурентность и запишите идентификаторы запросов для диагностики частичных сбоев. Не игнорируйте молча 403, 404, пустые или дублирующиеся страницы.
Прошедший сухой запуск должен доказать, что тот же самосортировщик принимает оба адаптера. Он также должен обнаружить удаленные URL, дублирующиеся каноники, изменения в таблицах или блоках кода и различия в заголовках. Руководство по базе знаний RAG, стратегии разбиения и метод расчета уровня успешности обхода предоставляют проверки для этого передачи. Тест должен сравнивать принятые документы и качество ответов, а не равенство Markdown бит за битом.
Что обычно занимает больше 30 минут?
Настройка аутентификации, подтверждение маршрута, пагинация результатов, чтение артефактов хранилища, измененные фильтры путей, политика повторных попыток и мониторинг занимают больше времени, чем замена одного вызова SDK. Позвольте 30 минут на концепцию для небольшого сайта; отдельно выделите бюджет для соответствия производственным требованиям. Держите путь Firecrawl за флагом функции, пока адаптер Nstdata не пройдет через вашу выборку и пороговые значения затрат. Переключение завершится, когда плановые повторные обходы, удаление и уведомления об ошибках будут работать, а не когда вернется первая страница.
Испытайте Nstdata — начните бесплатный пробный период сегодня
Запустите ограниченное сопоставление на сайте, который вы можете обойти, и проверьте фактические артефакты страниц перед тем, как перейти к запланированным заданиям.
В: Могу ли я заменить базовый URL Firecrawl на Nstdata?
Нет. Жизненный цикл задания, ссылки на вывод, пагинация и поля ошибок требуют адаптера.
В: Миграция всегда занимает менее 30 минут?
Нет. Небольшой прототип с хорошим путем может занять столько времени, но производственная миграция зависит от функций и тестов приемки, которые вы используете.
В: Почему ссылки на Markdown недостаточно?
Она идентифицирует сохраненный вывод; получите артефакт и проверьте его содержимое перед разбиением.
В: Должны ли мы немедленно повторно обойти весь корпус?
Начните с ограниченной репрезентативной выборки и обратимого развертывания. Сравните принятые страницы, их свежесть и затраты перед масштабированием.
Lena Zhou
Oct. 16th 2026
Сканируйте целые сайты одним API-запросом
Успешность 99,8% с рендерингом JavaScript
Получайте чистые данные для LLM в разных форматах
Преобразуйте любой сайт в Markdown, HTML, JSON, ссылки, PDF и другие форматы без управления инфраструктурой сканирования.