[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-uk-netpostpanel":3,"technology-slugs-uk":41,"mdc--t2p099-key":65},{"id":4,"title":5,"content":6,"date":7,"description":8,"extension":9,"featured":10,"image":11,"links":12,"meta":18,"stack":19,"stem":35,"tags":36,"url":39,"__hash__":40},"projects_uk\u002Fuk\u002Fprojects\u002Fnetpostpanel.yml","NetPostPanel","Внутрішня AI-платформа для контент-операцій, яка перетворює дослідження теми на готовий контент: повний RAG-пайплайн (Google Custom Search + RSS → скрапінг → мультипровайдерна генерація → векторизація), плюс версіонований зовнішній API, що живить контент-процеси інших проєктів, зокрема блог-пайплайн DigiSpace.\n\n## Ключові можливості\n\n- **Зовнішній API** - версіонований `POST \u002Fapi\u002Fv1\u002Fgenerate` + `\u002Ftranslate` з ключами й лімітами на клієнта відкриває весь пайплайн для інших застосунків, синхронно або асинхронно з колбеками\n- **Auto Pilot** - щоденні заплановані запуски генерують контент з нових джерел натхнення чи власних тем без участі людини\n- **AI без прив'язки до провайдера** - Gemini та OpenAI за драйвер-абстракцією, тож зміна моделі — це конфіг, а не рефакторинг\n- **Семантичний пайплайн** - векторний пошук на Qdrant дедублікує й кластеризує новини ще до генерації\n- **Автономна агрегація** - авто-виявлення RSS-стрічок та Google Custom Search плюс скрапінг перетворюють тему на самопоповнюване джерело контенту\n- **Прозорі LLM-виклики** - кожна генерація трасується в Langfuse: токени, затримка, вартість\n- **Рольовий доступ** - ролі admin\u002Fcontent manager\u002Feditor, кожен запит обмежений власником, крім адміна\n\n## Стек технологій\n\n- **Бекенд**: Laravel, агенти `laravel\u002Fai`\n- **Фронтенд**: Inertia.js + Vue 3 (SPA Search & Creation, редактор TipTap)\n- **AI**: Мультипровайдерно (Gemini\u002FOpenAI) за драйвер-абстракцією\n- **Дослідження**: Google Custom Search + RSS-агрегація, скрапінг сторінок\n- **Векторна БД**: Qdrant для семантичного пошуку\n- **Обсервабельність**: Langfuse для LLM-трейсингу\n- **Черга**: Laravel Horizon\n- **Тести**: PHPUnit\u002FPest + Cypress E2E\n","2024-11-10","AI-платформа для контент-операцій — RAG-пайплайн (дослідження → скрапінг → генерація → векторизація), зовнішній API для інших застосунків, та Auto Pilot для генерації без участі людини","yml",true,"\u002Fhero\u002Fnetpostpanel.avif",[13],{"label":14,"to":15,"color":16,"icon":17},"Огляд проєкту","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fnet-post-panel-overview","neutral","i-simple-icons-github",{},[20,23,26,29,32],{"name":21,"icon":22},"Laravel","i-simple-icons-laravel",{"name":24,"icon":25},"AI","i-heroicons-sparkles",{"name":27,"icon":28},"Qdrant","i-simple-icons-qdrant",{"name":30,"icon":31},"Langfuse","i-heroicons-chart-bar",{"name":33,"icon":34},"Horizon","i-simple-icons-laravelhorizon","uk\u002Fprojects\u002Fnetpostpanel",[24,21,37,38,27,33],"RAG","External API","https:\u002F\u002Fnet-post-panel.digispace.pro","aFH5L_k5kJI95DcFyQpS2By5vB1-qCqdu32coHU9QL8",[42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],"caddy","cloudflare","digitalocean","docker","filament","github-actions","go","hetzner","hostinger","laravel","mysql","nuxt","php","postgresql","proxmox","redis","stripe","symfony","tailwindcss","terraform","typescript","vite","vue",{"data":66,"body":67},{},{"type":68,"children":69},"root",[70,78,85,178,184],{"type":71,"tag":72,"props":73,"children":74},"element","p",{},[75],{"type":76,"value":77},"text","Внутрішня AI-платформа для контент-операцій, яка перетворює дослідження теми на готовий контент: повний RAG-пайплайн (Google Custom Search + RSS → скрапінг → мультипровайдерна генерація → векторизація), плюс версіонований зовнішній API, що живить контент-процеси інших проєктів, зокрема блог-пайплайн DigiSpace.",{"type":71,"tag":79,"props":80,"children":82},"h2",{"id":81},"ключові-можливості",[83],{"type":76,"value":84},"Ключові можливості",{"type":71,"tag":86,"props":87,"children":88},"ul",{},[89,118,128,138,148,158,168],{"type":71,"tag":90,"props":91,"children":92},"li",{},[93,99,101,108,110,116],{"type":71,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":76,"value":98},"Зовнішній API",{"type":76,"value":100}," - версіонований ",{"type":71,"tag":102,"props":103,"children":105},"code",{"className":104},[],[106],{"type":76,"value":107},"POST \u002Fapi\u002Fv1\u002Fgenerate",{"type":76,"value":109}," + ",{"type":71,"tag":102,"props":111,"children":113},{"className":112},[],[114],{"type":76,"value":115},"\u002Ftranslate",{"type":76,"value":117}," з ключами й лімітами на клієнта відкриває весь пайплайн для інших застосунків, синхронно або асинхронно з колбеками",{"type":71,"tag":90,"props":119,"children":120},{},[121,126],{"type":71,"tag":94,"props":122,"children":123},{},[124],{"type":76,"value":125},"Auto Pilot",{"type":76,"value":127}," - щоденні заплановані запуски генерують контент з нових джерел натхнення чи власних тем без участі людини",{"type":71,"tag":90,"props":129,"children":130},{},[131,136],{"type":71,"tag":94,"props":132,"children":133},{},[134],{"type":76,"value":135},"AI без прив'язки до провайдера",{"type":76,"value":137}," - Gemini та OpenAI за драйвер-абстракцією, тож зміна моделі — це конфіг, а не рефакторинг",{"type":71,"tag":90,"props":139,"children":140},{},[141,146],{"type":71,"tag":94,"props":142,"children":143},{},[144],{"type":76,"value":145},"Семантичний пайплайн",{"type":76,"value":147}," - векторний пошук на Qdrant дедублікує й кластеризує новини ще до генерації",{"type":71,"tag":90,"props":149,"children":150},{},[151,156],{"type":71,"tag":94,"props":152,"children":153},{},[154],{"type":76,"value":155},"Автономна агрегація",{"type":76,"value":157}," - авто-виявлення RSS-стрічок та Google Custom Search плюс скрапінг перетворюють тему на самопоповнюване джерело контенту",{"type":71,"tag":90,"props":159,"children":160},{},[161,166],{"type":71,"tag":94,"props":162,"children":163},{},[164],{"type":76,"value":165},"Прозорі LLM-виклики",{"type":76,"value":167}," - кожна генерація трасується в Langfuse: токени, затримка, вартість",{"type":71,"tag":90,"props":169,"children":170},{},[171,176],{"type":71,"tag":94,"props":172,"children":173},{},[174],{"type":76,"value":175},"Рольовий доступ",{"type":76,"value":177}," - ролі admin\u002Fcontent manager\u002Feditor, кожен запит обмежений власником, крім адміна",{"type":71,"tag":79,"props":179,"children":181},{"id":180},"стек-технологій",[182],{"type":76,"value":183},"Стек технологій",{"type":71,"tag":86,"props":185,"children":186},{},[187,203,213,222,232,242,252,262],{"type":71,"tag":90,"props":188,"children":189},{},[190,195,197],{"type":71,"tag":94,"props":191,"children":192},{},[193],{"type":76,"value":194},"Бекенд",{"type":76,"value":196},": Laravel, агенти ",{"type":71,"tag":102,"props":198,"children":200},{"className":199},[],[201],{"type":76,"value":202},"laravel\u002Fai",{"type":71,"tag":90,"props":204,"children":205},{},[206,211],{"type":71,"tag":94,"props":207,"children":208},{},[209],{"type":76,"value":210},"Фронтенд",{"type":76,"value":212},": Inertia.js + Vue 3 (SPA Search & Creation, редактор TipTap)",{"type":71,"tag":90,"props":214,"children":215},{},[216,220],{"type":71,"tag":94,"props":217,"children":218},{},[219],{"type":76,"value":24},{"type":76,"value":221},": Мультипровайдерно (Gemini\u002FOpenAI) за драйвер-абстракцією",{"type":71,"tag":90,"props":223,"children":224},{},[225,230],{"type":71,"tag":94,"props":226,"children":227},{},[228],{"type":76,"value":229},"Дослідження",{"type":76,"value":231},": Google Custom Search + RSS-агрегація, скрапінг сторінок",{"type":71,"tag":90,"props":233,"children":234},{},[235,240],{"type":71,"tag":94,"props":236,"children":237},{},[238],{"type":76,"value":239},"Векторна БД",{"type":76,"value":241},": Qdrant для семантичного пошуку",{"type":71,"tag":90,"props":243,"children":244},{},[245,250],{"type":71,"tag":94,"props":246,"children":247},{},[248],{"type":76,"value":249},"Обсервабельність",{"type":76,"value":251},": Langfuse для LLM-трейсингу",{"type":71,"tag":90,"props":253,"children":254},{},[255,260],{"type":71,"tag":94,"props":256,"children":257},{},[258],{"type":76,"value":259},"Черга",{"type":76,"value":261},": Laravel Horizon",{"type":71,"tag":90,"props":263,"children":264},{},[265,270],{"type":71,"tag":94,"props":266,"children":267},{},[268],{"type":76,"value":269},"Тести",{"type":76,"value":271},": PHPUnit\u002FPest + Cypress E2E"]