Wróć do bloga

Blog pod vlastní doménou, s redakcí i AI — jak a proč jsem to postavil

Andrzej MrózekAndrzej Mrózek
Blog pod vlastní doménou, s redakcí i AI — jak a proč jsem to postavil

Když jsem se rozhodoval, kde poběží blog pro efektio.cz, měl jsem tři požadavky. Za prvé — obsah musí žít pod mou doménou, ne na cizí platformě. Za druhé — potřebuji redakční rozhraní, kde můžu pohodlně psát a spravovat příspěvky. A za třetí — chci, aby do toho systému mohla přispívat i AI, bez ručního kopírování textů.

Výsledek je kombinace Sanity jako headless CMS, Next.js 16 jako frameworku a Vercelu jako hostingu. V tomhle článku popíšu, proč jsem tenhle stack zvolil, co mě překvapilo a jak funguje napojení na AI přes MCP.

Proč ne Medium, Substack nebo WordPress?

Nic proti těm platformám — pro spoustu lidí dávají smysl. Ale pokud chcete blog jako součást svého firemního webu, s vlastním designem, vlastní doménou a plnou kontrolou nad daty, potřebujete něco jiného. WordPress by to zvládl, ale přináší vlastní sadu starostí — údržba, bezpečnostní aktualizace, pluginy. Chtěl jsem něco lehčího a modernějšího.

Sanity je headless CMS. To znamená, že odděluje správu obsahu od toho, jak se obsah zobrazuje. Data jsou uložená v cloudu Sanity, redakční rozhraní (Sanity Studio) běží jako součást vaší Next.js aplikace, a frontend si obsah stahuje přes API. Výsledek je čistý, rychlý web bez backendu, který musíte spravovat.

Redakční rozhraní pod vaší doménou

Tohle je jedna z věcí, která mě na Sanity zaujala nejvíc. Sanity Studio se dá embedovat přímo do Next.js aplikace — takže redakční rozhraní běží na adrese vasedomena.cz/studio. Není to žádný externí admin panel, je to součást vašeho webu. Vizuální editor, správa obrázků, kategorie, autoři — všechno na jednom místě, pod jednou adresou.

A teď to hlavní — AI, které do blogu může přímo psát

Sanity má MCP server. MCP (Model Context Protocol) je standard, přes který se AI asistenti připojují k externím službám. V praxi to znamená, že Claude nebo jiný AI asistent se může přímo připojit k vašemu Sanity projektu — a vytvářet, upravovat nebo publikovat obsah.

Představte si workflow: řeknete AI „napiš článek o novinkách v Next.js 16 a ulož ho jako draft do Sanity." AI článek napíše, vytvoří ho v CMS, a vy si ho v Studio rozhraní zkontrolujete a publikujete. Nebo můžete jít dál a nechat AI publikovat rovnou — to záleží na tom, kolik kontroly chcete mít.

Tohle není teorie. Sanity MCP server je funkční, připojitelný přes Claude a další nástroje, které MCP podporují. A protože obsah prochází stejným CMS jako ručně napsané články, máte jednotný workflow — bez ohledu na to, jestli článek psal člověk nebo AI.

Jak to celé funguje pod kapotou

Technicky to znamená vytvořit route group pro studio, oddělený od hlavního webu. Next.js 16 s next-intl lokalizací vyžaduje, aby každá sekce měla vlastní root layout — jinak se budete potýkat s konfliktem HTML a body tagů. V praxi to vypadá tak, že hlavní web běží v route group (main) s lokalizovaným layoutem, a studio v (studio) s minimalistickým layoutem bez lokalizace. Middleware musí /studio cestu vyloučit z lokalizačního přesměrování, jinak dostanete 404.

Okamžitá publikace přes webhooky

Když v Sanity Studio publikujete článek, chcete ho vidět na webu hned — ne za hodinu, ne po redeployi. To řeší kombinace ISR (Incremental Static Regeneration) a webhooků. Sanity pošle webhook na váš API endpoint, ten zavolá revalidateTag a Next.js obnoví cache pro všechny stránky, které daný tag používají.

Jeden detail, který mě stál čas: v Next.js 16 má revalidateTag nově povinný druhý argument. Dokumentace to v době mého setupu ještě pořádně nepopisovala. Podobných drobností je víc — TypeScript strict mode vyžaduje explicitní typy pro všechno, co přijde ze Sanity client.fetch(), import SanityImageSource se v novějších verzích dělá jinak než dřív, a obrázky je potřeba kontrolovat přes mainImage?.asset, ne jen mainImage.

Stack v kostce

Celá sestava vypadá takhle: Next.js 16 jako framework, Sanity v5 jako CMS, Vercel jako hosting, next-intl pro lokalizaci (čeština + angličtina), TypeScript ve strict mode, ISR s tag-based revalidací přes Sanity webhooky. Sanity Studio běží pod /studio jako embedded součást webu. A přes MCP server se k tomu celému může připojit AI.

Pro firmu nebo konzultanta, který chce profesionální web s blogem, je tahle kombinace zajímavá. Máte plnou kontrolu, moderní technologie, rychlost — a připravenost na to, že obsah jednou nebudete vytvářet jen ručně.

Pokud vás zajímá víc detailů o tomhle setupu, nebo chcete podobné řešení pro svůj web — ozvěte se přes efektio.cz.