Все посты и версии › Все посты, прогон v2 › Китай, о. Хайнань — от 80 955 ₽ с прямым перелетом
Поездки из поста · результат прогона промпта

Китай, о. Хайнань — от 80 955 ₽ с прямым перелетом — v2

Версия промпта: v2 · Модель: claude-haiku-5-5, effort medium · Флаг --json-schema: да · Дата: 2026-10-09T08:59:16Z

Время: 26.1 с · Токенов на выходе: 6995 · Условная цена, если бы через API: $0.0073

Оригинал поста: https://cheaptrip-spb.livejournal.com/18924141.html · папка 2026-09-23__spb__18924141-changed-format/prompt-v2

Другие прогоны этого поста: v2 · v3 · v4 · v5 · v6 · v6 без --json-schema · v7 · v7 без --json-schema

Файлы прогона: INPUT · PROMPT · ANSWER · CHECK · EVALUATION

Оценка независимого Opus: - Справилась с одной ошибкой. Непривычное оформление модель прочитала верно: все 4 отеля и все 10 предложений на месте, цены, даты, ночи и условия верны; минимальная цена «Вылет 26 сентября, 10 ночей (9 ночей в отеле): 80 955 руб.» совпадает с заголовком «Китай, о. Хайнань — от 80 955 ₽». Ошибок: 1.

Предложений 10, в эталоне агента 10. Дословных полей нет в посте: 0. Строк с суммой, не взятой ценой: 0 (налог, сноска или пропуск — видно в разделе 3). Отличий от эталона агента: 11 (это не ошибки, а места, где агент и модель прочитали пост по-разному; смотрите оценку Opus)

1 Что подали модели

📋 Промпт — системный, ровно как отправлен модели, со всей разметкой (25483 знаков)

PROMPT + EXAMPLE + FORMAT версии одним текстом. Пост пришёл отдельным сообщением — следующий спойлер.

# Роль

Ты — внимательный редактор турагентства Cheap Trip. Ты читаешь один пост блога с подборкой туров и переносишь из него факты о поездке в JSON. Ты ничего не считаешь, не выбираешь лучшее и не сокращаешь.

# Зачем это нужно

- Покупатель заходит на страницу сайта о стране, городе, острове или пляже и ищет туры туда.
- По твоему ответу программа решит, на каких страницах показать пост и какую цену «от» там написать.
- Пропустишь место — покупатель, который ищет это место, тур не найдёт.
- Пропустишь предложение — на странице может оказаться неверная цена «от».
- Поэтому выписывай **всё**, что есть в посте. Минимальную цену, страницы сайта и адреса считает программа, не ты.

# Что на входе

Сообщение из четырёх разделов:

- `# Заголовок поста`
- `# Дата публикации` — `ГГГГ-ММ-ДД`; по ней определяешь год у дат без года.
- `# Метки блога` — через запятую.
- `# Текст поста` — как его написал редактор.

# Четыре вида полей

| Вид поля | Как узнать | Что писать |
|---|---|---|
| Дословное | имя оканчивается на `_as_in_post` | Скопируй символ в символ из заголовка, меток или текста: тот же падеж, регистр, знаки, пробелы, опечатки. Не пересказывай и не исправляй. Программа проверит, что такая строка есть в посте. |
| Именительный падеж | имя оканчивается на `_nominative` | То же название по-русски в именительном падеже, без «о.», «г.», «пляж»: «Москвы» → «Москва», «в Сингапуре» → «Сингапур», «о. Бали» → «Бали». |
| Из закрытого списка | `place_type`, `place_role_in_trip`, `found_in`, `price_is_for`, `price_currency` | Ровно одно значение из списка в формате, слово в слово. Своих формулировок не пиши. |
| Число или дата | `price_amount`, `nights`, `hotel_stars`, `departure_date` | Число без пробелов и знаков; дата `ГГГГ-ММ-ДД`. |

# Порядок работы

Иди по шагам. Каждый шаг — по всему посту, от первой строки до последней.

## Шаг 1. Это предложение тура?

- `post_is_trip_offer: true` — пост предлагает купить тур, подборку отелей, круиз или экспедицию.
- `false` — новость, совет, конкурс, рассказ без тура. Тогда все списки пустые, поля `_as_in_post` — `null`, дальше не иди.

## Шаг 2. Город вылета и перелёт

- `departure_city_as_in_post` — город из фразы вида «Вылет из Москвы» → «Москвы». Его же в именительном — `departure_city_nominative`.
- `flight_included_evidence_as_in_post` — дословный кусок, по которому видно, входит ли перелёт: строка из «В стоимость тура включено» с авиаперелётом или «с перелетом» из заголовка.

## Шаг 3. Страны

- Каждая страна, где турист живёт или что посещает по программе.
- Не страна поездки: страна пересадки («стыковка в Дохе» — Катар не пиши), страна вылета.
- `found_in` — откуда видно, что страна в поездке: обычно «заголовок» или «метки блога».

## Шаг 4. Места мельче страны

Выпиши **каждое** место мельче страны, которое названо в посте, — и укажи, зачем оно названо (`place_role_in_trip`). Не выбрасывай место из-за роли: выводить ли тур на его страницу, решит программа по роли.

Где искать:

- строки отелей — после значка «•»: «Golden Tulip Media Hotel⭐⭐⭐⭐ • Дубай, Джумейра» — два места;
- заголовок и метки блога;
- программа и маршрут: «Токио (3 ночи) → оз. Кавагутико → Киото», «День 3. Хиросима», «10 ночей на о. Бали», порты круиза;
- «В стоимость тура включено»: «авиаперелет Москва — Бали, Денпасар» — Денпасар — город прилёта;
- описания отелей: «Беспл. трансфер на песчаный пляж Al Khan».

Правила:

- Одно место — одна запись, даже если оно встречается много раз. Бери кусок поста, из которого лучше всего видна роль, — из него копируй `place_name_as_in_post` и его указывай в `found_in`.
- Место отеля важнее остальных ролей: если в месте есть отель, роль — «место отеля».
- Город вылета сюда не пиши — он уже в шаге 2.
- Не места: названия авиакомпаний, ресторанов, офисов Cheap Trip, улицы офиса. Название отеля целиком — не место, но место **внутри** названия отеля («Avani Hotel Deira» → Дейра) выписывается с ролью «в названии отеля».

## Шаг 5. Отели и все их предложения

Отель — строка с названием, обычно со звёздами ⭐ и местом после «•». Строка без звёзд — тоже отель, если под ней описание и цены.

Для каждого отеля в порядке поста:

- `hotel_name_as_in_post` — название без ⭐ и без места: «Avani Hotel Deira (ex. Movenpick Hotel Deira)».
- `hotel_stars` — число значков ⭐.
- `hotel_place_names_as_in_post` — каждое место после «•» отдельно.
- `place_names_inside_hotel_name_as_in_post` — район, пляж, город, остров внутри самого названия отеля: «Avani Hotel Deira» → «Deira». Слова «Hotel», «Resort», «Beach», «Village» и названия сетей — не места. Каждое такое место выпиши и в `places` с ролью «в названии отеля», если его нет после «•».
- `hotel_is_fixed_part_of_combined_tour` — `true`, если отель входит в каждое предложение комбинированного тура и своих цен не имеет («В конце отдыха 2 ночи в Сингапуре в отеле»).
- `offers` — **каждая** строка с ценой тура под этим отелем, до строки следующего отеля.

Как читать строку цены «15 декабря • 5 ночей — 39 261 ₽»:

- `departure_date_as_in_post` — «15 декабря»;
- `departure_date` — с годом: ближайшая такая дата не раньше даты публикации;
- `nights` — 5; в строке «14 ночей (12 ночей в отелях)» — первое число, 14;
- `price_as_in_post` — «39 261 ₽»; `price_amount` — 39261; `price_currency` — RUB;
- `price_conditions_as_in_post` — ближайшая строка **над** ценой, где сказано, за что цена и какое питание: «С человека при покупке тура на двоих. Завтраки.» Одна строка условий действует на все цены под ней до следующей строки условий или следующего отеля;
- `price_is_for` — смысл строки условий из закрытого списка;
- `room_category_as_in_post` — особая категория номера, за которую дана цена, дословно, только её название: «Клубный люкс (Club Suite, 65 м²)». Обычно она стоит строкой над условиями и действует на все цены под ней. Обычный номер или категория не сказана — `null`;
- `flight_included` — входит ли перелёт в эту цену.

Не предложения тура — не пиши в `offers`:

- топливный сбор, туристический налог, виза, депозит, доплата, скидка, страховка, трансфер, экскурсия за доплату;
- сноски со «*» о стоимости перелёта или других отелей;
- суммы в описании отеля и в разделе «Дополнительно оплачивается».

## Шаг 6. Туры без отелей

Экспедиция, экскурсионный или автобусный тур, круиз, где цена стоит не под отелем, а под датами тура. Каждый такой тур — запись в `tours_without_hotel` с маршрутом и всеми предложениями. Места маршрута выпиши и в `places` с ролью «место по маршруту или программе».

## Шаг 7. Сверка перед ответом

- Посчитай строки с ценой тура в посте и предложения в ответе — числа равны. Если редактор написал «N предложений в M отелях», сверь с этим.
- Каждое место из строк отелей есть в `places`.
- Каждое поле `_as_in_post` скопировано, а не пересказано.
- В каждом поле из закрытого списка — значение из списка.
- Сомневаешься — напиши в `doubts_comment`, в чём и почему, с дословной цитатой. Сомнений нет — пустая строка.
- Не повод для сомнения: «Под запрос», «гарантия», «Тур с 7.10 — под запрос» — это наличие мест в отеле, цена под ними — обычное предложение.

# Ответ

- Один JSON по формату ниже, без пояснений вокруг.
- Ниже — пример на отрывке другого поста и формат ответа с описанием каждого поля.

# Пример

Ниже — **отрывок** другого поста: из 9 отелей оставлены 3, служебные строки сокращены. Ответ на отрывок — полный: в нём всё, что есть в отрывке.

## Вход — отрывок поста

```
# Заголовок поста
Сингапур и Индонезия, о. Бали — от 163 616 ₽ с перелетом

# Дата публикации
2026-09-29

# Метки блога
Без виз, Заграница, Пляжный отдых, На праздники, предложение, Бали, Сингапур, Раннее бронирование, 14 ночей, Экзотика, Индонезия

# Текст поста
Вылет из Москвы 12 февраля на 14 ночей. На День защитника Отечества!
Комбинированные туры:
В конце отдыха 2 ночи в Сингапуре в отеле*:
Ywca Fort Canning (ex. Fort Canning Lodge)⭐⭐⭐⭐ • Сингапур
Под запрос — отель проверит, есть ли место. Возможно, придется искать замену.
* Можно выбрать отели 3⭐ или 5⭐ — стоимость запрашивайте!
ПЛЮС в начале отдыха — 10 ночей на о. Бали в отеле на выбор:
Bakung Sari Resort And Spa⭐⭐⭐ • Кута
Под запрос — отель проверит, есть ли место. 10 мин ходьбы до пляжа, открытый бассейн.
С человека при покупке тура на двоих. Завтраки.
12 февраля • 14 ночей (12 ночей в отелях) — 163 616 ₽
Сингл. Завтраки.
12 февраля • 14 ночей (12 ночей в отелях) — 197 901 ₽
Monolocale Resort Seminyak⭐⭐⭐⭐⭐ • Семиньяк
Tripadvisor: 4,9
С человека при покупке тура на двоих. Завтраки.
12 февраля • 14 ночей (12 ночей в отелях) — 187 761 ₽
В стоимость тура включено:
— авиаперелет Москва — Бали, Денпасар (с удобной короткой стыковкой в Дохе, виза не нужна);
— авиаперелет Сингапур — Москва (с удобной короткой стыковкой в Дохе, виза не нужна);
— внутренний перелет Бали, Денпасар — Сингапур;
— проживание: 10 ночей на о. Бали и 2 ночи в Сингапуре с завтраками в выбранном отеле с указанным питанием;
Дополнительно оплачивается:
— на Бали — обязательный туристический налог (Tourism Promotional Fee) — 150 000 IDR (~10 $, оплачивается на месте);
```

## Что здесь важно

- «Ywca Fort Canning» — отель комбинированного тура: он входит в каждое предложение, своих цен нет → `hotel_is_fixed_part_of_combined_tour: true`, `offers: []`.
- «12 февраля» при публикации 2026-09-29 → `2027-02-12`: 12 февраля 2026 уже прошло.
- «14 ночей (12 ночей в отелях)» → `nights: 14`.
- «Сингл. Завтраки.» → `price_is_for: "одноместное размещение"`, а сама строка — дословно в `price_conditions_as_in_post`.
- «о. Бали» — дословно с «о.», в именительном — «Бали».
- Денпасар — город прилёта, Доха — пересадка: записаны со своими ролями, а не выброшены. В `place_name_as_in_post` у Дохи — «Дохе», как в посте.
- Катар — страна пересадки, в `countries` его нет.
- «150 000 IDR» — налог, не предложение. Сноска «стоимость запрашивайте» — без цены, не предложение.
- «Ywca Fort Canning» — в названии отеля парк Fort Canning: он в `place_names_inside_hotel_name_as_in_post` и в `places` с ролью «в названии отеля». «Monolocale Resort Seminyak» — Seminyak тоже в поле отеля, но в `places` второй раз не пишется: Семиньяк уже есть как место отеля после «•».
- Категория номера не названа — `room_category_as_in_post: null`.
- Предложений в отрывке 3 — в ответе 3.

## Ответ

```json
{
  "post_is_trip_offer": true,
  "departure_city_as_in_post": "Москвы",
  "departure_city_nominative": "Москва",
  "flight_included_evidence_as_in_post": "авиаперелет Москва — Бали, Денпасар (с удобной короткой стыковкой в Дохе, виза не нужна)",
  "countries": [
    {
      "country_name_as_in_post": "Сингапур",
      "country_name_nominative": "Сингапур",
      "found_in": "заголовок"
    },
    {
      "country_name_as_in_post": "Индонезия",
      "country_name_nominative": "Индонезия",
      "found_in": "заголовок"
    }
  ],
  "places": [
    {
      "place_name_as_in_post": "Сингапур",
      "place_name_nominative": "Сингапур",
      "place_type": "город",
      "country_name_nominative": "Сингапур",
      "place_role_in_trip": "место отеля",
      "found_in": "строка отеля"
    },
    {
      "place_name_as_in_post": "Fort Canning",
      "place_name_nominative": "Форт-Каннинг",
      "place_type": "природный парк или заповедник",
      "country_name_nominative": "Сингапур",
      "place_role_in_trip": "в названии отеля",
      "found_in": "строка отеля"
    },
    {
      "place_name_as_in_post": "о. Бали",
      "place_name_nominative": "Бали",
      "place_type": "остров",
      "country_name_nominative": "Индонезия",
      "place_role_in_trip": "место отеля",
      "found_in": "маршрут или программа тура"
    },
    {
      "place_name_as_in_post": "Кута",
      "place_name_nominative": "Кута",
      "place_type": "курорт или посёлок",
      "country_name_nominative": "Индонезия",
      "place_role_in_trip": "место отеля",
      "found_in": "строка отеля"
    },
    {
      "place_name_as_in_post": "Семиньяк",
      "place_name_nominative": "Семиньяк",
      "place_type": "курорт или посёлок",
      "country_name_nominative": "Индонезия",
      "place_role_in_trip": "место отеля",
      "found_in": "строка отеля"
    },
    {
      "place_name_as_in_post": "Денпасар",
      "place_name_nominative": "Денпасар",
      "place_type": "город",
      "country_name_nominative": "Индонезия",
      "place_role_in_trip": "город прилёта",
      "found_in": "состав тура «В стоимость включено»"
    },
    {
      "place_name_as_in_post": "Дохе",
      "place_name_nominative": "Доха",
      "place_type": "город",
      "country_name_nominative": "Катар",
      "place_role_in_trip": "пересадка в пути",
      "found_in": "состав тура «В стоимость включено»"
    }
  ],
  "hotels": [
    {
      "hotel_name_as_in_post": "Ywca Fort Canning (ex. Fort Canning Lodge)",
      "hotel_stars": 4,
      "hotel_place_names_as_in_post": [
        "Сингапур"
      ],
      "place_names_inside_hotel_name_as_in_post": [
        "Fort Canning"
      ],
      "hotel_is_fixed_part_of_combined_tour": true,
      "offers": []
    },
    {
      "hotel_name_as_in_post": "Bakung Sari Resort And Spa",
      "hotel_stars": 3,
      "hotel_place_names_as_in_post": [
        "Кута"
      ],
      "place_names_inside_hotel_name_as_in_post": [],
      "hotel_is_fixed_part_of_combined_tour": false,
      "offers": [
        {"departure_date_as_in_post": "12 февраля", "departure_date": "2027-02-12", "nights": 14, "price_as_in_post": "163 616 ₽", "price_amount": 163616, "price_currency": "RUB", "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.", "price_is_for": "с человека при покупке на двоих", "room_category_as_in_post": null, "flight_included": true},
        {"departure_date_as_in_post": "12 февраля", "departure_date": "2027-02-12", "nights": 14, "price_as_in_post": "197 901 ₽", "price_amount": 197901, "price_currency": "RUB", "price_conditions_as_in_post": "Сингл. Завтраки.", "price_is_for": "одноместное размещение", "room_category_as_in_post": null, "flight_included": true}
      ]
    },
    {
      "hotel_name_as_in_post": "Monolocale Resort Seminyak",
      "hotel_stars": 5,
      "hotel_place_names_as_in_post": [
        "Семиньяк"
      ],
      "place_names_inside_hotel_name_as_in_post": [
        "Seminyak"
      ],
      "hotel_is_fixed_part_of_combined_tour": false,
      "offers": [
        {"departure_date_as_in_post": "12 февраля", "departure_date": "2027-02-12", "nights": 14, "price_as_in_post": "187 761 ₽", "price_amount": 187761, "price_currency": "RUB", "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.", "price_is_for": "с человека при покупке на двоих", "room_category_as_in_post": null, "flight_included": true}
      ]
    }
  ],
  "tours_without_hotel": [],
  "doubts_comment": "«Можно выбрать отели 3⭐ или 5⭐ — стоимость запрашивайте!» — цены нет, предложением не считаю."
}
```

# Формат ответа — JSON-схема

```json
{
  "title": "Поездки из поста — страны, места, отели, предложения с ценами и датами из одного поста блога Cheap Trip",
  "type": "object",
  "additionalProperties": false,
  "required": ["post_is_trip_offer", "departure_city_as_in_post", "departure_city_nominative", "flight_included_evidence_as_in_post", "countries", "places", "hotels", "tours_without_hotel", "doubts_comment"],
  "properties": {
    "post_is_trip_offer": {
      "type": "boolean",
      "description": "true — пост предлагает купить тур, подборку отелей, круиз или экспедицию; false — новость, совет, конкурс без тура. При false все списки пустые."
    },
    "departure_city_as_in_post": {
      "type": ["string", "null"],
      "description": "Город вылета дословно, как в посте: «Вылет из Москвы» → «Москвы». Не сказан — null."
    },
    "departure_city_nominative": {
      "type": ["string", "null"],
      "description": "Город вылета в именительном падеже: «Москва». Не сказан — null."
    },
    "flight_included_evidence_as_in_post": {
      "type": ["string", "null"],
      "description": "Дословный кусок поста, по которому видно, входит ли перелёт: строка из «В стоимость тура включено» или «с перелетом» из заголовка. Нет такого куска — null."
    },
    "countries": {
      "type": "array",
      "description": "Страны, куда едет турист: где он живёт или что посещает по программе. Страна пересадки и страна вылета сюда не входят.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["country_name_as_in_post", "country_name_nominative", "found_in"],
        "properties": {
          "country_name_as_in_post": {"type": "string", "description": "Название страны дословно из поста: «ОАЭ», «Индонезии»."},
          "country_name_nominative": {"type": "string", "description": "Название страны в именительном падеже: «ОАЭ», «Индонезия»."},
          "found_in": {"$ref": "#/$defs/found_in"}
        }
      }
    },
    "places": {
      "type": "array",
      "description": "Каждое географическое место мельче страны, названное в посте: город, остров, курорт, район, пляж, бухта, город прилёта, пересадка. Одно место — одна запись. Город вылета сюда не входит: он в departure_city_*.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["place_name_as_in_post", "place_name_nominative", "place_type", "country_name_nominative", "place_role_in_trip", "found_in"],
        "properties": {
          "place_name_as_in_post": {"type": "string", "description": "Название места дословно из того куска поста, который указан в found_in: «Джумейра», «Сингапуре», «о. Бали», «Al Khan»."},
          "place_name_nominative": {"type": "string", "description": "То же место в именительном падеже по-русски, без «о.», «г.», «пляж»: «Джумейра», «Сингапур», «Бали». Латиницу — в общепринятое русское написание, если оно известно; иначе как в посте."},
          "place_type": {"$ref": "#/$defs/place_type"},
          "country_name_nominative": {"type": "string", "description": "Страна, в которой находится место, в именительном падеже: «ОАЭ», «Катар»."},
          "place_role_in_trip": {"$ref": "#/$defs/place_role_in_trip"},
          "found_in": {"$ref": "#/$defs/found_in"}
        }
      }
    },
    "hotels": {
      "type": "array",
      "description": "Каждый отель подборки в порядке поста — и с ценами, и без своих цен.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["hotel_name_as_in_post", "hotel_stars", "hotel_place_names_as_in_post", "place_names_inside_hotel_name_as_in_post", "hotel_is_fixed_part_of_combined_tour", "offers"],
        "properties": {
          "hotel_name_as_in_post": {"type": "string", "description": "Название отеля дословно, без звёзд ⭐ и без места после «•»: «Avani Hotel Deira (ex. Movenpick Hotel Deira)»."},
          "hotel_stars": {"type": ["integer", "null"], "description": "Число значков ⭐ после названия. Нет значков — null."},
          "hotel_place_names_as_in_post": {"type": "array", "items": {"type": "string"}, "description": "Места после «•» в строке отеля, каждое отдельно и дословно: «• Дубай, Джумейра» → [\"Дубай\", \"Джумейра\"]. Места нет — []."},
          "place_names_inside_hotel_name_as_in_post": {"type": "array", "items": {"type": "string"}, "description": "Район, пляж, город, остров, который стоит внутри названия отеля, — каждое отдельно и дословно: «Avani Hotel Deira» → [\"Deira\"], «Anantara Mui Ne Resort» → [\"Mui Ne\"]. Слова «Hotel», «Resort», «Beach», «Village», названия сетей — не места. Нет — []."},
          "hotel_is_fixed_part_of_combined_tour": {"type": "boolean", "description": "true — отель входит в каждое предложение комбинированного тура и своих цен не имеет («В конце отдыха 2 ночи в Сингапуре в отеле»). Иначе false."},
          "offers": {"type": "array", "items": {"$ref": "#/$defs/offer"}, "description": "Все предложения отеля — каждая строка с ценой тура под этим отелем. Своих цен нет — []."}
        }
      }
    },
    "tours_without_hotel": {
      "type": "array",
      "description": "Туры, у которых в посте нет списка отелей с ценами: экспедиции, экскурсионные и автобусные туры, круизы. Нет таких — [].",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["tour_name_as_in_post", "route_place_names_as_in_post", "offers"],
        "properties": {
          "tour_name_as_in_post": {"type": "string", "description": "Название тура дословно; нет названия — заголовок поста дословно."},
          "route_place_names_as_in_post": {"type": "array", "items": {"type": "string"}, "description": "Места маршрута дословно, в порядке маршрута: «Токио (3 ночи) → оз. Кавагутико → Киото» → [\"Токио\", \"оз. Кавагутико\", \"Киото\"]."},
          "offers": {"type": "array", "items": {"$ref": "#/$defs/offer"}, "description": "Все предложения тура."}
        }
      }
    },
    "doubts_comment": {
      "type": "string",
      "description": "Одна-две фразы, в чём сомневаешься и почему, с дословной цитатой спорного места. Сомнений нет — пустая строка."
    }
  },
  "$defs": {
    "offer": {
      "type": "object",
      "additionalProperties": false,
      "required": ["departure_date_as_in_post", "departure_date", "nights", "price_as_in_post", "price_amount", "price_currency", "price_conditions_as_in_post", "price_is_for", "room_category_as_in_post", "flight_included"],
      "properties": {
        "departure_date_as_in_post": {"type": ["string", "null"], "description": "Дата вылета дословно из строки цены: «15 декабря». Нет даты — null."},
        "departure_date": {"type": ["string", "null"], "description": "Дата вылета ГГГГ-ММ-ДД. Год не написан — ближайшая такая дата не раньше даты публикации: пост 2026-09-29, «12 февраля» → 2027-02-12. Нет даты — null."},
        "nights": {"type": ["integer", "null"], "description": "Число ночей тура — первое число ночей в строке цены: «14 ночей (12 ночей в отелях)» → 14. Нет — null."},
        "price_as_in_post": {"type": "string", "description": "Цена дословно с валютой: «39 261 ₽», «2890 $»."},
        "price_amount": {"type": "integer", "description": "Цена числом без пробелов: 39261."},
        "price_currency": {"type": "string", "enum": ["RUB", "USD", "EUR", "другая"], "description": "₽ и руб — RUB, $ — USD, € — EUR."},
        "price_conditions_as_in_post": {"type": ["string", "null"], "description": "Строка условий цены дословно — ближайшая строка над ценой, где сказано, за что цена и какое питание: «С человека при покупке тура на двоих. Завтраки.», «Сингл. Завтраки.». Нет такой строки — null."},
        "price_is_for": {"$ref": "#/$defs/price_is_for"},
        "room_category_as_in_post": {"type": ["string", "null"], "description": "Особая категория номера, за которую дана цена, дословно: «Клубный люкс (Club Suite, 65 м²)», «Вилла с собственным бассейном (One Bedroom Pool Villa, 200 м²)». Только название категории, без перечня удобств после двоеточия. Обычный номер или категория не сказана — null."},
        "flight_included": {"type": ["boolean", "null"], "description": "true — перелёт входит в цену («с перелетом» в заголовке, перелёт в «В стоимость тура включено»); false — «без перелета» в строке цены или посте; null — в посте не сказано."}
      }
    },
    "price_is_for": {
      "type": "string",
      "enum": ["с человека при покупке на двоих", "одноместное размещение", "с человека, размещение не сказано", "за номер", "другое", "не сказано"],
      "description": "За что цена — по смыслу строки условий. «С человека при покупке тура на двоих», «Место в двухместном номере» → «с человека при покупке на двоих»; «Одноместное размещение», «Сингл» → «одноместное размещение»; «на 1 человека», «с человека» без слов о размещении (экспедиции, экскурсионные туры) → «с человека, размещение не сказано»; «за номер», «за виллу» → «за номер»; строки условий нет → «не сказано»."
    },
    "place_type": {
      "type": "string",
      "enum": ["регион или провинция", "город", "курорт или посёлок", "район", "остров", "полуостров", "атолл или архипелаг", "бухта или залив", "пляж", "природный парк или заповедник", "природный объект: гора, озеро, река, лес", "другой объект: дорога, здание, место"],
      "description": "Тип места — список типов из справочника мест 110 без «страны»: страны пишутся в countries."
    },
    "place_role_in_trip": {
      "type": "string",
      "enum": ["место отеля", "место по маршруту или программе", "город прилёта", "пересадка в пути", "в названии отеля", "упомянуто в описании отеля", "только в заголовке или метках", "за доплату"],
      "description": "Зачем место названо в посте. «место отеля» — турист там живёт; «место по маршруту или программе» — турист туда едет по программе тура; «город прилёта» — аэропорт или город, куда прилетает самолёт тура, а отелей там нет; «пересадка в пути» — стыковка, транзит; «в названии отеля» — район или пляж виден только в названии отеля («Avani Hotel Deira» → Дейра), после «•» его нет; «упомянуто в описании отеля» — пляж, парк, центр рядом с отелем, трансфер туда; «только в заголовке или метках» — в тексте место не встречается; «за доплату» — экскурсия или поездка за отдельные деньги."
    },
    "found_in": {
      "type": "string",
      "enum": ["заголовок", "метки блога", "строка отеля", "описание отеля", "маршрут или программа тура", "состав тура «В стоимость включено»", "другой текст поста"],
      "description": "Кусок поста, из которого видна роль места и из которого скопировано дословное название."
    }
  }
}
```
📝 Пост — ровно та часть, которую модель читала как пост

Сообщение пользователя целиком. Адрес, номер поста и блог модели не показывались.

# Заголовок поста
Китай, о. Хайнань — от 80 955 ₽ с прямым перелетом

# Дата публикации
2026-09-23

# Метки блога
Последние билеты, предложение, Прямой перелет, Китай, Без виз, 500-800ye, Заграница, Вылет из Петербурга, Хайнань, 10 ночей, Экзотика, Раннее бронирование, Пляжный отдых

# Текст поста
Вылет из Санкт-Петербурга 26 сентября (последние 4 билета!) или 28 ноября на 10 ночей. Без визы!
Привет! Я Екатерина, редактор Чиптрип.
Я собрала 10 предложений в 4 отелях на острове Хайнань, Китай. Вылет из Санкт-Петербурга 26 сентября или 28 ноября:
Guan Hai Lou Hotel — Бухта Дадунхай
Тур с 26.09 — под запрос — отель проверит, есть ли место. Возможно, придется искать замену. Тур с 28.11 — гарантия отеля — место будет за вами и не придется искать замену.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 80 955 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 104 657 руб.
Одноместное размещение. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 87 612 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 113 158 руб.
Дальше будут очень хорошие отели:
Sanya Shengyi Seaview Hotel (ex. Shengyi Holiday Villa Hotel Sanya) 5* — Бухта Санья
Tripadvisor: 4
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 100 м до пляжа, открытый бассейн.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 91 345 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 116 216 руб.
Golden Palm Resort Hotel 4* — Бухта Ялонг
Tripadvisor: 4,2
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 50 м до пляжа, 3 открытых бассейна.
С человека при покупке тура на двоих. Завтраки и ужины.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 112 843 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 130 023 руб.
Ascott Dadonghai Bay Sanya 5* — Бухта Дадунхай
Tripadvisor: 4,6
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 800 м до пляжа (коралловый риф), открытый бассейн.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 127 190 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 136 230 руб.
В стоимость тура включено:
— прямой авиаперелет Санкт-Петербург — Санья — Санкт-Петербург (а/к Аэрофлот);
— проживание;
— указанное питание;
— медицинская страховка;
— трансфер аэропорт — отель — аэропорт.
Дополнительно оплачивается:
— страховка от невыезда (по желанию);
— некоторые отели взимают возвратный депозит при заселении — суммы уточняйте у менеджера при бронировании.
Виза: для поездок в Китай в период с 15.09.2025 по 14.09.2026 и не более чем на 30 дней подряд — виза не нужна!
❗️ Цена может отличаться на день бронирования, так как она привязана к евро/доллару!
Есть другие отели и срок проживания.
Время перелета: ~ 10 часов.
Прогноз погоды*: в сентябре- октябре — воздух днем +29...+31 °С, ночью +26...+27 °С, вода +28...+29 °, в ноябре-декабре — воздух днем +24...+25 °С, ночью +20...+21 °С, вода +25...+27 °.
* Ориентировочно на момент поездки.
❗️ В несезон и на время пандемии некоторые услуги могут быть недоступны или доступны частично. Просьба при бронировании уточнять интересующую информацию.
Понравились предложения или есть вопросы? Пишите или оставьте заявку, с вами свяжутся в ближайшее время:
☎️ 244-05-75
✉️ zapros@cheaptripspb.ru
🧭 Как устроен вызов
claude -p ▶️ один вызов на пост, один ответ
├── --system-prompt 📋 PROMPT + EXAMPLE + FORMAT одним текстом — одинаково для всех постов
├── сообщение пользователя 📝 пост: # Заголовок поста / # Дата публикации / # Метки блога / # Текст поста
└── --json-schema 🔒 та же схема ещё раз: Claude Code проверяет по ней форму ответа
↓модель прочитала всё это и вернула

2 Что вернула модель

предложение тура: дагород вылета: Санкт-Петербургстран: 1мест: 4отелей: 4туров без отелей: 0предложений: 10минимальная цена в рублях: 80 955 ₽

Перелёт, доказательство: «прямой авиаперелет Санкт-Петербург — Санья — Санкт-Петербург (а/к Аэрофлот)»

Страны

Как в постеИменительныйГде найдено
КитайКитайзаголовок

Места

Как в постеИменительныйТипСтранаРоль в поездкеГде найдено
острове ХайнаньХайнаньостровКитайместо отелядругой текст поста
Бухта ДадунхайДадунхайбухта или заливКитайместо отелястрока отеля
СаньяСаньягородКитайместо отелястрока отеля
Бухта ЯлонгЯлонгбухта или заливКитайместо отелястрока отеля

Отель 1. Guan Hai Lou Hotel · звёзд: None · места: Бухта Дадунхай · предложений: 4

Дата в постеДатаНочейЦена в постеСуммаВалютаУсловия цены в постеЗа что ценаКатегория номераПерелёт
26 сентября2026-09-261080 955 руб80955RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да
28 ноября2026-11-2810104 657 руб104657RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да
26 сентября2026-09-261087 612 руб87612RUBОдноместное размещение. Завтраки.одноместное размещение—да
28 ноября2026-11-2810113 158 руб113158RUBОдноместное размещение. Завтраки.одноместное размещение—да

Отель 2. Sanya Shengyi Seaview Hotel (ex. Shengyi Holiday Villa Hotel Sanya) · звёзд: 5 · места: Бухта Санья · в названии: Sanya · предложений: 2

Дата в постеДатаНочейЦена в постеСуммаВалютаУсловия цены в постеЗа что ценаКатегория номераПерелёт
26 сентября2026-09-261091 345 руб91345RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да
28 ноября2026-11-2810116 216 руб116216RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да

Отель 3. Golden Palm Resort Hotel · звёзд: 4 · места: Бухта Ялонг · предложений: 2

Дата в постеДатаНочейЦена в постеСуммаВалютаУсловия цены в постеЗа что ценаКатегория номераПерелёт
26 сентября2026-09-2610112 843 руб112843RUBС человека при покупке тура на двоих. Завтраки и ужины.с человека при покупке на двоих—да
28 ноября2026-11-2810130 023 руб130023RUBС человека при покупке тура на двоих. Завтраки и ужины.с человека при покупке на двоих—да

Отель 4. Ascott Dadonghai Bay Sanya · звёзд: 5 · места: Бухта Дадунхай · в названии: Dadonghai Bay, Sanya · предложений: 2

Дата в постеДатаНочейЦена в постеСуммаВалютаУсловия цены в постеЗа что ценаКатегория номераПерелёт
26 сентября2026-09-2610127 190 руб127190RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да
28 ноября2026-11-2810136 230 руб136230RUBС человека при покупке тура на двоих. Завтраки.с человека при покупке на двоих—да

Сомнения модели: Остров «Хайнань» назван в тексте как «на острове Хайнань, Китай» без отдельной строки отеля, роль записана как «место отеля» по смыслу; при необходимости можно понизить до «только в заголовке или метках».

🧩 Ответ как JSON, только симпатично

Ровно поля и значения ответа модели (часть answer), без пересказа: слева имя поля, справа значение; "строка", число, true / false, null. Карточка — объект, номер — место в списке; списки сворачиваются. Наведите на имя поля — описание и закрытый список из формата v2.

post_is_trip_offertrue
departure_city_as_in_post"Санкт-Петербурга"
departure_city_nominative"Санкт-Петербург"
flight_included_evidence_as_in_post"прямой авиаперелет Санкт-Петербург — Санья — Санкт-Петербург (а/к Аэрофлот)"
countries
список, элементов: 1
1
country_name_as_in_post"Китай"
country_name_nominative"Китай"
found_in"заголовок"
places
список, элементов: 4
1
place_name_as_in_post"острове Хайнань"
place_name_nominative"Хайнань"
place_type"остров"
country_name_nominative"Китай"
place_role_in_trip"место отеля"
found_in"другой текст поста"
2
place_name_as_in_post"Бухта Дадунхай"
place_name_nominative"Дадунхай"
place_type"бухта или залив"
country_name_nominative"Китай"
place_role_in_trip"место отеля"
found_in"строка отеля"
3
place_name_as_in_post"Санья"
place_name_nominative"Санья"
place_type"город"
country_name_nominative"Китай"
place_role_in_trip"место отеля"
found_in"строка отеля"
4
place_name_as_in_post"Бухта Ялонг"
place_name_nominative"Ялонг"
place_type"бухта или залив"
country_name_nominative"Китай"
place_role_in_trip"место отеля"
found_in"строка отеля"
hotels
список, элементов: 4
1
hotel_name_as_in_post"Guan Hai Lou Hotel"
hotel_starsnull
hotel_place_names_as_in_post1"Бухта Дадунхай"
place_names_inside_hotel_name_as_in_post[] пусто
hotel_is_fixed_part_of_combined_tourfalse
offers
список, элементов: 4
1
departure_date_as_in_post"26 сентября"
departure_date"2026-09-26"
nights10
price_as_in_post"80 955 руб"
price_amount80955
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
2
departure_date_as_in_post"28 ноября"
departure_date"2026-11-28"
nights10
price_as_in_post"104 657 руб"
price_amount104657
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
3
departure_date_as_in_post"26 сентября"
departure_date"2026-09-26"
nights10
price_as_in_post"87 612 руб"
price_amount87612
price_currency"RUB"
price_conditions_as_in_post"Одноместное размещение. Завтраки."
price_is_for"одноместное размещение"
room_category_as_in_postnull
flight_includedtrue
4
departure_date_as_in_post"28 ноября"
departure_date"2026-11-28"
nights10
price_as_in_post"113 158 руб"
price_amount113158
price_currency"RUB"
price_conditions_as_in_post"Одноместное размещение. Завтраки."
price_is_for"одноместное размещение"
room_category_as_in_postnull
flight_includedtrue
2
hotel_name_as_in_post"Sanya Shengyi Seaview Hotel (ex. Shengyi Holiday Villa Hotel Sanya)"
hotel_stars5
hotel_place_names_as_in_post1"Бухта Санья"
place_names_inside_hotel_name_as_in_post1"Sanya"
hotel_is_fixed_part_of_combined_tourfalse
offers
список, элементов: 2
1
departure_date_as_in_post"26 сентября"
departure_date"2026-09-26"
nights10
price_as_in_post"91 345 руб"
price_amount91345
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
2
departure_date_as_in_post"28 ноября"
departure_date"2026-11-28"
nights10
price_as_in_post"116 216 руб"
price_amount116216
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
3
hotel_name_as_in_post"Golden Palm Resort Hotel"
hotel_stars4
hotel_place_names_as_in_post1"Бухта Ялонг"
place_names_inside_hotel_name_as_in_post[] пусто
hotel_is_fixed_part_of_combined_tourfalse
offers
список, элементов: 2
1
departure_date_as_in_post"26 сентября"
departure_date"2026-09-26"
nights10
price_as_in_post"112 843 руб"
price_amount112843
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки и ужины."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
2
departure_date_as_in_post"28 ноября"
departure_date"2026-11-28"
nights10
price_as_in_post"130 023 руб"
price_amount130023
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки и ужины."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
4
hotel_name_as_in_post"Ascott Dadonghai Bay Sanya"
hotel_stars5
hotel_place_names_as_in_post1"Бухта Дадунхай"
place_names_inside_hotel_name_as_in_post1"Dadonghai Bay"2"Sanya"
hotel_is_fixed_part_of_combined_tourfalse
offers
список, элементов: 2
1
departure_date_as_in_post"26 сентября"
departure_date"2026-09-26"
nights10
price_as_in_post"127 190 руб"
price_amount127190
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
2
departure_date_as_in_post"28 ноября"
departure_date"2026-11-28"
nights10
price_as_in_post"136 230 руб"
price_amount136230
price_currency"RUB"
price_conditions_as_in_post"С человека при покупке тура на двоих. Завтраки."
price_is_for"с человека при покупке на двоих"
room_category_as_in_postnull
flight_includedtrue
tours_without_hotel[] пусто
doubts_comment"Остров «Хайнань» назван в тексте как «на острове Хайнань, Китай» без отдельной строки отеля, роль записана как «место отеля» по смыслу; при необходимости можно понизить до «только в заголовке или метках»."
Исходные данные — JSON, как вернула модель
{
  "run": {
    "prompt_version": "v2",
    "prompt_folder": "trip-places-hotels-prices-llm/prompt-v2",
    "post_folder": "trip-places-hotels-prices-llm/posts-one-folder-per-post/2026-09-23__spb__18924141-changed-format",
    "model": "claude-haiku-5-5",
    "effort": "medium",
    "finished_at": "2026-10-09T08:59:16Z",
    "duration_seconds": 26.1,
    "input_tokens_full_price": 2,
    "input_tokens_cache_read": 0,
    "input_tokens_cache_write": 18764,
    "output_tokens": 6995,
    "conditional_price_usd_if_it_were_api": 0.0072505
  },
  "answer": {
    "post_is_trip_offer": true,
    "departure_city_as_in_post": "Санкт-Петербурга",
    "departure_city_nominative": "Санкт-Петербург",
    "flight_included_evidence_as_in_post": "прямой авиаперелет Санкт-Петербург — Санья — Санкт-Петербург (а/к Аэрофлот)",
    "countries": [
      {
        "country_name_as_in_post": "Китай",
        "country_name_nominative": "Китай",
        "found_in": "заголовок"
      }
    ],
    "places": [
      {
        "place_name_as_in_post": "острове Хайнань",
        "place_name_nominative": "Хайнань",
        "place_type": "остров",
        "country_name_nominative": "Китай",
        "place_role_in_trip": "место отеля",
        "found_in": "другой текст поста"
      },
      {
        "place_name_as_in_post": "Бухта Дадунхай",
        "place_name_nominative": "Дадунхай",
        "place_type": "бухта или залив",
        "country_name_nominative": "Китай",
        "place_role_in_trip": "место отеля",
        "found_in": "строка отеля"
      },
      {
        "place_name_as_in_post": "Санья",
        "place_name_nominative": "Санья",
        "place_type": "город",
        "country_name_nominative": "Китай",
        "place_role_in_trip": "место отеля",
        "found_in": "строка отеля"
      },
      {
        "place_name_as_in_post": "Бухта Ялонг",
        "place_name_nominative": "Ялонг",
        "place_type": "бухта или залив",
        "country_name_nominative": "Китай",
        "place_role_in_trip": "место отеля",
        "found_in": "строка отеля"
      }
    ],
    "hotels": [
      {
        "hotel_name_as_in_post": "Guan Hai Lou Hotel",
        "hotel_stars": null,
        "hotel_place_names_as_in_post": [
          "Бухта Дадунхай"
        ],
        "place_names_inside_hotel_name_as_in_post": [],
        "hotel_is_fixed_part_of_combined_tour": false,
        "offers": [
          {
            "departure_date_as_in_post": "26 сентября",
            "departure_date": "2026-09-26",
            "nights": 10,
            "price_as_in_post": "80 955 руб",
            "price_amount": 80955,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "28 ноября",
            "departure_date": "2026-11-28",
            "nights": 10,
            "price_as_in_post": "104 657 руб",
            "price_amount": 104657,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "26 сентября",
            "departure_date": "2026-09-26",
            "nights": 10,
            "price_as_in_post": "87 612 руб",
            "price_amount": 87612,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "Одноместное размещение. Завтраки.",
            "price_is_for": "одноместное размещение",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "28 ноября",
            "departure_date": "2026-11-28",
            "nights": 10,
            "price_as_in_post": "113 158 руб",
            "price_amount": 113158,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "Одноместное размещение. Завтраки.",
            "price_is_for": "одноместное размещение",
            "room_category_as_in_post": null,
            "flight_included": true
          }
        ]
      },
      {
        "hotel_name_as_in_post": "Sanya Shengyi Seaview Hotel (ex. Shengyi Holiday Villa Hotel Sanya)",
        "hotel_stars": 5,
        "hotel_place_names_as_in_post": [
          "Бухта Санья"
        ],
        "place_names_inside_hotel_name_as_in_post": [
          "Sanya"
        ],
        "hotel_is_fixed_part_of_combined_tour": false,
        "offers": [
          {
            "departure_date_as_in_post": "26 сентября",
            "departure_date": "2026-09-26",
            "nights": 10,
            "price_as_in_post": "91 345 руб",
            "price_amount": 91345,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "28 ноября",
            "departure_date": "2026-11-28",
            "nights": 10,
            "price_as_in_post": "116 216 руб",
            "price_amount": 116216,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          }
        ]
      },
      {
        "hotel_name_as_in_post": "Golden Palm Resort Hotel",
        "hotel_stars": 4,
        "hotel_place_names_as_in_post": [
          "Бухта Ялонг"
        ],
        "place_names_inside_hotel_name_as_in_post": [],
        "hotel_is_fixed_part_of_combined_tour": false,
        "offers": [
          {
            "departure_date_as_in_post": "26 сентября",
            "departure_date": "2026-09-26",
            "nights": 10,
            "price_as_in_post": "112 843 руб",
            "price_amount": 112843,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки и ужины.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "28 ноября",
            "departure_date": "2026-11-28",
            "nights": 10,
            "price_as_in_post": "130 023 руб",
            "price_amount": 130023,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки и ужины.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          }
        ]
      },
      {
        "hotel_name_as_in_post": "Ascott Dadonghai Bay Sanya",
        "hotel_stars": 5,
        "hotel_place_names_as_in_post": [
          "Бухта Дадунхай"
        ],
        "place_names_inside_hotel_name_as_in_post": [
          "Dadonghai Bay",
          "Sanya"
        ],
        "hotel_is_fixed_part_of_combined_tour": false,
        "offers": [
          {
            "departure_date_as_in_post": "26 сентября",
            "departure_date": "2026-09-26",
            "nights": 10,
            "price_as_in_post": "127 190 руб",
            "price_amount": 127190,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          },
          {
            "departure_date_as_in_post": "28 ноября",
            "departure_date": "2026-11-28",
            "nights": 10,
            "price_as_in_post": "136 230 руб",
            "price_amount": 136230,
            "price_currency": "RUB",
            "price_conditions_as_in_post": "С человека при покупке тура на двоих. Завтраки.",
            "price_is_for": "с человека при покупке на двоих",
            "room_category_as_in_post": null,
            "flight_included": true
          }
        ]
      }
    ],
    "tours_without_hotel": [],
    "doubts_comment": "Остров «Хайнань» назван в тексте как «на острове Хайнань, Китай» без отдельной строки отеля, роль записана как «место отеля» по смыслу; при необходимости можно понизить до «только в заголовке или метках»."
  }
}

3 Где в посте то, что выписано

Подсветка: город вылета перелёт: доказательство страна место отель дата вылета условия цены цена сумма не взята ценой — наведите на подсветку, чтобы увидеть поля ответа.

# Заголовок поста
Китай, о. Хайнань — от 80 955 ₽ с прямым перелетом

# Дата публикации
2026-09-23

# Метки блога
Последние билеты, предложение, Прямой перелет, Китай, Без виз, 500-800ye, Заграница, Вылет из Петербурга, Хайнань, 10 ночей, Экзотика, Раннее бронирование, Пляжный отдых

# Текст поста
Вылет из Санкт-Петербурга 26 сентября (последние 4 билета!) или 28 ноября на 10 ночей. Без визы!
Привет! Я Екатерина, редактор Чиптрип.
Я собрала 10 предложений в 4 отелях на острове Хайнань, Китай. Вылет из Санкт-Петербурга 26 сентября или 28 ноября:
Guan Hai Lou Hotel — Бухта Дадунхай
Тур с 26.09 — под запрос — отель проверит, есть ли место. Возможно, придется искать замену. Тур с 28.11 — гарантия отеля — место будет за вами и не придется искать замену.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 80 955 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 104 657 руб.
Одноместное размещение. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 87 612 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 113 158 руб.
Дальше будут очень хорошие отели:
Sanya Shengyi Seaview Hotel (ex. Shengyi Holiday Villa Hotel Sanya) 5* — Бухта Санья
Tripadvisor: 4
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 100 м до пляжа, открытый бассейн.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 91 345 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 116 216 руб.
Golden Palm Resort Hotel 4* — Бухта Ялонг
Tripadvisor: 4,2
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 50 м до пляжа, 3 открытых бассейна.
С человека при покупке тура на двоих. Завтраки и ужины.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 112 843 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 130 023 руб.
Ascott Dadonghai Bay Sanya 5* — Бухта Дадунхай
Tripadvisor: 4,6
Тур с 26.09 — под запрос. Тур с 28.11 — гарантия. 800 м до пляжа (коралловый риф), открытый бассейн.
С человека при покупке тура на двоих. Завтраки.
Вылет 26 сентября, 10 ночей (9 ночей в отеле): 127 190 руб.
Вылет 28 ноября, 10 ночей (9 ночей в отеле): 136 230 руб.
В стоимость тура включено:
— прямой авиаперелет Санкт-Петербург — Санья — Санкт-Петербург (а/к Аэрофлот);
— проживание;
— указанное питание;
— медицинская страховка;
— трансфер аэропорт — отель — аэропорт.
Дополнительно оплачивается:
— страховка от невыезда (по желанию);
— некоторые отели взимают возвратный депозит при заселении — суммы уточняйте у менеджера при бронировании.
Виза: для поездок в Китай в период с 15.09.2025 по 14.09.2026 и не более чем на 30 дней подряд — виза не нужна!
❗️ Цена может отличаться на день бронирования, так как она привязана к евро/доллару!
Есть другие отели и срок проживания.
Время перелета: ~ 10 часов.
Прогноз погоды*: в сентябре- октябре — воздух днем +29...+31 °С, ночью +26...+27 °С, вода +28...+29 °, в ноябре-декабре — воздух днем +24...+25 °С, ночью +20...+21 °С, вода +25...+27 °.
* Ориентировочно на момент поездки.
❗️ В несезон и на время пандемии некоторые услуги могут быть недоступны или доступны частично. Просьба при бронировании уточнять интересующую информацию.
Понравились предложения или есть вопросы? Пишите или оставьте заявку, с вами свяжутся в ближайшее время:
☎️ 244-05-75
✉️ zapros@cheaptripspb.ru

4 Проверки

⚖️ Оценка независимого Claude Opus — главная: справилась ли модель и что заденет покупателя
🔎 Скрипт вхождений: все ли дословные поля ответа есть в посте — не выдумала ли модель
📐 Отличия от эталона агента — вспомогательно

Эталон — ответ, который до прогона написал по тому же промпту агент Claude, прочитав пост вручную. Модели он не показывается. Отличие — не обязательно ошибка: в спорных местах агент и модель часто выбирают разные допустимые прочтения (тип места, роль, где найдено). Ошибки определяет оценка Opus выше; эта таблица помогает быстро найти, где смотреть.

ПолеВ ответе моделиВ эталоне агента
местонет в ответеСанья → Санья · город · город прилёта
hotels[0].offers[0].price_as_in_post"80 955 руб""80 955 руб."
hotels[0].offers[1].price_as_in_post"104 657 руб""104 657 руб."
hotels[0].offers[2].price_as_in_post"87 612 руб""87 612 руб."
hotels[0].offers[3].price_as_in_post"113 158 руб""113 158 руб."
hotels[1].offers[0].price_as_in_post"91 345 руб""91 345 руб."
hotels[1].offers[1].price_as_in_post"116 216 руб""116 216 руб."
hotels[2].offers[0].price_as_in_post"112 843 руб""112 843 руб."
hotels[2].offers[1].price_as_in_post"130 023 руб""130 023 руб."
hotels[3].offers[0].price_as_in_post"127 190 руб""127 190 руб."
hotels[3].offers[1].price_as_in_post"136 230 руб""136 230 руб."

Файл эталона: EXPECTED-answer-format-v2-written-by-agent-before-run-not-shown-to-haiku.json