Snoika publishes search-ready and AI-ready pages on your own Next.js domain. You connect it with one rewrite in next.config.js that sends an agreed path, such as /blog, to the Snoika origin. Your app and your hosting stay as they are. Each page arrives with the technical Next.js SEO work already done, from schema markup to an llms.txt index. To start, add the rewrite with the origin value Snoika's team gives you.
Trusted by


















A rewrite in next.config.js sends one agreed path to the Snoika origin, and the visitor still sees your domain in the address bar. Next.js fetches the page on the server and returns it under your URL, so search engines index it as part of your site. Snoika's team gives you the origin and sets the Host header to that origin in the rule. The team checks the setup once it's live.
// next.config.js
module.exports = {
async rewrites() {
return [
{ source: '/blog', destination: 'https://ORIGIN-FROM-SNOIKA/blog' },
{ source: '/blog/:path*', destination: 'https://ORIGIN-FROM-SNOIKA/blog/:path*' },
];
},
};The same rule works on all three. Rewrites are part of the Next.js config, so they run wherever your build runs. You don't need a platform-specific plugin.
To proxy an external blog through Next.js rewrites, map a source path on your domain to the full URL of the external host. Add a `:path*` wildcard so every article URL follows. The Next.js documentation shows this exact pattern for rewriting /blog externally. It also suggests the pattern for adopting Next.js gradually.
By default, Next.js checks your pages and public files before it applies rewrites. So if your app already has a /blog route, that route wins. Before you go live, check that canonical tags point to your domain. Then check that trailing slashes match on both sides.
Snoika can connect at the DNS or CDN level for the whole website without changes to next.config.js. Requests for Snoika pages go to Snoika, and every other request passes through to your site unchanged. These setups are supported:
The rewrite rule is the only change your Next.js app needs. Your routing and hosting stay as they were. Your deployment pipeline also stays unchanged. Snoika pages run next to your app on the same domain. Search engines and visitors see one site, and the content builds authority for your domain. Check that your middleware matcher skips the agreed path. If you use i18n routing or a basePath, test one localized URL as well.
Every page Snoika publishes carries its own schema markup, so you don't write Article JSON-LD for the proxied pages. Each page also ships with a canonical URL and Open Graph tags. It's linked internally to the related pages, too. Your own app pages still need their own structured data in a `<script type="application/ld+json">` tag in the page component. Run one Snoika article and one app page through Google's Rich Results Test to confirm both parse.
To add llms.txt to a Next.js site, put the file in /public, and Next.js serves it from the root. If the contents require frequent updates, return it from a route handler at `app/llms.txt/route.ts` instead. Jeremy Howard of Answer.AI published the format in a September 2024 proposal. It's a Markdown file with an H1 site name and a short summary. The file also contains lists of links. The format is a proposal.
Snoika gives each page a Markdown twin for AI crawlers and builds an llms.txt index for those pages. If your site already has an llms.txt, keep yours at the root and link the Snoika index from it, so you don't end up with two files competing for the same URL.
For robots.txt in Next.js, add `app/robots.ts` in the App Router. It returns your rules and sitemap URLs, and Next.js turns them into a plain text file. A static `public/robots.txt` works too, on either router. Confirm that no Disallow line covers the agreed path. And if you want ChatGPT search to cite you, don't block OpenAI's search crawler, OAI-SearchBot.
To create a sitemap for Next.js, add `app/sitemap.ts`. It returns an array of URLs with their last-modified dates. Large sites can split it with `generateSitemaps`. Each page Snoika publishes gets a sitemap entry. Confirm with Snoika's team which sitemap URL holds those entries, then list it in robots.txt next to your app's own sitemap. Submit both in Google Search Console.
Snoika tracks how your brand shows up in ChatGPT and Google AI Overviews, where most AI search traffic happens. Prompts come from your content map, or you add your own. Every week, Snoika records:
You see whether the new pages under /blog get cited, and which competitors show up for the prompts you lose.
Hosted pages give you published, tracked content without building a blog engine. A custom build gives you full control and costs your team engineering time.
| Snoika pages via rewrite | Custom Next.js blog | |
|---|---|---|
| Page templates | Snoika sets up templates that match your site | Your team designs and codes them |
| Review | You approve every page in the dashboard before it goes live | Your own CMS workflow |
| Publishing | Scheduled pages, or automatic publishing when no review is needed | Your deploys or CMS |
| Lead tracking | GA4 and Google Tag Manager events configured per page | Your team adds the events |
| Data in your tools | API and MCP connection for content, fixes and AI visibility scores | Whatever you build |
The API and MCP connection matters if your engineers want to own a piece of the work. They can pull finished content or a list of fixes into their own tools. They can even pull code with the fixes already done.
Use /blog if nothing lives there, or choose a path your app doesn't use. Then decide between the rewrite and a CDN-level connection; the integrations directory covers both, next to CMS connections such as WordPress and WooCommerce. A free AI visibility audit is the first step and requires no access to your systems (the WordPress SEO checklist shows the kind of findings it returns). You fill in a short form for an audit of buyer prompts and AI answers. The audit also checks competitors and gaps. Once work starts, Snoika asks for access to Google Analytics 4 and Search Console. It also requests Tag Manager access so AI visibility ties back to traffic you already measure. Snoika handles Next.js SEO on your domain with one rewrite. Connect Next.js to get your origin value.
Once the connection is live, pages follow the AI content creation workflow and can go out through auto-publishing when no review is needed.
Place llms.txt in /public to serve it at the root, or use app/llms.txt/route.ts for frequent updates. If you already have a root file, keep it and link to the hosted pages’ llms.txt index from there.
Add rewrites in next.config.js for /blog and /blog/:path*, pointing each to the corresponding external origin URL. An existing /blog route takes priority, so choose an unused path. Test an article URL and confirm its canonical points to your domain before production.
Use app/robots.ts with the App Router, or public/robots.txt with either router. Include your sitemap URLs and check that no Disallow rule blocks the connected path. If you want eligibility for ChatGPT search citations, don't block OAI-SearchBot.
Add app/sitemap.ts to return your app’s URLs and last-modified dates. Hosted pages receive their own sitemap entries, so confirm which sitemap contains them. List that sitemap alongside your app’s sitemap in robots.txt and submit both in Search Console.
The connection covers next.js seo for the hosted pages, while your existing app pages still need their own structured data. Test one hosted article and one app page with the Rich Results Test to check that both parse.