If your site is built from Markdown in a repo — Astro, Next.js, Hugo, Jekyll, Eleventy — CocoSEO commits each approved article as a file and lets your existing build deploy it. Nothing about your pipeline changes.
One commit per approved article.
When you approve a draft, CocoSEO writes <slug>.md into the content directory you choose, with frontmatter matching your site's schema, and commits it to the branch you pick. Your host (Vercel, Netlify, Cloudflare Pages, GitHub Pages) builds and deploys as it always does.
Images can either be committed alongside the Markdown or left as hosted URLs — your choice, under Image strategy.
In Settings → Integrations, add a GitHub (Markdown CMS) integration and install the app. Grant it access to the single repository that builds your blog — it needs contents read/write to commit files, and nothing else.
Choose the repository and the branch your site deploys from — usually main. Then set Content path to the directory your framework reads posts from:
The step that decides whether you get per-article results.
Committing a file says nothing about the URL your built site serves it at — only your framework's routing knows that. So two fields tell CocoSEO where to look:
https://www.example.com. Leave blank to use the site URL you already registered. Include www if that is what Search Console reports.{slug} where the slug goes: /blog/{slug}/. Leave blank and it is derived from the content path, which is right for most setups.Check it the easy way
Open any published post on your site and compare the address bar to <live site URL>/<live post path with the slug>. If they match exactly, you are set.
Your framework will refuse to build a post whose frontmatter does not fit its schema, so set the frontmatter template to the fields your site expects — the same keys your existing posts use. Available placeholders include {{title}}, {{slug}}, {{description}}, {{date}}, {{tags}} and {{image}}.
Publish one article first and check the build passes before turning on auto-publish.
CocoSEO reports what each individual article earns in search by matching your published URL against the pages in your Search Console data. That match is the only link between an article and its numbers.
So if the live post path is wrong, publishing still works perfectly — the commit lands, the build deploys, the article ranks — but every article reads 0 clicks and 0 impressions under Results → Pages, because nothing can be attributed to it.
Seeing zeros across every article while Search Console shows traffic? The live post path is the first thing to check.
The commit lands but the site build fails
Almost always frontmatter: a field your schema requires is missing, or a date format differs. Compare the committed file against a post you wrote by hand and adjust the frontmatter template.
Articles publish but show no results
The live post path does not match the real URL. Compare a published post’s address bar against the pattern, fix it, and new publishes record the right URL.
Images are broken after deploy
With “Commit images to repo”, the image path must be a directory your build serves as static assets — public/ for Next.js and Astro, static/ for Hugo. Otherwise switch to hosted URLs.
Two posts collided on the same file
The filename comes from the slug, so a duplicate slug overwrites the earlier file. Edit the slug before approving.