← Browser Run / browser-run / quick-actions
/markdown - Извлечение Markdown со страницы
/markdown эндпоинт получает содержимое страницы и преобразует его в формат Markdown. Вы можете указать URL и дополнительные параметры, чтобы уточнить процесс извлечения.
Этот эндпоинт можно использовать двумя способами:
- REST API: Создайте пользовательский API Token с
Browser Rendering - Editразрешение. - Workers Bindings: вызывайте конечную точку напрямую из Cloudflare Worker с помощью Workers Bindings. API-токен не требуется.
Подробнее см. в Quick Actions: прежде чем начать.
Конечная точка
https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/markdownОбязательные поля
Необходимо указать либо url или html:
url(строка)html(строка)
Типичные варианты использования
- Нормализация контента для дальнейшей обработки (сводки, диффы, эмбеддинги)
- Сохраняйте статьи или документы для редактирования или хранения
- Удаляет стили и скрипты, оставляя читаемый контент и ссылки
Базовое использование
Преобразование URL в Markdown
В этом примере получается Markdown-представление веб-страницы.
curl -X 'POST' 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/markdown' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <apiToken>' \
-d '{
"url": "https://example.com"
}'{
"success": true,
"result": "# Example Domain\n\nThis domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\n\n[More information...](https://www.iana.org/domains/example)"
}import Cloudflare from "cloudflare";
const client = new Cloudflare({
apiToken: process.env["CLOUDFLARE_API_TOKEN"],
});
const markdown = await client.browserRendering.markdown.create({
account_id: process.env["CLOUDFLARE_ACCOUNT_ID"],
url: "https://developers.cloudflare.com/",
});
console.log(markdown);interface Env {
BROWSER: BrowserRun;
}
export default {
async fetch(request, env): Promise<Response> {
return await env.BROWSER.quickAction("markdown", {
url: "https://example.com",
});
},
} satisfies ExportedHandler<Env>;Преобразование исходного HTML в Markdown
Вместо того чтобы получать контент по URL, можно передать необработанный HTML-код напрямую.
curl -X 'POST' 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/markdown' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <apiToken>' \
-d '{
"html": "<div>Hello World</div>"
}'{
"success": true,
"result": "Hello World"
}Расширенное использование
Исключение нежелательных запросов (например, CSS)
Извлечение Markdown можно уточнить с помощью rejectRequestPattern параметр. В этом примере запросы, соответствующие заданному регулярному выражению (например, CSS-файлы), исключаются.
curl -X 'POST' 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/markdown' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <apiToken>' \
-d '{
"url": "https://example.com",
"rejectRequestPattern": ["/^.*\\.(css)/"]
}'{
"success": true,
"result": "# Example Domain\n\nThis domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\n\n[More information...](https://www.iana.org/domains/example)"
}Работа со страницами с интенсивным использованием JavaScript
Для страниц с большим количеством JavaScript и одностраничных приложений (SPA) поведение загрузки по умолчанию может давать пустые или неполные результаты. Дело в том, что браузер считает страницу загруженной ещё до того, как JavaScript закончит рендеринг контента.
Проще всего использовать gotoOptions.waitUntil параметр со значением networkidle0 или networkidle2:
{
"url": "https://example.com",
"gotoOptions": {
"waitUntil": "networkidle0"
}
}Для более быстрого отклика опытные пользователи могут использовать waitForSelector чтобы дожидаться появления конкретного элемента вместо ожидания остановки всей сетевой активности. Для этого нужно знать, какой CSS-селектор указывает на загрузку нужного контента. Подробнее см. в Тайм-ауты Quick Actions.
Задайте собственный User-Agent
User-Agent можно изменить на уровне страницы, передав userAgent в качестве параметра верхнего уровня в теле JSON. Это полезно, если целевой сайт показывает разный контент в зависимости от User-Agent.
Устранение неполадок
Если у вас есть вопросы или возникла ошибка, см. Часто задаваемые вопросы и руководство по устранению неполадок Browser Run.
Другие возможности конвертации в Markdown
- Workers AI AI.toMarkdown() поддерживает несколько типов документов и создание сводок.
- Markdown for Agents обеспечивает преобразование документов в реальном времени для зон Cloudflare с помощью заголовков согласования содержимого.