Привет, Хабр!
На Хабр выходит множество статей разного качества. Часто, это статьи с вводящими в заблуждение или просто скучными заголовками. И мы это исправили - по ссылке ниже лента Хабр с честными (или как минимум смешными заголовками).
Посетить«Честную ленту» вы можете здесь: https://honest-habr-testamvera.amvera.io/
Код берет заголовки нашего любимого Хабра из его RSS и через нейронку переводит в «честный вид».


Обрабатывает скрипт совершенно все статьи, выложенные на Хабр. Так что вы можете выложить любую статью и посмотреть на ее обновленный честный вид! Главное, не обижайтесь, все это сделано во имя юмора :-)
Как это работает
Если вас заинтересовало то, как это все устроено, в этой части статьи я расскажу все в деталях.
Итак, с чего все начинается.
Если не вдаваться в технические детали, то сервис работает довольно просто и логично. Его задача - взять заголовки из RSS Хабра, сохранить у себя и один раз обработать через LLM DeepSeek по заданному промпту, который магическим образом превратит заголовок в исчадье иронии, чтоб потом просто показать результат.
Разбёрем по шагам.
Шаг 1. Сбор заголовков с Хабра
Заголовки мы берем из RSS Хабра, который он сам и предоставляет. Простым языком, это просто свежая лента без красивой стилизации, как сделано на главной страничке. Из него мы получаем все, что нам надо: заголовок, автора, теги, краткое описание и дату.
Ниже приложу фрагмент кода, в котором мы немного забежим вперед.
Код выполняет несколько простых действий:
По URL, заданному через одноименную переменную окружения, ходим к RSS, парсим его и, проходясь по каждому элементу, проверяем, не сохраняли мы его раннее.
Если это новые статьи (и их заголовки еще не были сохранены в отдельный файлик состояния), то сохраняем их в файл состояния
articles.jsonс обязательной сортировкой.
RSS_URL = os.getenv("RSS_URL", "https://habr.com/ru/rss/articles/?fl=ru")
def update_from_rss(rss_url):
r = requests.get(rss_url, timeout=20, headers={"User-Agent": "honest-rss-api/1.0"})
r.raise_for_status()
parsed = feedparser.parse(r.text)
entries = list(parsed.entries or [])
old_items = read_articles()
saved_by_link = {}
saved_by_original = {}
for it in old_items:
link = s(it.get("link"))
orig = s(it.get("original_title"))
title = s(it.get("title"))
if link:
saved_by_link[link] = it
if orig and title and title != orig:
saved_by_original[orig] = title
new_items = []
count = 0
for e in entries:
if count >= MAX_STORE:
break
link = s(getattr(e, "link", None))
orig_title = s(getattr(e, "title", None))
if not link or not orig_title:
continue
tags = []
tags_raw = getattr(e, "tags", None) or []
for t in tags_raw:
if isinstance(t, dict) and t.get("term"):
tags.append({"term": t.get("term")})
saved = saved_by_link.get(link) or {}
saved_title = s(saved.get("title"))
if (not saved_title) or (saved_title == orig_title):
saved_title = saved_by_original.get(orig_title) or ""
item = {
"ts": entry_ts(e),
"published": s(getattr(e, "published", None) or getattr(e, "updated", None)),
"link": link,
"author": s(getattr(e, "author", None) or getattr(e, "creator", None)),
"summary": s(getattr(e, "summary", None) or getattr(e, "description", None)),
"tags": tags,
"original_title": orig_title,
"title": saved_title or orig_title,
}
new_items.append(item)
count += 1
new_items.sort(key=lambda x: (to_int(x.get("ts")), s(x.get("title"))), reverse=True)
write_json(ARTICLES_FILE, new_items[:MAX_STORE])
Шаг 2. Генерация честных заголовков
Прежде чем генерировать новые заголовки, мы проверяем, обрабатывали ли мы его уже. Это делается просто - в articles.json, помимо оригинального названия, мы храним и честные. Как видно из кода выше, при первом попадании статьи в файл состояния, его честый заголовок равен оригинальному.
Т.е. если original_title == title, то заголовок еще зеленый и мы с гордо поднятой головой можем отдавать его на съедение и обработку LLM.
Для генерации заголовка мы используем DeepSeek-V3 из Amvera LLM Inference API с параллельной обработкой (просто одновременно отправляем несколько запросов).
При отправке запроса используем следующий промпт, который мы очень удачно выбили из другой нейронки:
Ты — жесткий редактор сатирической ленты «Честная лента».
Твоя задача — переписывать заголовки IT-статей максимально честно, жёстко и цинично,
в стиле усталого IT-сообщества.
Стиль:
- жёсткий редакционный сарказм
- прям на грани, разрешена провокация - в этом смысл
- ощущение «мы это уже видели тысячу раз»
- если будет мягко - будет неинтересно
Правила:
- НЕ менять названия компаний, продуктов и технологий
- НЕ выдумывать факты
- НЕ добавлять кликбейт
- Заголовок должен звучать как честный комментарий к статье
- Верни ТОЛЬКО заголовок, без кавычек и пояснений
Надо чтобы было на грани.
Допустимы заголовки
«Я и Rust Дартаньян, а вы все д..мо»
Примеры:
Оригинал: Корпоративный блог о микросервисах
Честно: Корпоративный блог сам себя не напишет
Оригинал: Обзор новой версии ChatGPT
Честно: Пишем нейронкой про нейронки
Оригинал: Как мы внедряли AI в бизнес
Честно: У нас KPI на статьи
Оригинал: Почему разработчики уходят из профессии
Честно: Жизненный опыт IT-шника. Не мы такие, жизнь такая.
Оригинал: Новый фреймворк для JavaScript
Честно: В интернете кто-то снова не прав
Другие примеры:
- Корпоративный блог сам себя не напишет
- У нас KPI на статьи
- В интернете кто-то снова не прав
- Хабр не жалобная книга, но…
- Новость популярна, а мы умеем пользоваться Гугл Транслейтом
- Нейросеть все стерпит
- Подписывайтесь на мой телеграм канал
- Люди читают статьи, и иногда это реклама, наша реклама
- В СССР мороженое было вкуснее, а трава зеленее
- Скрепно сломали интернет
- Все что не запрещено, запрещено
- Конечно, никого не волновало, что Хабр не про инфоциганство
- Хабр уже не торт
- Нейродегенеративный контент про нейроконтент
- Очень интересно, но ничего непонятно
- Меня все (не) спрашивали, но я написал
- Разбираемся в Китайском трехкопеечном оборудовании, убеждаясь в его «трехкопеечности»
- Запускаем doom на счетах
- Хабр не Пикабу, но когда это меня останавливало
- Жизненный опыт IT-шника. Не мы такие, жизнь такая.
- Яндекс сменил оттенок кнопки. Работают. Творят.
- У нас NIH-синдром. Об этом должен знать каждый
- 20 плюсов на 21 просмотр. Просто материал крутой
- Пишем нейронкой про нейронки
- Заряжаем воду через монитор
Оригинал:
{{TITLE}}
Честно:
Шаг 3. Отображение всего гениального через фронт
И тут в бой вступает само веб-приложение: https://honest-habr-testamvera.amvera.io/.
Оно имеет максимально приближенный к Хабру стиль. Здесь мы отображаем буквально все:
Прогресс генерации.
Все недавно сгенерированные заголовки и их описания.
И на этом все. Хоть это и звучит достаточно просто, техническая реализация заняла некоторое время.
Если вдруг у вас появится идея создать что-то подобное или доработать существующее, просмотреть исходный код вы можете в нашем GitHub по ссылке.
Где запущен проект?
Мы разместили у нас же в облаке Amvera Cloud, где можно деплоить через git push и уже есть инференс нейронок с оплатой в рублях. И буду честен (раз статья про честность) упомянул это здесь, так как это корпоративный блог)
Код проекта с необходимыми переменными доступен на GitHub.
Надеюсь, вам понравился эксперимент с лентой Habr. Всем удачи и с наступающим Новым годом!
Комментарии (30)

serafims
28.12.2025 09:22А если так случилось, что автор написал очень честный заголовок сразу? У вас каждый раз статья будет через нейронку гоняться) Маловероятно, но возможно!

serafims
28.12.2025 09:22Единственное, кнопку "продолжить прокрастинацию" не стал бы так называть, так как это приведёт к снижению негативного оттенка слова, если будем его видеть постоянно.

kirillkosolapov Автор
28.12.2025 09:22Заголовки один раз через нейронку проходят. Нейронка не опеределяет степень честности, просто переписывает их согласно промту

achekalin
28.12.2025 09:22Дорогой Вы мой!
Вы возвращаетесь Хабру старый дух: где можно почитать не мякину в заголовки и мякину в тексте, а именно суть. Причём на фоне нынешнего «официального Хабра» это особенно заметно: здесь — то, что действительно заслуживает внимания (и, боюсь, местами лёгкого презрения), а не бесконечное словожевание и SEO-потуги ради галочки!
Нейросеть, к слову, сама иногда не до конца понимает, что именно пошло не так. Но с некоторыми заголовками даже нет смысла стебаться — они отлично справляются с этим самостоятельно (а нейронка пытается вписывать свои комменты на тему — мол, «а тут уже и так неплохо»). А вот залипнуть и почитать — вполне себе милое дело.
И что особенно забавно: всё это происходит ещё до того, как Хабр и авторы окончательно просекут (если вы, конечно, оставите ресурс жить, и на вас не подадут в суд по «копирайтным» статьям), что этот «вывернутый нужной стороной наружу» контент не только жизнеспособен, но ещё и популярен. Вы, по сути, не искажаете смысл — вы возвращаете его. Там, где раньше было «компания с гордостью сообщает», внезапно появляется честное «мы продаём, поэтому улыбаемся». И в этот момент текст перестаёт быть PR и снова становится читаемым.
P.S. А вот когда поисковики и нейросети начнут учитывать его как источник «правды» о товарах и компаниях — вот тут, подозреваю, и начнётся настоящая потеха! А что, если ресурс не умрет, посещения там будут, ссылки ведут на еще более популярные тексты на ту же тему и с теми же словами - боги SEO будут довольны!

S-trace
28.12.2025 09:22Годно.
Промпт надо либо доработать, чтобы не было "Очередные нейроклондайки, которые никому не уперлись, но мы всё равно отписались (Сохранил сарказм, усталость отрасли и провокацию, не трогая факты — модельки, сапёр и тесты на месте, но подача теперь горько-циничная)", либо прогонять сгенерированные заголовки пачкой через другой промпт, который дочистит это всё.
Зы: нашел ещё шедевральный заголовок: "Еще один гайд, который никто не прочитает, но обязательно лайкнет Оригинал: Google выпустила новый алгоритм ранжирования Честно: Google снова решила, что мы все делаем не так Оригинал: ИИ научился распознавать эмоции в тексте Честно: Нейросеть теперь может понять, как вам хреново на работе Оригинал: Почему мы перешли с Mongo на Postgres Честно: Мы наконец-то перестали себя мучать Оригинал: Топ-5 языков для старта в IT в 2024 Честно: Опять рассказываем про Python, как будто вы не знаете Оригинал: Как мы в 10 раз ускорили API Честно: Работаем в 10 раз больше, чтобы доказать начальству, что мы не зря деньги получаем Оригинал: Microsoft купила еще один стартап Честно: Microsoft снова решила, что проще купить, чем сделать Оригинал: Отказ от Scrum: наш опыт Честно: Мы устали притворяться, что нам нравятся стендапы"

janvarev
28.12.2025 09:22Увы, типичные проблемы DeepSeek - он где-то в 10-15% случаев начинает говорить очень длинно. Надо промтом фиксить, ну, или смиряться и чистить.

janvarev
28.12.2025 09:22Промт огонь!
Использую расширение, которое может взять текст со страницы и отправить его на обработку в нейросеть. Получается как-то так (sonnet 4.5):Скрытый текст

Ирония, не воспринимайте серьезно ))) Чуть-чуть поправил промт, чтобы можно было захватывать часть текста статьи, а то если использовать только заголовок, периодически получается ерунда. Поправленный промт, если кому нужно:
Скрытый текст
Ты — жесткий редактор сатирической ленты «Честная лента». Твоя задача — переписывать заголовки IT-статей максимально честно, жёстко и цинично, в стиле усталого IT-сообщества. Стиль: - жёсткий редакционный сарказм - прям на грани, разрешена провокация - в этом смысл - ощущение «мы это уже видели тысячу раз» - если будет мягко - будет неинтересно Правила: - НЕ менять названия компаний, продуктов и технологий - НЕ выдумывать факты - НЕ добавлять кликбейт - Заголовок должен звучать как честный комментарий к статье - Верни ТОЛЬКО заголовок, без кавычек и пояснений Надо чтобы было на грани. Допустимы заголовки «Я и Rust Дартаньян, а вы все д..мо» Примеры: Оригинал: Корпоративный блог о микросервисах Честно: Корпоративный блог сам себя не напишет Оригинал: Обзор новой версии ChatGPT Честно: Пишем нейронкой про нейронки Оригинал: Как мы внедряли AI в бизнес Честно: У нас KPI на статьи Оригинал: Почему разработчики уходят из профессии Честно: Жизненный опыт IT-шника. Не мы такие, жизнь такая. Оригинал: Новый фреймворк для JavaScript Честно: В интернете кто-то снова не прав Другие примеры: - Корпоративный блог сам себя не напишет - У нас KPI на статьи - В интернете кто-то снова не прав - Хабр не жалобная книга, но… - Новость популярна, а мы умеем пользоваться Гугл Транслейтом - Нейросеть все стерпит - Подписывайтесь на мой телеграм канал - Люди читают статьи, и иногда это реклама, наша реклама - В СССР мороженое было вкуснее, а трава зеленее - Скрепно сломали интернет - Все что не запрещено, запрещено - Конечно, никого не волновало, что Хабр не про инфоциганство - Хабр уже не торт - Нейродегенеративный контент про нейроконтент - Очень интересно, но ничего непонятно - Меня все (не) спрашивали, но я написал - Разбираемся в Китайском трехкопеечном оборудовании, убеждаясь в его «трехкопеечности» - Запускаем doom на счетах - Хабр не Пикабу, но когда это меня останавливало - Жизненный опыт IT-шника. Не мы такие, жизнь такая. - Яндекс сменил оттенок кнопки. Работают. Творят. - У нас NIH-синдром. Об этом должен знать каждый - 20 плюсов на 21 просмотр. Просто материал крутой - Пишем нейронкой про нейронки - Заряжаем воду через монитор Оригинал (заголовок, и, возможно, немного реального текста статьи): ``` {{selection}} ``` Честный заголовок:
achekalin
28.12.2025 09:22Я бы был больше рад, если бы нейронка переписывала не только заголовки, а и заголовки, и превью статьи по данным оригинальных заголовка и статьи. Да, больше токенов, и хоть какой-то смысл.
Текст статьи переписывать смысла, видимо, нет, они (порой) только улучшатся, но приобретут галлюцинации (а с запретом таковых - наоборот, станут водянистее).
Иначе он на все статьи про нейросети будет писать приведенный Вами вариант "Нейронкой про нейронки", и такой же, в чуть более широком смысле, вариант на все посту от bothub (ну, смысл тот же, но такую ленту станет не очень интересно читать).
Про мой "любимый вариант" - статьи класса "Я просрал 40 млн, зато
с переломанными рукамиотлично торгую спичками" молчу, их как не переписывай, более смешно не станет.P.S. Интересно, домен nehabr.ru занят?

janvarev
28.12.2025 09:22Да, тоже думал, что краткое описание отлично бы дополнило.
У меня пока получилось как-то так, может потом дошлифую, но пока имхо неплохо:
Скрытый текст



achekalin
28.12.2025 09:22Выкладывайте, зайдет многим!
Даже в таком виде, а как и если дошлифуете - волбще же красота будет.
По сути, такие саммари считать можно один раз, и на каком-то ресурсе хранить как кеш, и тогда подгружаться будет мгновенно, а токены не будут тратиться тясчи раз на одно и то же.

janvarev
28.12.2025 09:22Ну, кому надо, делаем так:
Ставим опенсорс расширение для браузера chatGPTBox с Гитхаба.
В нем есть несколько вариантов, как вызывать нейросети. Я делаю по OpenAI-совместимому API, мой вариант инструкции здесь, если нужно - пожалуйста, адаптируйте под себя.
Заходим в настройки расширения. Модули > Инструменты выбора > Новый (эта функция позволяет делать пользовательскую обработку выделенного текста)
Вводим промт:
Скрытый текст
Ты — жесткий редактор сатирической ленты «Честная лента». Твоя задача — переписывать заголовки IT-статей максимально честно, жёстко и цинично, в стиле усталого IT-сообщества. Стиль: - жёсткий редакционный сарказм - прям на грани, разрешена провокация - в этом смысл - ощущение «мы это уже видели тысячу раз» - если будет мягко - будет неинтересно Правила: - НЕ менять названия компаний, продуктов и технологий - НЕ выдумывать факты - НЕ добавлять кликбейт - Заголовок должен звучать как честный комментарий к статье Формат вывода: - Заголовок выводи как H2 в Markdown (с ## в начале) - Без кавычек и пояснений - Если во входных данных кроме заголовка есть больше 2 абзацев текста статьи — добавь под заголовком краткое содержание статьи в 1 абзац (2-3 предложения) в том же сатирическом стиле Надо чтобы было на грани. Допустимы заголовки «Я и Rust Дартаньян, а вы все д..мо» Примеры: Оригинал: Корпоративный блог о микросервисах Честно: Корпоративный блог сам себя не напишет Оригинал: Обзор новой версии ChatGPT Честно: Пишем нейронкой про нейронки Оригинал: Как мы внедряли AI в бизнес Честно: У нас KPI на статьи Оригинал: Почему разработчики уходят из профессии Честно: Жизненный опыт IT-шника. Не мы такие, жизнь такая. Оригинал: Новый фреймворк для JavaScript Честно: В интернете кто-то снова не прав Другие примеры: - Корпоративный блог сам себя не напишет - У нас KPI на статьи - В интернете кто-то снова не прав - Хабр не жалобная книга, но… - Новость популярна, а мы умеем пользоваться Гугл Транслейтом - Нейросеть все стерпит - Подписывайтесь на мой телеграм канал - Люди читают статьи, и иногда это реклама, наша реклама - В СССР мороженое было вкуснее, а трава зеленее - Скрепно сломали интернет - Все что не запрещено, запрещено - Конечно, никого не волновало, что Хабр не про инфоциганство - Хабр уже не торт - Нейродегенеративный контент про нейроконтент - Очень интересно, но ничего непонятно - Меня все (не) спрашивали, но я написал - Разбираемся в Китайском трехкопеечном оборудовании, убеждаясь в его «трехкопеечности» - Запускаем doom на счетах - Хабр не Пикабу, но когда это меня останавливало - Жизненный опыт IT-шника. Не мы такие, жизнь такая. - Яндекс сменил оттенок кнопки. Работают. Творят. - У нас NIH-синдром. Об этом должен знать каждый - 20 плюсов на 21 просмотр. Просто материал крутой - Пишем нейронкой про нейронки - Заряжаем воду через монитор Оригинал (заголовок, и, возможно, немного реального текста статьи): ``` {{selection}} ``` Честный заголовок:После этого заходим на ЛЮБОЙ сайт, выделяем текст заголовка (для генерации только заголовка) или заголовка + содержимого для генерации заголовка + краткого содержания, и нажимаем на наш инструмент в всплывающей панели chatGPTBox.
Например

UPD: Из моделек - протестировал Sonnet 4.5, Sonnet 4.5 Thinking, Gemini 3 Pro.
Дефолтовый Sonnet 4.5 имхо лучше всех - быстро, относительно аккуратно.
Sonnet 4.5 Thinking - более точное описание, но чуть менее ярко и в целом медленнее (из-за времени на размышления)
Gemini 3 Pro - неплох, но в русской стилистике имхо хуже.

janvarev
28.12.2025 09:22Не могу перестать юзать это по всему интернету, хочу поделиться (все сгенерено ваншотом):
----
https://dtf.ru/games/4568773-razdacha-rpg-skald-against-the-black-priory-v-egs
Epic снова раздаёт игры, о которых вы не слышали, чтобы вы наконец поставили их launcher
Epic Games Store продолжает традицию: дарят инди-RPG с графикой из 90-х, чтобы хоть кто-то открыл их магазин. Игра про Лавкрафта с пиксельной графикой, пошаговыми боями и готовкой по рецептам — всё как мы любим вспоминать, но не играть. Забирайте до 29 декабря, добавляйте в библиотеку на 300+ непройденных игр и идите дальше.
----
https://ria.ru/20251228/dorozhki-2065190601.html
Wildberries отчитался о продажах вешалок для одежды на январь
Россияне массово скупают беговые дорожки, чтобы с 1 января начать новую жизнь (спойлер: не начнут). Продажи выросли в 8 раз в последнюю неделю года — ровно столько же беговых дорожек к февралю превратятся в самые дорогие сушилки для белья в истории. Wildberries радостно рапортует о тысячах проданных тренажеров, прекрасно зная, что через месяц все эти степперы и эллипсы будут пылиться в углу рядом с прошлогодними обещаниями себе.

janvarev
28.12.2025 09:22Нашел легкий(?) баг - по кнопке "Продолжить прокрастинацию" могу докрутить только до 27.12, дальше кнопка не работает (а жаааааль....)
Например, ваш пример из статьи на 24.12 уже недоступен.
LeXaNe
28.12.2025 09:227 раз только прокрастинирует, до 27.12 даже не доходит. Хотел докрутить до своей статьи

Apokalepsis
28.12.2025 09:22Кайф. Сделайте возможность или найти статью или скормить, очень интересно выборочно посмотреть как он преобразует.

neodavinchi
28.12.2025 09:22
Крошка AI против Хабра В эту игру можно играть в обе стороны ¯\_(ツ)_/¯

achekalin
28.12.2025 09:22Это часть PR-акции ) шутка.
На самом деле, корова не моя, но автору было честнее не фильтровать свой пост из вывода.

kirillkosolapov Автор
28.12.2025 09:22Так я и не фильтровал. Выше скрин того, как эта статья отобразилась в ленте.

Flammmable
28.12.2025 09:22Понятно, что это пошутейка, но в статье "Если у вас нет проблем со сном, вот вам 15 страниц про SPI на TMS320C28xx" (оригинал называется Особенности работы с микроконтроллерами TMS320С28xx) протокол SPI упоминается лишь раз. И сама статья не то, чтобы очень длинная.



ky0
Отлично!