Skip to content

Latest commit

 

History

History
93 lines (56 loc) · 16.9 KB

File metadata and controls

93 lines (56 loc) · 16.9 KB

Проект 8 — Data-Storytelling Shorts & Reels Engine

Статус: ✅ Одобрен за разработка — преместен в собствен Cowork проект (04.09.2026 г.)

Този проект е "прескочил" от общия каталог MASTER_BUSINESS_BLUEPRINT_2026 в самостоятелна работна папка, защото потребителят реши да го разработва отделно, в собствен Cowork проект с това име. Оттук нататък цялата работа по него (документи, скриптове, активи, изходни видеа) живее само тук — не се смесва с общия business-ideas каталог.

Концепция

Автоматизиран, безличен (faceless) канал за кратки видеа (YouTube Shorts / TikTok / Reels) на име Proof in Numbers (виж брандинг секцията по-долу), който всеки ден взима една статистика от надежден отворен източник на данни (World Bank, Eurostat, FRED, Our World in Data), превръща я в кратък, ЛИЧНО-релевантен разказ (30-60 сек), генерира точна графика на база реалните числа, озвучава я с AI глас и публикува кратко видео. Висок watch-time чрез данни — но темата винаги е преведена на конкретен, личен език (пари в джоба, часове от седмицата, години от живота), а не икономически жаргон — виж "Ниша, брандинг и mass-appeal filter" по-долу.

Ниша, брандинг и mass-appeal filter (решено на 2026-09-04)

Име на канала: Proof in Numbers.

Първоначалната идея беше канал, центриран около World Bank/макроикономика. Потребителят изрично отхвърли това като твърде нишово: "много малко хора се интересуват от световната банка и икономика... трябва да е нещо по-масово" — разбираемо, интересно, увлекателно и полезно за обикновения зрител. Решението не е смяна на данните (те си остават World Bank/Eurostat/FRED/OWID — безплатни, точни, проверими), а смяна на РАМКАТА, през която се разказват.

Два стълба съдържание, споделящи един и същ технически pipeline (fetch → script → chart → глас → монтаж), само с разширен пул от теми и различен промпт тон:

  1. "Money in Your Life" — заплати, наем, цени, данъци, здравеопазване, пенсия. Данни: World Bank Open Data (GDP per capita, инфлация, данъчна тежест, безработица, публичен дълг, здравни разходи от джоба).
  2. "Your Life by the Numbers" — сън*, щастие, работни часове, продължителност на живота. Данни: World Bank (продължителност на живота) + Our World in Data (щастие/удовлетвореност от живота по World Happiness Report, работни часове годишно).

*Забележка: OWID няма готов безплатен CSV датасет за сън към 04.09.2026 — темата за сън остава в списъка за бъдещо разширение, щом се намери надежден безплатен източник; засега стълб 2 разчита на продължителност на живота, щастие и работни часове.

Mass-appeal filter (ЗАДЪЛЖИТЕЛНО правило за всеки скрипт)

Всяка статистика се превежда на лично, осезаемо ниво, НИКОГА не остава икономически жаргон (БВП, per capita, инфлационен индекс, Gini коефициент, "% от БВП"). Тест за всяка тема: "би ли го разбрал за 3 секунди човек без никакъв интерес към икономика?" Ако не — статистиката се преформулира или отпада в полза на друг кандидат от същия ден.

Примери за правилна рамка: "Колко часа трябва да работиш, за да си купиш iPhone тук срещу там", "Колко доволни от живота си казват хората тук, по 10-степенна скала, срещу съседната държава", "С колко по-малко часа седмично работят хората в X, отколкото в Y" — вместо "БВП на глава от населението в X е Y" или "Индексът на Джини показва...".

Това правило е вградено технически в scripts/generate_script.py: промптът към Gemini изисква превод на всяка суровина в лични термини, плюс детерминистична проверка (BANNED_JARGON списък), която прихваща жаргон, ако преводът не е станал — видеото се преработва веднъж, а ако пак не мине проверката, workflow-ът гръмва вместо да публикува нещо извън бранда.

Всяко видео показва малък надпис "Source: [World Bank / Our World in Data], [година]" на графиката (виж render_chart.py) — това е видимата разлика спрямо generic AI "fact" канали, които не показват (или не могат да покажат) откъде идват числата им.

Отхвърлени алтернативи (04.09.2026)

  • Пълна смяна на нишата към History What-If, Skeleton/3D Body Science или AI ASMR — отхвърлено, защото изисква съвсем нов production pipeline (3D модели, архивни снимки, ASMR аудио), несъвместим с вече написания data→chart→глас код.
  • Чисто-икономическа/World Bank рамка без личен превод — отхвърлено като твърде нишово за масова аудитория (виж по-горе).

Монетизация

YouTube Shorts / TikTok Creator Fund рекламен приход + евентуален афилиейт/спонсорство след натрупване на аудитория. Изисква канала да достигне прага за монетизация на YouTube (500 абонати + 3 млн. гледания на Shorts за последните 90 дни), преди да започне реален приход — виж пълния бюджетен документ за реалистични диапазони по месеци.

Ключово предимство / защо сега

Преизползваме вече доказана и работеща техническа инфраструктура (Lumaris pipeline: GitHub Actions + Gemini API + ffmpeg, repo statevpp/dream-astro), вместо да строим нова автоматизация от нулата — това драстично намалява времето за пускане (7 дни) и месечния разход (под 10 лв/мес, без нито един фиксиран абонамент). AI моделите за генериране на говор и текст вече са достатъчно добри и евтини, за да направят целия production process почти напълно автоматизиран.

Технологичен стек

  • Данни: World Bank Open Data API, Eurostat API, FRED, Our World in Data (всички безплатни)
  • Скрипт: Gemini API (текстова генерация)
  • Графика: Python + matplotlib (точни данни, не AI-генерирани "халюцинирани" числа)
  • Глас: Gemini TTS (gemini-2.5-flash-preview-tts, same модел като в Lumaris)
  • Монтаж: ffmpeg (адаптиран assemble-youtube-video.sh от Lumaris)
  • Оркестрация: GitHub Actions (cron, безплатен за публично repo)
  • Публикуване: YouTube Data API v3 (частно качване → ръчно "Публично" до одобрение на compliance audit)

Документи в тази папка

  • 01_7-дневен план и бюджет.md — пълен ден-по-ден план за пускане, първоначална инвестиция, месечни разходи и очаквани приходи за 3/6/12 месеца.
  • scripts/ — за бъдещия код на pipeline-а (data fetch, script generation, chart rendering, TTS, ffmpeg assembly, GitHub Actions workflow).
  • assets/ — за брандинг материали (лого, шрифтове, цветова палитра, темплейти за графики).
  • output/ — за генерирани пилотни видеа/графики/аудио за преглед преди качване.

Следващи стъпки

Ниша/тон/брандинг вече са избрани (виж "Ниша, брандинг и mass-appeal filter" по-горе), а scripts/generate_script.py и scripts/fetch_stat.py вече прилагат двата стълба и mass-appeal филтъра. Остава:

  • Проверка на целия код за грешки (fetch_stat.py, generate_script.py, render_chart.py, generate_voice.py, assemble_video.sh, upload_youtube.py) преди първо реално пускане.
  • Създаване на GitHub repo и качване на кода (виж SETUP.md за еднократните стъпки: Gemini API ключ, YouTube OAuth, audit заявка).
  • Първи тестов run през GitHub Actions ("Run workflow") и преглед на резултата, преди да се остави да тръгне по автоматичния дневен график.

✅ 2026-09-27 — ESTA.QUEST integration: 4 отделни content pillars (замества 2×2 матрицата)

Пепи зададе нова content стратегия: каналът остава глобален viral Shorts канал (views + growth като приоритет №1), но от 4-те дневни видеа, 2 постепенно изграждат авторитет в real estate/data пространството, водещо трафик към бъдещия ESTA.QUEST продукт — БЕЗ да превръща канала в real-estate канал и БЕЗ явна реклама във видеата.

Технически резултат (implemented, локално тествано с реални live API извиквания, чака push потвърждение — виж "Отворени въпроси" по-долу):

Старата 2-pillar × 2-slot матрица (money/life, всеки с slot 1/slot 2, за да не се повтори държавата в същия pillar същия ден) е заменена с 4 отделни pillar-а, по едно видео всеки — SLOT механизмът отпада изцяло (вече няма риск от колизия, защото всеки pillar се среща веднъж на ден):

  1. global_viral (бивш money) — пари, бизнес, икономика, tech/наука, изненадващи статистики. World Bank Open Data, разширен с 2 нови индикатора (интернет потребители %, R&D разходи % от БВП) за повече "tech/science" вариативност.
  2. global_data_story (бивш life) — продължителност на живота, щастие, работни часове. World Bank + Our World in Data, непроменен.
  3. real_estate_global (НОВ) — цени на имоти произволна държава (НЕ България). Източник: Eurostat House Price Index (prc_hpi_a, officially published, безплатен, без ключ API — потвърден жив на 2026-09-27), ~30 държави (EU/EEA/UK/Türkiye — реално ограничение на безплатните официални източници, US/Азия не са покрити).
  4. real_estate_sofia (НОВ) — винаги България (националният официален HPI, честно представен в narration-а като национален индекс, не Sofia-специфичен — няма безплатен официален Sofia district-level API). Единственото място, където ESTA.QUEST може да се появи — САМО като едно кратко, незадължително изречение в YouTube описанието (никога в hook/title/narration), и само ако звучи естествено за конкретния ден (Gemini промптът позволява да го пропусне, ако би звучало като реклама).

Важно за точност: pct_change полето използва САМО index-level величини (2015=100, TOTAL/DW_NEW/DW_EXST — трите "purchase" варианта на Eurostat) — НЕ и Eurostat-ия "rate of change %" вариант, защото прекарването на вече-процентна стойност през същата pct_change формула би дало математически подвеждащо "процент от процент" число. Никога не се измислят/оценяват числа — всичко идва директно от официалния Eurostat API отговор.

Засегнати файлове (всички локално тествани с реални API извиквания, python3 -m py_compile минава чисто): .github/workflows/daily-short.yml (матрица 4×1 вместо 2×2, cache key/artifact name без slot, SLOT env var премахнат навсякъде), scripts/fetch_stat.py (нов Eurostat fetch + real-estate candidate pools), scripts/generate_script.py (4 PILLAR_NAMES, real-estate-специфични промпт добавки, ESTA.QUEST логика само за real_estate_sofia), scripts/render_chart.py (4 accent цвята, TEMPLATE_BY_PILLAR вместо TEMPLATE_BY_SLOT, разширен COUNTRY_NAMES), scripts/assemble_video.sh (4-item pillar badge map), scripts/upload_youtube.py (4-item PILLAR_TAGS, без ESTA.QUEST/бранд таг — само в description-а).

recency_history.json — старите записи (pillar money/life) просто спират да се match-ват с новите pillar имена; diversity паметта се рестартира чисто от 2026-09-27 нататък, без да се трие историята (просто вече не участва в exclusion логиката за старите имена).

Отворени въпроси (2026-09-27)

  • Push към GitHub main чака Пепито потвърждение — както на 08.09.2026, тази Cowork сесия няма write достъп до statevpp/proof-in-numbers (git proxy: "not in this session's authorized repository set"); нужен е или еднократно потвърждение в чата за push през Claude-in-Chrome browser automation (доказан работещ метод от 08.09), или Пепи да добави repo-то към сесийните "sources". Кодът е готов и тестван, чака само това.
  • Покритие на real_estate_global/real_estate_sofia е ограничено до Eurostat-овите ~30 държави (Европа + Türkiye) — ако Пепи иска чисто глобално покритие (US/Азия), трябва нов безплатен източник (не намерен работещ безплатен ключ-less API към 27.09.2026 — OECD.Stat старият SDMX-JSON endpoint е decommission-нат).