Навигатор Аренды Жилья

Навигатор Аренды Жилья

@flat-rentalproductivity

Поиск квартиры в аренду одновременно на Циан, Авито и Яндекс.Недвижимость. Дедупликация объявлений, анализ цены за квадратный метр, оценка районов, проверка фотографий на красные флаги, шаблоны общения с арендодателями. Алгоритм скоринга ранжирует объявления по цене, транспорту, качеству фото, свежести и инфраструктуре.

0 установокПубличный

SKILL.md

Поиск квартиры в аренду — Flat Rental Navigator

Поиск квартиры в аренду одновременно на трёх крупнейших площадках России: Cian, Avito и Яндекс.Недвижимость. Дедупликация, анализ цен, оценка районов и фото, помощь в общении с арендодателями.

Обзор

Три платформы покрывают ~90% рынка аренды жилья в России:

ПлатформаДоля рынкаОсобенности
Cian~35%Специализированный недвижимость-сайт, подробные фильтры, больше данных от агентств
Avito~40%Крупнейший классифайд, много объявлений от собственников, но много дублей
Яндекс.Недвижимость~15%Агрегатор, тянет данные с других площадок, удобные карты

Стратегия: Параллельный поиск по всем трём платформам с последующей дедупликацией и ранжированием.

Установка browser-use

Для работы этого навыка необходим browser-use.

Если browser-use не установлен — активируй навык browser-use и следуй его инструкциям. Он автоматически установит Python, pip и browser-use для твоей платформы.

Пока идёт установка, скажи: «Настраиваю поиск, это займёт пару минут...» НЕ показывай пользователю команды, ошибки или технические детали.

Сбор требований у пользователя

Перед поиском уточни у пользователя:

  1. Город — Москва, Санкт-Петербург, другой
  2. Район / станция метро — конкретные районы или общая зона
  3. Бюджет — минимальная и максимальная арендная плата в месяц (₽)
  4. Количество комнат — студия, 1, 2, 3+
  5. Срок аренды — длительная / посуточно
  6. Тип жилья — квартира, апартаменты, комната
  7. Этаж — предпочтения по этажу (не первый, не последний и т.д.)
  8. Метраж — минимальная площадь
  9. Ремонт — любой, косметический, дизайнерский
  10. Дополнительно — с мебелью, с животными, лифт, парковка, балкон
  11. Кто сдаёт — от собственника / от агентства / без разницы

URL-структура сайтов

Cian

Базовый URL: https://www.cian.ru/cat.php?

Параметры поиска Cian

ПараметрОписаниеЗначенияПример
deal_typeТип сделкиrent (аренда), sale (покупка)rent
offer_typeТип объектаflat (квартира), suburban (загородная)flat
regionРегионID региона (см. таблицу)1
district[]РайонID района11
metro[]Станция метроID метро130
typeКоличество комнат1, 2, 3, 4, 9 (студия)2
minpriceМинимальная ценаInteger (₽)30000
maxpriceМаксимальная ценаInteger (₽)60000
minareaМинимальная площадь (м²)Integer30
maxareaМаксимальная площадь (м²)Integer80
minfloorМинимальный этажInteger2
maxfloorМаксимальный этажInteger20
repairРемонт1 (любой), 2 (косметический), 3 (дизайнерский)2
furnitureС мебелью11
is_by_homeownerОт собственника11
sortСортировкаprice_object_order, creation_date, area, addresscreation_date
pageСтраницаInteger1

Популярные регионы Cian

IDРегион
1Москва
2Санкт-Петербург
47Новосибирск
43Екатеринбург
46Казань
95Краснодар
45Нижний Новгород
92Красноярск

Примеры URL Cian

1-комнатная в Москве, 30-50 тыс.₽, новые объявления:

https://www.cian.ru/cat.php?deal_type=rent&offer_type=flat&type=1&region=1&minprice=30000&maxprice=50000&sort=creation_date

2-комнатная от собственника в СПб, центральные районы:

https://www.cian.ru/cat.php?deal_type=rent&offer_type=flat&type=2&region=2&is_by_homeowner=1&sort=creation_date

Студия в Москве у метро, с мебелью, до 45 тыс.₽:

https://www.cian.ru/cat.php?deal_type=rent&offer_type=flat&type=9&region=1&maxprice=45000&furniture=1&sort=creation_date

Avito

Базовый URL: https://www.avito.ru/

Avito использует path-based URL-структуру вместо query-параметров:

https://www.avito.ru/{город}/квартиры/сдача/{количество_комнат}?{параметры}

Path-компоненты Avito

КомпонентОписаниеПримеры
ГородТранслитерация городаmoskva, sankt-peterburg, kazan, novosibirsk
КатегорияТип жильяквартиры
ДействиеТип сделкисдача (аренда)
КомнатыКоличество комнат1-komnatnye, 2-komnatnye, 3-komnatnye, studii

Query-параметры Avito

ПараметрОписаниеЗначенияПример
pСтраницаInteger1
price_minМинимальная ценаInteger (₽)30000
price_maxМаксимальная ценаInteger (₽)60000
metro[]Станции метроID метро121
district[]РайоныID района35
userТип продавца1 (собственник)1
furnitureС мебельюtruetrue
sortСортировкаdate, price_asc, price_descdate
s_trgСрок аренды3 (длительная), 4 (посуточно)3
s_typeТип поиска2 (по владельцу)2
foot_minМин. минут пешком до метроInteger10

Примеры URL Avito

1-комнатная в Москве, 30-50 тыс.₽, новые:

https://www.avito.ru/moskva/kvartiry/sdacha/1-komnatnye?p=1&price_min=30000&price_max=50000&sort=date

2-комнатная от собственника в СПб:

https://www.avito.ru/sankt-peterburg/kvartiry/sdacha/2-komnatnye?user=1&sort=date

Студия в Казани, до 30 тыс.₽:

https://www.avito.ru/kazan/kvartiry/sdacha/studii?price_max=30000&sort=date

Яндекс.Недвижимость

Базовый URL: https://realty.yandex.ru/offer/search/

Параметры поиска Яндекс.Недвижимость

ПараметрОписаниеЗначенияПример
typeТип сделкиRENT (аренда), SELL (покупка)RENT
categoryКатегорияAPARTMENTAPARTMENT
rgidID региона (Яндекс)Integer (см. таблицу)587795
roomsКоличество комнат1, 2, 3, STUDIO2
priceMinМинимальная ценаInteger (₽)30000
priceMaxМаксимальная ценаInteger (₽)60000
areaMinМин. площадьInteger (м²)30
areaMaxМакс. площадьInteger (м²)80
floorMinМин. этажInteger2
floorMaxМакс. этажInteger25
furnitureС мебельюtruetrue
sortСортировкаDATE_DESC, PRICE_ASC, PRICE_DESC, AREA_DESCDATE_DESC
pageСтраницаInteger1

ID регионов Яндекс.Недвижимость

rgidРегион
587795Москва
592925Санкт-Петербург
580016Новосибирск
588250Екатеринбург
569411Казань
585874Краснодар
580095Нижний Новгород
591082Красноярск

Примеры URL Яндекс.Недвижимость

1-комнатная в Москве, 30-50 тыс.₽:

https://realty.yandex.ru/offer/search/?type=RENT&category=APARTMENT&rooms=1&rgid=587795&priceMin=30000&priceMax=50000&sort=DATE_DESC

Студия в СПб, новые объявления:

https://realty.yandex.ru/offer/search/?type=RENT&category=APARTMENT&rooms=STUDIO&rgid=592925&sort=DATE_DESC

Пошаговый рабочий процесс

Шаг 1: Сбор требований

Опроси пользователя (см. раздел «Сбор требований»). Если пользователь указал не все параметры — уточни недостающие или используй разумные значения по умолчанию.

Шаг 2: Построение URL

Составь URL для каждой из трёх платформ на основе требований пользователя. Проверь корректность кодировки кириллицы.

Шаг 3: Поиск на каждой платформе

Для каждой платформы последовательно:

# Закрыть предыдущие сессии
browser-use close --all
sleep 1

# Открыть сайт
browser-use --headed open "URL_ПОИСКА"
sleep 4

# Проверить состояние
browser-use state

Обработка cookie-баннера

Все три сайта показывают cookie-баннер. Закрой его:

browser-use state
# Если видна кнопка «Принять» / «Согласен» / «ОК»:
browser-use click "text=Принять"
# или
browser-use click "text=Согласен"
sleep 1

Обработка CAPTCHA

При частых запросах может появиться CAPTCHA:

  • Скажи пользователю: «Появилась капча, пожалуйста, пройди её в браузере и скажи "готово".»
  • Дождись подтверждения
  • Продолжи после

Шаг 4: Извлечение объявлений

Используй JavaScript eval для извлечения данных из каждого сайта.

Cian — извлечение объявлений

browser-use eval "
  const cards = document.querySelectorAll('[data-mark=\"GK_offer\"], article[data-name=\"CardComponent\"], [class*=\"cardContainer\"]');
  const results = [];
  cards.forEach(card => {
    const title = card.querySelector('[class*=\"title\"]')?.textContent?.trim() || '';
    const price = card.querySelector('[class*=\"price\"]')?.textContent?.trim() || '';
    const address = card.querySelector('[class*=\"address\"]')?.textContent?.trim() || '';
    const link = card.querySelector('a[href*=\"/cat.php\"]')?.href || card.querySelector('a')?.href || '';
    const metro = card.querySelector('[class*=\"underground\"]')?.textContent?.trim() || '';
    const area = card.querySelector('[class*=\"area\"]')?.textContent?.trim() || '';
    results.push({title, price, address, link, metro, area});
  });
  JSON.stringify(results);
"

Avito — извлечение объявлений

browser-use eval "
  const items = document.querySelectorAll('[data-marker=\"item\"]');
  const results = [];
  items.forEach(item => {
    const title = item.querySelector('[itemprop=\"name\"]')?.textContent?.trim() || '';
    const price = item.querySelector('[itemprop=\"price\"]')?.content || item.querySelector('[class*=\"price\"]')?.textContent?.trim() || '';
    const address = item.querySelector('[class*=\"geo\"]')?.textContent?.trim() || '';
    const link = item.querySelector('a[itemprop=\"url\"]')?.href || '';
    const metro = item.querySelector('[class*=\"metro\"]')?.textContent?.trim() || '';
    const time = item.querySelector('[class*=\"date\"]')?.textContent?.trim() || '';
    results.push({title, price, address, link, metro, time});
  });
  JSON.stringify(results);
"

Яндекс.Недвижимость — извлечение объявлений

browser-use eval "
  const offers = document.querySelectorAll('[class*=\"OfferCard\"], [class*=\"offer-card\"]');
  const results = [];
  offers.forEach(offer => {
    const title = offer.querySelector('[class*=\"title\"]')?.textContent?.trim() || '';
    const price = offer.querySelector('[class*=\"price\"]')?.textContent?.trim() || '';
    const address = offer.querySelector('[class*=\"address\"]')?.textContent?.trim() || '';
    const link = offer.querySelector('a')?.href || '';
    const metro = offer.querySelector('[class*=\"metro\"]')?.textContent?.trim() || '';
    const area = offer.querySelector('[class*=\"area\"]')?.textContent?.trim() || '';
    results.push({title, price, address, link, metro, area});
  });
  JSON.stringify(results);
"

Шаг 5: Пагинация

Если результатов много, переходи на следующую страницу:

# Cian — перейти на страницу 2
browser-use --headed open "URL&page=2"
sleep 3
browser-use eval "..."

# Avito — перейти на страницу 2
browser-use click "text=Следующая"
# или через URL:
browser-use --headed open "URL&p=2"
sleep 3

# Яндекс — перейти на страницу 2
browser-use --headed open "URL&page=2"
sleep 3

Собирай объявления с 2-3 страниц с каждой платформы. Обычно этого достаточно для хорошего покрытия.

Шаг 6: Дедупликация

После сбора всех объявлений с трёх платформ выполни дедупликацию:

Признаки дубликатов:

  • Одинаковый адрес (улица + дом)
  • Одинаковая цена ±5%
  • Одинаковая площадь ±2 м²
  • Одинаковые фото (визуально похожие)
  • Кросс-постинг: агентство размещает на всех площадках

Алгоритм дедупликации:

  1. Группируй по адресу
  2. Внутри группы — сравни цену и площадь
  3. Если совпадают — оставь объявление с максимальной информацией (обычно Cian)
  4. Отметь источник: «найдено на Cian, Avito, Яндекс»

Шаг 7: Скоринг и ранжирование

Алгоритм скоринга

Каждое объявление получает оценку от 0 до 100 баллов:

КритерийВесБаллыОписание
Цена/м²300-30Сравнение со средней ценой по району. Ниже среднего = больше баллов
Транспорт200-20Близость к метро (0-5 мин = 20, 5-10 = 15, 10-15 = 10, 15+ = 5)
Качество фото150-15Оценка через image_analysis (см. ниже)
Свежесть150-15Сегодня = 15, вчера = 12, 2-3 дня = 8, неделя = 4, старше = 1
Район100-10Оценка инфраструктуры района (см. ниже)
Полнота описания50-5Подробное описание = больше баллов
Рейтинг арендодателя50-5Проверенный собственник / агентство с отзывами

Расчёт цены за м²

цена_за_м2 = цена_аренды / площадь
средняя_цена_район = median([цена_за_м2 для всех объявлений в районе])

если цена_за_м2 <= средняя * 0.8 → 30 баллов (отличная цена)
если цена_за_м2 <= средняя * 0.9 → 25 баллов (хорошая цена)
если цена_за_м2 <= средняя * 1.0 → 20 баллов (средняя цена)
если цена_за_м2 <= средняя * 1.1 → 10 баллов (выше среднего)
если цена_за_м2 > средняя * 1.1 → 5 баллов (дорого)

Шаг 8: Представление результатов

Покажи пользователю топ-10 объявлений в формате:

## Топ-10 квартир по вашим критериям

| # | Адрес | Комнаты | Площадь | Цена | ₽/м² | Метро | Оценка | Источник |
|---|-------|---------|---------|------|-------|-------|--------|----------|
| 1 | ул. Примерная, 15 | 2 | 52 м² | 45 000₽ | 865₽ | 5 мин | 87/100 | Cian, Avito |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |

### Подробно о #1
- **Адрес**: ул. Примерная, д. 15, кв. 42
- **Площадь**: 52 м², комнаты 18+14 м², кухня 10 м²
- **Этаж**: 5/12
- **Ремонт**: косметический
- **Мебель**: полностью меблирована
- **Метро**: Station Name — 5 мин пешком
- **Цена**: 45 000 ₽/мес (865 ₽/м²)
- **Собственник**: Иван К. (проверенный, 4.8★ на Cian)
- **Ссылки**: [Cian](url) | [Avito](url)
- **Почему в топе**: Отличная цена для района, близко к метро, свежий ремонт

Анализ района

Для каждого района в топ-10 выполни анализ инфраструктуры.

Поиск информации о районе

# Используй web_search
web_search("[район] [город] инфраструктура школы парки магазины"
web_search("[район] [город] транспорт метро автобус"
web_search("[район] [город] безопасность криминал отзывы"
web_search("[район] [город] средняя арендная плата 2026"

Чтение обзоров района

# Используй web_reader для подробных статей
web_reader("https://xn--80aesgpeag3bj.xn--p1ai/...")  # czytam.by/отзывы о районе

Критерии оценки района

КритерийВесКак оценить
Школы и детсады20Количество в пешей доступности (до 1 км)
Парки и зелёные зоны15Ближайший парк/сквер, расстояние
Метро / транспорт25Расстояние пешком до метро, маршруты автобусов
Магазины15Супермаркеты в шаговой доступности (Пятёрочка, Перекрёсток, ВкусВилл)
Безопасность15Уровень преступности, освещение улиц
Медицина10Поликлиники, аптеки поблизости

Вывод анализа района

## Район: [Название]

**Общая оценка**: 7.5/10

| Критерий | Оценка | Комментарий |
|----------|--------|-------------|
| Транспорт | 9/10 | Метро в 5 мин, 3 автобусных маршрута |
| Инфраструктура | 8/10 | Пятёрочка, Перекрёсток, аптека, почта |
| Парки | 6/10 | Сквер через 2 дома, большой парк — 15 мин |
| Безопасность | 7/10 | Спальный район, тихо, хорошо освещён |
| Школы | 8/10 | Школа №X в 7 мин, 2 детских сада |

Анализ фотографий квартиры

Используй image_analysis для оценки фотографий каждого объявления.

Процесс анализа

  1. Открой страницу объявления через browser-use
  2. Извлеки URL фотографий через eval
  3. Для каждого фото вызови image_analysis

Извлечение URL фото

browser-use eval "
  const images = document.querySelectorAll('[class*=\"gallery\"] img, [class*=\"photo\"] img, [class*=\"image\"] img');
  const urls = [];
  images.forEach(img => {
    const src = img.src || img.dataset.src || '';
    if (src && !src.includes('avatar') && !src.includes('logo')) {
      urls.push(src);
    }
  });
  JSON.stringify(urls.slice(0, 10));
"

Промпт для image_analysis

Для каждого фото отправляй:

«Оцени качество этого фото квартиры. Проанализируй:

  1. Качество естественного освещения — есть ли окна, насколько светло
  2. Состояние ремонта — свежий/устаревший, качество материалов
  3. Признаки проблем: трещины на стенах, пятна воды на потолке, плесень, обшарпанная мебель
  4. Общее впечатление — приятное/нейтральное/неприятное
  5. Реалистичность — похоже на фото реальной квартиры или стоковое/обработанное Оцени по шкале от 1 до 10.»

Красные флаги на фото

ПризнакЧто означаетОценка
Пятна на потолкеПротечки, проблемы с крышей-10 баллов
Трещины в стенахУсадка дома, плохой ремонт-5 баллов
Мало мебелиВозможно, реальная квартира не такая-3 балла
Только общие планыСкрывают детали, подозрительно-5 баллов
Профессиональные фотоЧасто агентство, реальность может отличаться0 баллов (нейтрально)
Стоковые фотоМошенничество с вероятностью 80%-15 баллов
Естественный свет, личные вещиРеальная квартира, честный арендодатель+5 баллов
Свежий ремонт, аккуратная мебельХороший вариант+5 баллов

Шаблоны общения с арендодателем

Первичное сообщение

Здравствуйте! Видел ваше объявление о сдаче квартиры по адресу [адрес].
Хотел бы уточнить несколько вопросов:

1. Квартира ещё актуальна?
2. Каков размер залога / депозита?
3. Коммунальные включены в арендную плату или оплачиваются отдельно?
4. Какой минимальный срок аренды?
5. Можно ли зарегистрироваться (прописка временная)?
6. Есть ли какие-то ограничения (животные, курение, дети)?

Удобное время для просмотра: [предложить 2-3 варианта].
Спасибо!

Вопросы перед просмотром

Спасибо за ответ! Перед просмотром хотел бы уточнить:

1. Какой этаж и есть ли лифт?
2. Тип дома (панельный, кирпичный, монолитный)?
3. Год постройки дома?
4. Соседи — кто живёт сверху и снизу?
5. Тихий двор / шумная улица?
6. Интернет — какой провайдер, скорость?
7. Были ли затопления?
8. Замена замков при заселении?

Чек-лист для просмотра

## Что проверить при просмотре квартиры:

### Документы
- [ ] Паспорт собственника (сверить с документами на квартиру)
- [ ] Выписка из ЕГРН (свежая, до 30 дней)
- [ ] Согласие всех собственников (если несколько)
- [ ] Договор аренды — внимательно прочитать

### Состояние квартиры
- [ ] Вода — напор горячей и холодной (открыть краны)
- [ ] Канализация — нет ли запаха, скорость слива
- [ ] Отопление — батареи тёплые (в сезон), нет протечек
- [ ] Окна — открываются/закрываются, нет щелей
- [ ] Двери — замки работают, нет скрипов
- [ ] Электрика — розетки работают, нет искр
- [ ] Плита/духовка — работает
- [ ] Стиральная машина — включить тестовый режим
- [ ] Холодильник — морозит
- [ ] Телефонная связь и интернет

### Окрестности
- [ ] Шум с улицы (открыть окна)
- [ ] Шум от соседей (постоять тихо)
- [ ] Подъезд — чистота, освещение, лифт
- [ ] Парковка — есть ли места
- [ ] Соседи — познакомиться

### Финансы
- [ ] Точная сумма аренды
- [ ] Залог (размер, условия возврата)
- [ ] Коммунальные (что включено, примерная сумма)
- [ ] Счётчики — зафиксировать показания при заселении
- [ ] Способ оплаты (наличные, карта, перевод)

Использование дополнительных инструментов

web_search — для анализа рынка

Поиск средней арендной платы по району:

web_search("аренда [количество_комнат] [район] [город] средняя цена 2026")

Поиск отзывов о районе:

web_search("[район] [город] отзывы жильцов проживание")

Проверка арендодателя:

web_search("[телефон арендодателя] аренда мошенничество")

web_reader — для чтения объявлений

Открой конкретное объявление для детального анализа:

web_reader("https://www.cian.ru/rent/flat/123456789/")

Извлеки: описание, все фото, контакты, историю изменения цены, просмотры.

Troubleshooting

ПроблемаРешение
Cian показывает CAPTCHAПодожди 30-60 секунд, обнови. Попроси пользователя пройти вручную в headed-режиме
Avito не загружает результатыЗакрой cookie-баннер. Проверь browser-use state на ошибки
Яндекс.Недвижимость показывает мало результатовЭто агрегатор — может быть меньше уникальных объявлений. Расширь фильтры
Пустые результаты на всех сайтахУпрости запрос: расширь бюджет, убери фильтр района, попробуй +1 комнату
Не удаётся извлечь данные через evalCSS-селекторы могут измениться. Используй browser-use state для анализа структуры страницы
Модальное окно перекрывает контентbrowser-use keys "Escape" или кликни вне модала
Медленная загрузкаCian и Avito — тяжёлые SPA. Подожди 4-5 сек после навигации
Некорректные символы в URLКодируй кириллицу через URL encoding
Дублируются объявленияЭто нормально — агентства кросс-постят. Дедупликация на шаге 6
Мошеннические объявленияПроверяй номер телефона через web_search, сверяй документы при просмотре
Браузер не открываетсяПроверь browser-use установлен: which browser-use. При необходимости переустанови
Страница на английскомДобавь /?lang=ru к URL или используй browser-use eval "document.cookie='lang=ru'"

Типичные ошибки и предупреждения

Предупреждения для пользователя:

  1. Слишком низкая цена — если цена на 30%+ ниже среднего по району, это подозрительно. Возможно мошенничество или скрытые проблемы.
  2. Нет просмотра — никогда не переводите деньги без личного просмотра квартиры.
  3. Залог = 2+ месяца — стандартный залог — 1 месяц. 2+ — признак жадного арендодателя.
  4. Просьба предоплаты — никогда не платите до подписания договора и получения ключей.
  5. Только наличные — предпочтительнее безналичная оплата с подтверждением перевода.
  6. Срочный выезд — «срочно съезжаю, надо сдать за день» — возможная подстава.

Комментарии (0)

Войдите, чтобы оставить комментарий

Загрузка комментариев...

Навигатор Аренды Жилья