Страницы
Страница — это все, что открывается на сайте по собственному адресу. Статья, лендинг или даже веб-приложение. Верстку статьи или приложения хранит фрейм. Страница соединяет его с данными и отдает по своему URL.
Чтобы создать или изменить любую страницу сайта, ИИ-агенту не нужно разбираться в верстке. Он работает с текстом в Markdown. Выгружает, вносит правки и отправляет обратно. Остальное платформа собирает сама.
Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Полный перечень эндпоинтов — в справочнике API.
Markdown страницы
API отдает и принимает страницу в Markdown. Сначала идут свойства страницы с адресом, языком и другими параметрами, потом текст страницы с фреймами. Пример документа:
---
name: Доставка
url: /delivery/
lang: ru
status: publish
frame: article
seo_title: Доставка хлеба и выпечки
seo_description: Как заказать доставку из пекарни, сколько она стоит и когда приедет курьер.
---
# Доставка
Мы привозим свежий хлеб и выпечку по всему городу. Заказы принимаем до 18:00.
## Как заказать
- Выберите хлеб и выпечку в каталоге
- Укажите адрес и удобное время
- Оплатите заказ картой или курьеру

## Вопросы и ответы
<!-- frame/faq -->
### Сколько стоит доставка?
Бесплатно при заказе от 1500 рублей.
### Когда приедет курьер?
В течение двух часов после заказа.
<!-- /frame -->
Все свойства страницы и разметку текста описывает страница «Markdown».
Страницы в консоли
Править страницы вручную и смотреть данные по каждой можно в консоли, в разделе «Страницы». Найдите нужную страницу поиском или фильтром и нажмите на нее. Откроется панель, где страницу можно прочитать и поправить.
| Вкладка | Что в ней |
|---|---|
| «Редактор» | текст страницы в готовом виде, его можно править прямо здесь |
| «Markdown» | та же страница в Markdown вместе со свойствами |
| «Поля» | название, адрес, статус, SEO-поля и фрейм страницы |
| «Все данные» | все, что API знает о странице, в JSON |
| «Информация» | язык, фрейм, путь, родители и переводы страницы |
Аналитика страниц
Для каждой страницы сайта в консоли есть подробные данные. Это заходы ботов Google, Яндекса и ChatGPT, посещения и переходы из поиска, структура заголовков H1–H3, длина текста, ссылки, title и description. Чтобы эти данные было проще смотреть, они разложены по отдельным таблицам.
| Таблица | Что показывает |
|---|---|
| «Обычное» | статус, фрейм, адрес и язык страниц деревом вложенности |
| «SEO» | ключевую фразу, title, description, index, follow и canonical |
| «Топик» | тему и ключевую фразу каждой страницы |
| «Контент» | текст, структуру заголовков H1–H3 и число символов |
| «Ссылки» | ссылки из текста с анкорами, счетчики исходящих, внешних и входящих |
| «Индексация» | когда страницу последний раз обходили боты Google, Яндекса, Bing и ChatGPT |
| «Трафик» | показы в поиске, визиты, переходы из поиска, время на странице и отказы |
| «Рекомендации» | что улучшить на каждой странице |
| «Карта сайта» | все адреса из карты сайта в том порядке, в котором их видят поисковики |
| «Новости», «Чейнджлог», «Документация» | страницы своего раздела, если он есть на сайте |
Подробно о каждой таблице — на странице Аналитика страниц.
Создать страницу
В консоли. Откройте раздел «Страницы» в консоли (/dashboard/), нажмите «Новая страница», напишите текст и сохраните.
Через API. POST /pages/markdown создает страницу из Markdown-документа, в котором сначала идут свойства, а после них текст. Например, черновик страницы «О нас»:
curl -s -X POST "$API/site/$SITE/pages/markdown" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"markdown": "---\nname: О нас\nurl: /about/\nstatus: draft\n---\n\n# О нас\n\nМы делаем сайты."}'
Прочитать
GET /pages/{ref}/markdown отдаёт страницу целиком в Markdown, вместе со свойствами. Вместо {ref} подойдут id, слаг или путь, где / заменены на ~. Например:
curl -s "$API/site/$SITE/pages/about/markdown" -H "Authorization: Bearer $OP_TOKEN"
Изменить
В консоли. Откройте страницу в разделе «Страницы», поправьте текст в редакторе и сохраните.
Через API. PATCH /pages/{ref}/markdown правит страницу точечно: заменяет фразу, раздел целиком или одно из свойств, не пересылая всю страницу. Правки ложатся на свежую версию на сервере, поэтому чужие изменения не затираются, а кэш страницы сбрасывается сам. Например, заменить фразу:
curl -s -X PATCH "$API/site/$SITE/pages/about/markdown" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"patch": [{"action": "replace", "find": "Мы делаем сайты.", "with": "Мы делаем сайты с AI-агентами."}]}'
Найти
GET /pages/search ищет текст по всем страницам сайта и показывает, на какой странице, в какой строке и в каком разделе он стоит. Например, все упоминания тарифов в документации:
curl -s -G "$API/site/$SITE/pages/search" -H "Authorization: Bearer $OP_TOKEN" \
--data-urlencode "q=тариф" --data-urlencode "path=/docs/"
Статусы страницы
Статус определяет, доступна ли страница публично. Его задает свойство status, а в консоли его показывает колонка «Статус» таблицы страниц.
| Статус | Что значит |
|---|---|
publish | страница опубликована, сайт открывает ее по адресу |
draft | черновик, сайт его не показывает |
pending | черновик ждет проверки, сайт его не показывает |
private | сайт показывает страницу только пользователям с правами на редактирование |
future | публикация запланирована, сайт откроет страницу в назначенное время |
Чтобы запланировать публикацию, передайте в теле запроса POST /pages/markdown поле publish_at с датой и временем. API само поставит статус future, а до этой даты адрес страницу не отдает. Дочерняя страница открывается, только если опубликованы все ее родители.
Опубликовать
В консоли. Отметьте страницы в разделе «Страницы» и нажмите «Опубликовать».
Через API. Поменяйте свойство status: publish открывает страницу по её адресу, draft снимает с публикации. Например:
curl -s -X PATCH "$API/site/$SITE/pages/about/markdown" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"patch": [{"action": "set_frontmatter", "fields": {"status": "publish"}}]}'
Адрес и место в структуре
Адрес страницы задаёт поле url, а родитель — путь в нём: страница /about/team/ вложена в /about/. Если поменять адрес опубликованной страницы, со старого адреса сам ставится редирект на новый. Например, перенести страницу:
curl -s -X PATCH "$API/site/$SITE/pages/about/markdown" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"patch": [{"action": "set_frontmatter", "fields": {"url": "/company/about/"}}]}'
Удалить
В консоли. Отметьте страницы в разделе «Страницы» и удалите их — они уйдут в корзину.
Через API. DELETE /pages/{ref} убирает страницу в корзину, а с "force": true удаляет навсегда. Страницу с дочерними API не удалит, пока их не перенесёте или не передадите "with_children": true. Например:
curl -s -X DELETE "$API/site/$SITE/pages/about" -H "Authorization: Bearer $OP_TOKEN"
Перевести
Перевод страницы — отдельная страница на другом языке, связанная с оригиналом. Как сделать её по шагам — в кейсе Перевод страницы.
Вопросы и ответы
Почему страница не открывается по адресу?
Страница открывается, только если она опубликована, опубликованы все её родители и у неё есть фрейм. Проверьте свойства status и frame.
Как сделать страницу главной?
В консоли — «Сделать главной» в разделе «Страницы», через API — PUT /data/site.front_page, подробно на странице Настройки сайта.
Как не затереть чужие изменения?
Правьте точечно через PATCH /pages/{ref}/markdown: правки ложатся на свежую версию. Если отправляете страницу целиком, передайте if_modified со значением modified из выгрузки — если страницу успели изменить, API ответит 409 и ничего не запишет.
Где коды ошибок?
В справочнике API. Ответ с ошибкой сам называет причину.