Комментарии 16
Ничего не понятно, но очень интересно :)
вопрос имени Дудя, - "сколько ты зарабатываешь" (ну и во сколько это обходится)
Я пока пробую простым советским opencode что-то настроить, по плану - на каждый этап, свой проект (один проект - генерация текста по ТЗ (скилл копирайтинг, пока не нашел толковый, ну пусть по ТЗ работает), второй проект - хуманизация (хоть в промте и стараются это учесть) - есть скил для хуманизации, третий проект - конвертнуть в csv и разместить на сайте)
переводы пробовал локально сделать, спарсив статьи с одного зарубежного сайта (там тоже были свои приколы, парсинг из выдачи гугла), перевод через translate-gema локально, на видеокарте (около 1000 статей, 5060ти, работала часов 16 или больше), но проблема в том, что переводился хтмл, хоть гему и просили не переводить теги - все равно переводила. Ну и качество самого источника - не ахти (а вычищать его руками - муторно)
С точки зрения новостного контента- да, в принципе так и работают редакции - смотрят источники, переводят и фигачат свои материалы (хобот уже давно не торт)
У меня в планах отбирать, например, (не, 100500 статей у меня нет), пусть в неделю 50 статей, из них отбирать топ 10 и переводить - у меня не новостные, а по возможности "вечно-зеленые"
и тут как будто просто - бери буржуйские сайты и переводи целиком. Но на каждый сайт пока настроишь парсинг, да и то, что опубликовано "там", не факт, что интересно тут
Заканчивая мысль в стиле нейронок - автоматизация это не только ценных мех, а еще 3-4 килограмма высокоусвояемого диетического мяса"
Попробую ответить по порядку:
Я описал чем пользуюсь - Это был Курсор за 20 долларов. И Клод код так же 20 долларов. Раньше я пользовался только Курсором. Но буквально 3 месяца назад еще раз вернулся к Клоду и вот он реально делает красоту.
По поводу opencode - я так же его начал использовать но к нему я подключил свою кодинг подписку от MiniMax, она очень неплохо таки работает и так же отлично кодит.
Бесплатные модели пробовал для кондинга, мне не очень понравились.
А вот для обработки текста самое то - у меня тут используется свой Стэк: Мини Пк - CHUWI AuBox Ai365 на процессоре AMD Ryzen AI 9 365 и 32 гига оперативы. Локальная LLM Qwen 3.5 - она не плохо работает на нем - примерно 9 токенов в секунду.
Но вот сейчас вышла к стати Gemma4 от Гугл и она рвет всех в своем классе по скорости. Я ее параллельно подключил к llama.cpp - она мне вечернюю свод прогоняет, думаю позже заменю на нее.
По поводу копирайтинга и хуманизации - не ищи готовый создай свой. Их я создал совместно с Перплексити и Клодом - отлично получилось и смог выйти на 92% яеловечности) а что я по сути сделал, скормил перплексити свои тексты и переписки и попросил выдернуть все паттерны а дальше попросил его подготовить промпт для Клода чтобы он сделал эти скилы один назвали alexey-editor а второй ru-humanizer. Отлично справляются и проходит многие проверки.
По поводу отбора статей(новостей). -- у меня система отбирает да примерно 100-200 в день, но дальше идет фильтрация которая проставляет рейтинг новости, дедупликация которая отсекает дубли, так же отсекаются битые новости, очень короткие менее 300 знаков уходят в мусор. Итого по подсчетам примерно 18% новостей из данного пула доходят до Менеджера а тот в свою очередь отправляет в данный момент всего 10 топовых новостей в сутки. Я еще пока играюсь с количеством.
И вот локальная LLM Qwen 3.5 - достаточно шустро справляется с этими задачами.
Причем скрйапер у меня тянет весь текст новости после всех отборов и фильтраций. А там порой портянки на несколько страниц.
По поводу настройки парсинга на каждый сайт проблем не было вообще - поставь jina я описал это в статье. Прекрасно парсит и все бесплатно - мне к стати нейронка сама предложила это сделать.
Я полностью согласен с тем что еще и нужно все нормально подготовить и оформить, я еще дорабатываю канал. И добавляю новые фичи и аналитику плюс автоматизацию вплоть до исправления в авторежиме любых косяков.
Я в статье хотел донести то что сейчас по сути создать автоматизацию может почти каждый и тут не нужно гигантских знаний. И вложения минимальные.
Я на работе себе создаю различные автоматизации и crm системы которые мне помогают и все это без знания программирования.
А так же вот на днях я собрал себе сайт https://kravtsovlab.space/ - статьи там публикуются прями из Obsidian - все сделал за 2 часа и все в автоматическом режиме.
Пока там 2 статьи - буду расширять базу знаний. И в ближайшее время выпущу еще статью как я создал такой сайт.
у меня похожая система только собрал в н8н, разбил на этапы по статусам, их штук 20, чтобы если где-то сломалось вся работа не полетела, но собирать со 160 источников это конечно сильно
я просто по ключам ищу свежую информацию в интернете а потом ее фильтрую, если релевантная то пишу пост
Ну вот я так делал в начале - тогда у меня было порядка 40 источников и все были rss и все долго обрабатывалось и были постоянные ретраи, реально кучу автоматизаций сделал, а потом после очередного Бага решил попробовать по другому. Спокойно добавили новости с Видео роликами.
Сейчас к стати прихожу к тому что нужно писать посты, делать более живой канал а не просто новостная лента.
А расскажите подробнее про ai_filter?
ai_filter — воркер после сбора новостей и удаления дублей, перед переводом. Берёт свежие новости, прогоняет через LLM и ставит оценку от 0 до 100 плюс короткое объяснение. На выходе три корзины: идём дальше в публикацию, откладываем как слабые или помечаем «ошибка модели».
Пороги не в коде, а в таблице настроек — меняю без перезапуска. Сейчас порог публикации 75 в будни, на выходных выше: там поток мусорнее. Всё, что ниже 70 — молча в сторону. В промпте модели явно прописано: фандинг, иски, увольнения — это не AI-новости, ставь 20-40, даже если компания AI-шная. Фильтр режет около 81% того, что собрал коллектор.
Главная оптимизация — отсев по длине текста до вызова LLM:
body = strip_all_html(r.get(“full_text”) or r.get(“content”) or “”).strip() if len(body) < 300: # сразу в сторону, LLM не зовём continue
Это платные статьи и RSS-заглушки на 150 символов. Без этого платил бы токенами за то, чтобы модель прочитала пустоту. Экономит 30+ вызовов в день.
LLM получает пачку по 5 штук: id, заголовок и обрезанный до 500 символов текст. Ответ — JSON. Парсер с подстраховкой: сначала стандартный разбор, потом поиск по скобкам — локальные модели любят навалить лишнего вокруг ответа.
Что не идеально: — Один поставщик LLM = одна точка отказа. Ретрай один раз через 20 секунд. — Пороги 70/75/80 подобрал на глаз. Собираю просмотры и реакции, но обратная связь на пороги ещё не замкнута. — Ложные срабатывания живут. Интересная научная статья может получить 65 и уйти мимо.
Следующий шаг — завязать порог на реакции и просмотры, чтобы он сам подтягивался под то, что заходит аудитории. Пока руками.
Спасибо за развернутое описание системы, было интересно почитать, классная статья получилась
А как быть в таких ситуациях
в Opencode (моделька минимакс, но проблема общая)
даю задачу, бери контент-план и пиши 100 статей
Первые (может 10 или побольше) пишет нормально, потом качество падает. Видимо "окно контекста" просто кончается. Но, казалось бы, каждая статья это новый контекст - но нет, нейронка почему-то и отработанные статьи тоже держит в памяти
Как сделать, чтоб нейронка просто брала задачу на редактирование, помнила только саму задачу и не держала в памяти все обработанные статьи ?
Да, ты описал классический случай. Коротко — у тебя три вещи смешались:
Opencode — это интерактивная сессия с накапливающимся контекстом. Что бы ты ни просил внутри одного чата — все предыдущие запросы и ответы остаются в окне. Попросил 10 статей — модель тащит за собой черновики предыдущих
На 30-й статье это уже неподъёмная простыня, качество падает, модель начинает путаться.
Решение не в «очистке памяти», а в правильной архитектуре. Batch-генерация 100 статей — это не задача для интерактивного чата. Это работа скрипта, который дёргает API модели по одной статье за раз. Каждый вызов — изолированный: только system prompt + одна статья. Никакого накопления.
Псевдокод (для MiniMax, OpenAI и любой другой):
for article in articles_to_edit: messages = [ {“role”: “system”, “content”: SYSTEM_PROMPT}, {“role”: “user”, “content”: article.raw_text} ] response = llm.chat(messages=messages, max_tokens=2000) save(article.id, response)
Никакого messages.append() между итерациями. Каждая статья — свой контекст, чистый как в первый раз.
У нас в news-pipeline именно так и сделано. 160 источников × 15 минут = сотни API-вызовов в день. Каждая новость проходит через 3 раздельных воркера (ai_filter, translator, llm_editor), и каждый из них делает отдельный stateless POST-запрос к MiniMax. Модель никогда не видит соседние новости — в окне контекста всегда только системный промпт + тело конкретной новости. Поэтому на 1000-й статье качество такое же, как на 1-й.
Что делать тебе на практике:
Вынести обработку из Opencode в отдельный Python-скрипт.
Использовать API напрямую (у MiniMax — POST https://api.minimax.io/v1/chat/completions).
Для каждой статьи — новый массив messages с нуля.
Если нужно сохранять результаты — в JSON/БД/файл.
Opencode хорош для интерактивной работы (обсудить идею, разобрать одну статью). Но для конвейера из 100 — это инструмент не той задачи.
Ну и по сути я все это естественно делал не сам: а просто написал тому же Клоду что я хочу получить на выходе а как это сделать, клод сам знает.
По факту у тебя уже все описано в opencode, теперь тебе нужно попросить его это все вынести в скрипт который автоматически прогоняет каждую новость через промпт и сохраняет допустим в БД.
Для апи моделей, это надо ее либо покупать, либо локально разворачивать
я кстати пробовал подобное, Олламу запускал как сервер (на ней Gemma translate 12b), потом по одной закидывал питон-скриптом по циклу
А сейчас с текстами не очень понятно, для 16гб видеопамяти
Еще прикол, полез на опенроутер, там сейчас бесплатная модель есть "Google: Gemma 4 26B A4B (free)"
Подключил в opencode, подредактировала 7 статей и все сказала, токены кончились (типа, твоя задача стоит 32к токенов, а у меня 26к, ну типа того)
И на балансе у openroute появилось -16 центов. И это бесплатная модель.. :)
Для перевода достаточно локальной модели qwen 3.5 или gemma 4. - они небольшие и достаточно хорошо перегоняют текст. А вот редактуру я делаю в Minimax, и да она платная, это подписка Код план. Я на ней кучу проектов гоняю и агентов различных.
Ну а вообще если памяти достаточно можно и редактуру делать на локальной модели. У вас Видеокарта есть и с ней все должно летать.
Причем gemma 4 и Minimax это думающие модели и там нужно правильно работать с thinking, иначе обработка одной новости будет занимать много времени а при обработке пачки новостей все будет падать в таймаут.
Спасибо, да, действительно, написать 100 статей за раз - это очень тяжело нейронкам (окно контекста становится здоровым)
и удобнее питон-скриптом, который каждую статью посылает в олламу
но как быть, если я хочу применить навык, например хуманайзер. Это работает внутри опенкод, курсора. В целом то опенкод и курсор не отказываются, но для гарантии я просил пачками по 10 статей проверять
Но если статей 1000, устанешь же. Как тут правильней делать? У олламы то нет навыка
(спрошу, может сама нейронка подскажет) :)
Хороший вопрос, у меня та же история была.
Главный инсайт: навык — это всего лишь markdown-файл с промптом. Никакой магии. Открой SKILL.md от хуманайзера, скопируй текст промпта, и засунь его в свой Python-скрипт как system message при вызове Ollama. Всё, навык работает без курсора.
У меня в пайплайне новостей оно так и крутится. Voice Guardian — это просто Python-функция в publisher.py:
RU_HUMANIZER_PROMPT = “”“<содержимое SKILL.md>”“” ALEXEY_EDITOR_PROMPT = “”“<содержимое моего редакторского SKILL.md>”“”
async def humanize(draft): # шаг 1: убираем AI-паттерны step1 = await call_llm(system=RU_HUMANIZER_PROMPT, user=draft) # шаг 2: накладываем мой голос step2 = await call_llm(system=ALEXEY_EDITOR_PROMPT, user=step1) return step2
Каждый пост проходит два прохода через LLM: сначала хуманайзер вычищает «гладкость», потом редактор накладывает стиль. Те же два навыка, что у меня в Claude Code — но запускаются скриптом без курсора.
Для тысячи статей я бы сделал так:
Промпт из .md копируешь в константу в скрипте.
Цикл по статьям — каждую отдельно шлёшь в Ollama с этим промптом как system, текст статьи как user.
Fallback на случай если Qwen затупит: если ответ короткий или странный — отправляешь повторно или переключаешься на платный API (MiniMax, например, у меня бесплатный тариф 4500 запросов в 5 часов — на 1000 статей хватит с запасом).
Если оллама не вывозит навык — это обычно значит, что модель слабовата под задачу. У меня Qwen 3.5 9B справляется с переводом, но хуманайзер уже на пределе — поэтому основной режим у меня MiniMax (бесплатный), а Qwen как резерв.
Идеального «навыка для оллама» делать не надо. Skill = промпт + модель достаточного размера. Подбираешь промпт + модель — и пакетный скрипт работает не хуже курсора, только без устающих рук.
Спасибо, в итоге так и сделал
Попросил у опенкод создать еще 2 скрипта, один для стилизации, второй для хуманизации
Правда я сначала делаю стилизацию, а потом хуманизацию
По одной статье в формате md и отправляется в Олламу (иногда Оллама чудит, надо проверять. Пишет не то, пишет не так, пустые файлы), модель gemma4:e4b
В планах создать длинный пайплайн, чтобы эту братию (из нескольких скриптов) просто оставлять на ночь (или день, уходя на работу) - но надо дописывать везде контрольные точки, проверки
Шутка про "погонщик агентов" уже не шутка :)
правда у меня нет разных агентов, но есть разные скрипты

Как я собрал автономную AI-новостную систему за полтора месяца