# Hobbyka: FAQ через Codex без установки Официальный сценарий создания и редактирования вопросов на `https://hobbyka.ru/infocenter/faq/`. Не устанавливай CLI, MCP или плагины и не меняй инфоблок напрямую. Codex сохраняет отдельный черновик Content Draft API; применяет его только администратор или участник группы «Контент-редакторы» (ID 7) в защищённом предпросмотре. ## Подключение Используй действующий доступ к Content Draft API. Если доступа нет, выполни подключение по разделу «Подключение» инструкции `https://hobbyka.ru/ai/cli/articles.php`: POST `/ai/content-access/request/`, покажи редактору только `verification_uri` и `user_code`, после подтверждения получи токен через `/ai/content-access/token/`. Bearer-токен не показывай, не проси присылать в чат и передавай только по HTTPS на `hobbyka.ru`. ## Подготовка Сначала получи реальные категории: `GET https://hobbyka.ru/api/internal/v1/content-drafts/faq-meta` с Bearer-токеном. Выбери подходящий `category_id` только из ответа API. Не придумывай категорию или ID. Для нового вопроса подготовь: - `type=faq`; - `title` — полный вопрос; - `html` — полный ответ с абзацами, списками, ссылками и при необходимости таблицей или изображением; - `category_id` из `faq-meta`; - необязательные `code`, `sort` (по умолчанию 500), `excerpt`, `seo_title`, `seo_description`, `page_title` и `agent`. Для изменения существующего вопроса открой его точную страницу `/infocenter/faq//`, сохрани подтверждённые факты и передай полный итоговый вопрос и ответ вместе с `source_url` либо `source_element_id`. API создаст `status=revision` и привяжет черновик к исходному элементу, но не изменит его до ручного одобрения. Не создавай дубль. Символьный код существующего вопроса сохраняется. Категория и сортировка наследуются, если их не передавать. `html` не должен содержать H1, повтор вопроса, SEO-теги, скрипты, стили, формы или внешние изображения: вопрос выводится шаблоном отдельно. Для изображения сначала создай черновик, затем POST `/ai/content-media/` с JSON `{draft_id,image_base64}` и вставь полученный `image_url` в `html` через PATCH. У FAQ нет отдельной обложки и товарного слайдера, поэтому не передавай `cover_image_url` или товары. SEO передавай отдельными полями: `seo_title`, `seo_description`, `page_title`. Не вставляй `` в ответ. `excerpt` можно использовать как краткое внутреннее резюме для запасного SEO-описания; на странице FAQ отдельным абзацем он не выводится. После ручного одобрения полный `html` ответа записывается только в «Анонс» (`PREVIEW_TEXT`) с типом **HTML**. Поле «Подробно» (`DETAIL_TEXT`) остаётся пустым; ответ не дублируется. `excerpt` не заменяет полный ответ в анонсе. Эти правила одинаковы для нового вопроса и одобренной правки существующего FAQ. По умолчанию для нового FAQ оставляй SEO Title и Description на согласование: передавай `"seo_title":""` и `"seo_description":""`. API сохраняет явно пустые значения без автоподстановки и не блокирует создание, правки или ручное одобрение. Если пользователь попросил подготовить SEO или прислал готовые значения, передай их. При правке существующего FAQ не очищай уже заполненные SEO-поля без запроса пользователя. Если поля вообще не переданы, сохраняется прежний автоматический подбор SEO; это не то же самое, что пустая строка. `page_title` остаётся осмысленным заголовком вопроса. Ссылки на страницы и товары автоматически получают `target="_blank"` и `rel="noopener noreferrer"`, в том числе в старых черновиках и после одобрения. Якоря, `mailto:` и `tel:` сохраняют обычное действие. Внешним HTTP/HTTPS-ссылкам, включая `//site.com/...`, дополнительно обязателен `nofollow`: `rel="nofollow noopener noreferrer"`. API добавляет его автоматически, публичный FAQ сохраняет правило после очистки HTML. Относительным ссылкам и точным доменам `hobbyka.ru`, `www.hobbyka.ru`, `new.hobbyka.ru` `nofollow` автоматически не добавляется; явно заданный редактором сохраняется. Простое упоминание стороннего сайта не превращай в ссылку без необходимости; жирный текст не требуется. ## Сохранение Создание: `POST https://hobbyka.ru/api/internal/v1/content-drafts` с `Authorization: Bearer ...`, `Content-Type: application/json; charset=utf-8` и уникальным `Idempotency-Key` длиной 8–128 ASCII-символов. При таймауте повторяй тот же запрос с тем же ключом. Правки черновика: `PATCH /api/internal/v1/content-drafts/{id}`. Проверка: `GET` по тому же адресу. Успешный новый вопрос имеет `type=faq`, `status=draft`, `operation=create`, строковый `id`, выбранные `category_id` и `category`, `preview_url`, `published_url=null` и `iblock_element_id=null`. Правка существующего вопроса имеет `status=revision`, `operation=update`, прежний `source_element_id` и защищённый `preview_url`; публичный FAQ остаётся без изменений до одобрения. Верни пользователю ссылку `preview_url`. Не вызывай `/publish`, не нажимай кнопку от имени редактора, не создавай и не меняй `CIBlockElement` напрямую. В предпросмотре вопрос открыт внутри реального аккордеона FAQ; новый вопрос можно опубликовать или сохранить без активации, а для существующего доступна ручная кнопка «Применить правки».