Смена целенаправленности: не реклама/аналитика метрик, а производство контента (текст, изображение, подкаст, видео) + анализ его метрик + SEO. - Новый центральный объект content_items (kind, status-конвейер brief→generated→optimized→published→measured, site, deal_id) - areas: text, image, podcast, video, seo_onpage, seo_semantics, publish - metric_kind: reach, engagement, position, traffic, conversion, revenue, speed, quality - источники метрик: Метрика API, GSC, Yandex Webmaster, Wordstat (+platform/manual/client) - skills привязаны к реальному стеку: editor-pro, ComfyUI, Silero TTS, video-pipeline, Wordstat, Astro (retrieval по bge-m3) - автономия по заслугам: тир на область, +1 за 3 успеха, -1 за провал - конвейер производства добавлен как сквозной процесс - TODO переписан: 8 шагов (0-7) с критериями приёмки
15 KiB
spark-mind — DESIGN: автономный контент-продюсер с заземлением
Обновление плана от 2026-09-23 (вторая редакция: фокус смещён с рекламы/метрик на производство контента + анализ его метрик + SEO).
1. Тезис
iLands строит общество на 80 000 агентов, чтобы получить «судью без автора». Нам толпа не нужна: у нас есть мир, который отвечает сам — поисковики и аудитория. Агент производит контент (текст, изображение, подкаст, видео), публикует, и через заданный горизонт замеряет, что сработало: показы, позиции, CTR, дочитывания, прослушивания, переходы, конверсии.
Два принципа, которых нет у iLands в рабочем виде:
- Заземление. Качество контента оценивается не рассуждением агента, а метриками, которые он не контролирует, с отложенным вердиктом.
- Автономия по заслугам. Права выдаются по подтверждённому трек-рекорду:
доказал, что контент улучшает метрики — получил свободу публиковать
без спроса и выбирать темы сам. Провал — права сужаются.
Границы persona
valuesнепреодолимы на любом уровне.
Что это даёт на практике: агент не «генерирует текст вообще», а учится, какой заголовок, структура и формат работают — на своих же сайтах (orabota.ru, нейросети.рус, bzp02.ru и др.) и на заказах клиентов.
2. Три контура + конвейер
КОНВЕЙЕР ПРОИЗВОДСТВА brief → generated → optimized → published → measured
content_items — центральный объект, на нём замеряются метрики
A. КОНТУР ЗАКАЗОВ «для кого и за что» counterparties → deals
B. КОНТУР ЗАЗЕМЛЕНИЯ «что сработало» outcomes → capabilities → ledger
C. КОНТУР МЕТОДОВ «как производить» skills + reflection
Плюс сквозные: noAction (P5) и тонкий Channel (бывший P7).
3. Модель данных (SQLite, тот же файл БД)
2.1 Конвейер: content_items — центральный объект
CREATE TABLE content_items (
id TEXT PRIMARY KEY,
kind TEXT NOT NULL CHECK(kind IN ('text','image','podcast','video')),
title TEXT NOT NULL,
topic TEXT,
status TEXT NOT NULL DEFAULT 'brief'
CHECK(status IN ('brief','generated','optimized','published',
'measured','archived')),
target_url TEXT, -- где опубликован
site TEXT, -- orabota.ru | нейросети.рус | ...
deal_id TEXT REFERENCES deals(id), -- nullable: для своих сайтов
published_at INTEGER,
created_at INTEGER NOT NULL
);
Конвейер — это переходы status. Каждый переход пишется в deal_events-подобный
журнал, если привязан к сделке.
A. Контур заказов
CREATE TABLE counterparties (
id TEXT PRIMARY KEY,
kind TEXT NOT NULL CHECK(kind IN ('client','platform','external')),
name TEXT NOT NULL,
notes TEXT,
trust_score REAL NOT NULL DEFAULT 0, -- derived из истории
created_at INTEGER NOT NULL
);
CREATE TABLE deals (
id TEXT PRIMARY KEY,
counterparty_id TEXT NOT NULL REFERENCES counterparties(id),
brief TEXT NOT NULL, -- что заказали (тема/формат/объём)
price REAL,
currency TEXT DEFAULT 'RUB',
status TEXT NOT NULL CHECK(status IN
('offered','accepted','delivered','paid','refused','defaulted')),
created_at INTEGER NOT NULL,
closed_at INTEGER
);
CREATE TABLE deal_events (
id TEXT PRIMARY KEY,
deal_id TEXT NOT NULL REFERENCES deals(id),
type TEXT NOT NULL,
payload_json TEXT,
created_at INTEGER NOT NULL
);
B. Контур заземления
-- Один outcome = один content_item + одно измерение метрики.
CREATE TABLE outcomes (
id TEXT PRIMARY KEY,
item_id TEXT REFERENCES content_items(id), -- что мерим
deal_id TEXT REFERENCES deals(id),
area TEXT NOT NULL, -- text|image|podcast|video|seo_onpage|seo_semantics|publish
metric_kind TEXT NOT NULL CHECK(metric_kind IN
('reach','engagement','position','traffic',
'conversion','revenue','speed','quality')),
metric_name TEXT NOT NULL, -- 'impressions','ctr','avg_position','dwell_sec',
-- 'listens','completion_rate','indexing_hours','clicks'
unit TEXT, -- 'шт','%','сек','место','руб','ч'
direction TEXT NOT NULL CHECK(direction IN ('up_good','down_good')),
value_before REAL, -- null для нового контента
value_after REAL,
source TEXT NOT NULL CHECK(source IN
('metrika','gsc','webmaster','wordstat','platform','manual','client')),
horizon_days INTEGER NOT NULL,
due_at INTEGER NOT NULL,
status TEXT NOT NULL DEFAULT 'pending'
CHECK(status IN ('pending','measured','missed','unavailable')),
measured_at INTEGER,
score REAL -- нормализованный вердикт [-1..+1]
);
-- Автономия по заслугам: тир НА ОБЛАСТЬ, не общий.
CREATE TABLE capabilities (
area TEXT PRIMARY KEY,
tier INTEGER NOT NULL DEFAULT 0 CHECK(tier BETWEEN 0 AND 4),
positive_outcomes INTEGER NOT NULL DEFAULT 0,
negative_outcomes INTEGER NOT NULL DEFAULT 0,
updated_at INTEGER NOT NULL
);
CREATE TABLE ledger (
id TEXT PRIMARY KEY,
ts INTEGER NOT NULL,
delta REAL NOT NULL,
reason TEXT NOT NULL,
balance_after REAL NOT NULL
);
C. Контур методов
CREATE TABLE skills (
id TEXT PRIMARY KEY,
name TEXT NOT NULL, -- 'podcast-silero','image-comfyui','seo-onpage-editor'
area TEXT NOT NULL, -- привязка к capabilities.area
method_md TEXT NOT NULL, -- как делать (промпт/алгоритм/порядок шагов)
tool TEXT, -- реальный инструмент: ace-step|silero|comfyui|editor-pro|astro|wordstat
source TEXT NOT NULL CHECK(source IN ('builtin','learned')),
validated INTEGER NOT NULL DEFAULT 0,
uses INTEGER NOT NULL DEFAULT 0,
success_rate REAL,
embedding BLOB -- bge-m3, dim=1024 — retrieval под задачу
);
4. Правила
4.1 Области (area) и типы метрик
| area | Что производит/делает | Типовые метрики |
|---|---|---|
text |
статьи, лонгриды, описания | показы, CTR, дочитывания, позиции |
image |
изображения, обложки, карточки | показы, CTR, скачивания |
podcast |
аудио, подкасты (Silero TTS) | прослушивания, completion rate, дослушивания |
video |
видео, шортсы | просмотры, watch time, удержание |
seo_onpage |
заголовки, структура, разметка | позиции, CTR, индексация |
seo_semantics |
семантика, кластеры, запросы | охват запросов, релевантность |
publish |
публикация, распространение | скорость публикации, индексация |
4.2 Нормализация метрики в score
raw = (value_after - value_before) / max(|value_before|, eps)
score = clamp(raw * (direction == 'up_good' ? 1 : -1), -1, 1)
- Нет
value_before(новый контент) → сравнение с базлином области (медиана последних 10 measured в этойarea). quality— дискретно:+1 / 0 / −1(эксперт/клиент/человек).speed—direction = 'down_good'(быстрее индексация = лучше).status != 'measured'→ score не участвует в трек-рекорде.
4.3 Автономия по заслугам
| tier | Имя | Что разрешено |
|---|---|---|
| 0 | observer | только анализ и предложения, публикаций нет |
| 1 | suggest | предлагает готовый контент человеку, сам не публикует |
| 2 | ask | публикует после подтверждения |
| 3 | act+report | публикует и отчитывается; человек может откатить |
| 4 | autonomous | публикует и выбирает темы сам, в границах persona |
Переходы:
+1 тирза 3 нетто-положительных outcome в области.−1 тирза 1 нетто-отрицательный — асимметрия: падать легче.- Затухание: outcome старше 90 дней весит 0.5.
- Новая область стартует с tier 0.
- Границы persona
valuesнепреодолимы на любом тире.
4.4 Энергия
- Расход: тик, генерация (текст/фото/аудио/видео — дороже всего), публикация, вызов саб-агента.
- Приход: подтверждённые положительные outcomes (особенно
revenue), плюс донат человека. - Низкий баланс → интервал тиков растёт → Deep Rest.
- Отличие от iLands: энергия восполняется результатом, а не покупкой.
5. Триггеры heartbeat (добавляются)
| Триггер | Что делает |
|---|---|
{type:'pipeline'} |
продвинуть content_items по конвейеру (draft→generated→optimized→published) |
{type:'measure'} |
наступил due_at → тянет метрику из источника → value_after, score |
{type:'reflection'} |
ночной цикл: обобщает items + outcomes + thoughts → long-term и self_observations |
{type:'task'} |
cron-планировщик (нужен для measure/reflection) |
Плюс decision.noAction: true (P5).
Источники метрик: Метрика API, Google Search Console, Yandex Webmaster API,
Wordstat — у всех доступ уже настроен. Плюс platform (прослушивания/просмотры)
и manual/client.
6. Тонкий Channel (бывший P7)
interface Channel { send(text: string): Promise<void>; }
Реализации: ConsoleChannel, TelegramChannel, FileChannel.
LLMClient уже есть. Полный harness-реестр отложен — абстракция окупается
с ≥2 реализациями.
7. Методы (skills) — привязка к реальному стеку
| area | tool | Что уже есть |
|---|---|---|
| text | editor-pro | 7-layer markdown pipeline (типографика, SEO-слой) |
| image | comfyui | генерация изображений через diffusion-воркфлоу |
| podcast | silero | Silero TTS 24kHz, пайплайн через normalizar/tts |
| video | video-pipeline | загрузка/обработка видео |
| seo_onpage | editor-pro, astro | структура, заголовки, schema |
| seo_semantics | wordstat | Wordstat API: частотность, кластеры |
| publish | astro + deploy | сборка Astro → публикация |
Это ключевое: скиллы агента = твой существующий производственный стек, а не абстрактные описания. Retrieval по bge-m3 подгружает нужный метод под задачу.
8. Порядок внедрения
| Шаг | Что | Критерий приёмки |
|---|---|---|
| 0 | P5 noAction + тонкий Channel |
агент умеет не действовать; вывод через интерфейс |
| 1 | Планировщик (task/pipeline/measure) |
задача с датой выполняется в срок |
| 2 | content_items + конвейер |
item проходит brief→published, переходы в журнале |
| 3 | outcomes + measure (Метрика/GSC/Webmaster/Wordstat) |
метрика замеряется через horizon, score пишется |
| 4 | capabilities — автономия по областям |
тир растёт после 3 успехов, падает после провала |
| 5 | skills + retrieval + reflection |
нужный метод подгружается по задаче; self_observations оживают |
| 6 | deals + counterparties |
заказ клиента проходит offered→paid |
| 7 | ledger — энергия |
результат пополняет энергию, дефицит замедляет тики |
Зависимости: 3 требует 1 и 2. 4 требует 3. 5 требует 2. 7 требует 3.
9. Что НЕ делаем
- Рекламные метрики (Директ/CPA) как основу — ушло из фокуса.
- Соцсеть/ленту/подписки внутри агента.
- Токены как валюту.
- Полный harness-реестр.
- «Суперразум из общества».
10. Открытые вопросы
- Свои сайты или клиентские заказы в первую очередь? (влияет на приоритет шага 2 vs 6; предлагаю сначала свои сайты — полный контроль над метриками).
- Кто ставит
horizon_days— агент предлагает, человек правит? (Мой дефолт.) - Где предел «качества» текста — только метрики или ещё экспертная оценка Ника обязательна перед публикацией на tier<3.