
Навигатор Аренды Жилья
Поиск квартиры в аренду одновременно на Циан, Авито и Яндекс.Недвижимость. Дедупликация объявлений, анализ цены за квадратный метр, оценка районов, проверка фотографий на красные флаги, шаблоны общения с арендодателями. Алгоритм скоринга ранжирует объявления по цене, транспорту, качеству фото, свежести и инфраструктуре.
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+
- Срок аренды — длительная / посуточно
- Тип жилья — квартира, апартаменты, комната
- Этаж — предпочтения по этажу (не первый, не последний и т.д.)
- Метраж — минимальная площадь
- Ремонт — любой, косметический, дизайнерский
- Дополнительно — с мебелью, с животными, лифт, парковка, балкон
- Кто сдаёт — от собственника / от агентства / без разницы
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 | Минимальная площадь (м²) | Integer | 30 |
maxarea | Максимальная площадь (м²) | Integer | 80 |
minfloor | Минимальный этаж | Integer | 2 |
maxfloor | Максимальный этаж | Integer | 20 |
repair | Ремонт | 1 (любой), 2 (косметический), 3 (дизайнерский) | 2 |
furniture | С мебелью | 1 | 1 |
is_by_homeowner | От собственника | 1 | 1 |
sort | Сортировка | price_object_order, creation_date, area, address | creation_date |
page | Страница | Integer | 1 |
Популярные регионы 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®ion=1&minprice=30000&maxprice=50000&sort=creation_date
2-комнатная от собственника в СПб, центральные районы:
https://www.cian.ru/cat.php?deal_type=rent&offer_type=flat&type=2®ion=2&is_by_homeowner=1&sort=creation_date
Студия в Москве у метро, с мебелью, до 45 тыс.₽:
https://www.cian.ru/cat.php?deal_type=rent&offer_type=flat&type=9®ion=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 | Страница | Integer | 1 |
price_min | Минимальная цена | Integer (₽) | 30000 |
price_max | Максимальная цена | Integer (₽) | 60000 |
metro[] | Станции метро | ID метро | 121 |
district[] | Районы | ID района | 35 |
user | Тип продавца | 1 (собственник) | 1 |
furniture | С мебелью | true | true |
sort | Сортировка | date, price_asc, price_desc | date |
s_trg | Срок аренды | 3 (длительная), 4 (посуточно) | 3 |
s_type | Тип поиска | 2 (по владельцу) | 2 |
foot_min | Мин. минут пешком до метро | Integer | 10 |
Примеры 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 | Категория | APARTMENT | APARTMENT |
rgid | ID региона (Яндекс) | Integer (см. таблицу) | 587795 |
rooms | Количество комнат | 1, 2, 3, STUDIO | 2 |
priceMin | Минимальная цена | Integer (₽) | 30000 |
priceMax | Максимальная цена | Integer (₽) | 60000 |
areaMin | Мин. площадь | Integer (м²) | 30 |
areaMax | Макс. площадь | Integer (м²) | 80 |
floorMin | Мин. этаж | Integer | 2 |
floorMax | Макс. этаж | Integer | 25 |
furniture | С мебелью | true | true |
sort | Сортировка | DATE_DESC, PRICE_ASC, PRICE_DESC, AREA_DESC | DATE_DESC |
page | Страница | Integer | 1 |
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 м²
- Одинаковые фото (визуально похожие)
- Кросс-постинг: агентство размещает на всех площадках
Алгоритм дедупликации:
- Группируй по адресу
- Внутри группы — сравни цену и площадь
- Если совпадают — оставь объявление с максимальной информацией (обычно Cian)
- Отметь источник: «найдено на Cian, Avito, Яндекс»
Шаг 7: Скоринг и ранжирование
Алгоритм скоринга
Каждое объявление получает оценку от 0 до 100 баллов:
| Критерий | Вес | Баллы | Описание |
|---|---|---|---|
| Цена/м² | 30 | 0-30 | Сравнение со средней ценой по району. Ниже среднего = больше баллов |
| Транспорт | 20 | 0-20 | Близость к метро (0-5 мин = 20, 5-10 = 15, 10-15 = 10, 15+ = 5) |
| Качество фото | 15 | 0-15 | Оценка через image_analysis (см. ниже) |
| Свежесть | 15 | 0-15 | Сегодня = 15, вчера = 12, 2-3 дня = 8, неделя = 4, старше = 1 |
| Район | 10 | 0-10 | Оценка инфраструктуры района (см. ниже) |
| Полнота описания | 5 | 0-5 | Подробное описание = больше баллов |
| Рейтинг арендодателя | 5 | 0-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 для оценки фотографий каждого объявления.
Процесс анализа
- Открой страницу объявления через browser-use
- Извлеки URL фотографий через eval
- Для каждого фото вызови 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 до 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 комнату |
| Не удаётся извлечь данные через eval | CSS-селекторы могут измениться. Используй 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'" |
Типичные ошибки и предупреждения
Предупреждения для пользователя:
- Слишком низкая цена — если цена на 30%+ ниже среднего по району, это подозрительно. Возможно мошенничество или скрытые проблемы.
- Нет просмотра — никогда не переводите деньги без личного просмотра квартиры.
- Залог = 2+ месяца — стандартный залог — 1 месяц. 2+ — признак жадного арендодателя.
- Просьба предоплаты — никогда не платите до подписания договора и получения ключей.
- Только наличные — предпочтительнее безналичная оплата с подтверждением перевода.
- Срочный выезд — «срочно съезжаю, надо сдать за день» — возможная подстава.