Fixes & Pull Requests
Most tools stop at "title is missing". Seoruna prepares the change and opens a Pull Request — you review it like any teammate's PR, merge, deploy, and the next crawl confirms the finding is gone. The loop is Detect → PR → Merge → Verified, and every step is visible.
Connect the repository
In the site's Settings → Repository card, install the Seoruna GitHub App and pick the repository that serves this site. The connection is per site — different sites can use different repositories and different GitHub accounts. The App only gets access to the repositories you select (contents and pull requests).
Opening a fix PR
On the Health page, findings the fixer registry covers show an Open PR button. Seoruna creates a fresh seoruna/fix-… branch — never your default branch — commits the change and opens a PR whose description explains why, what changed and the expected impact, linking back to the finding.
What can be fixed today
- Missing llms.txt — generated from your latest crawl: the most important pages by internal authority, with your site's categories. No AI involved — the file is derived from measured crawl data.
- AI crawlers blocked in robots.txt — appends explicit Allow blocks for exactly the blocked bots (GPTBot, ClaudeBot, PerplexityBot…). Purely additive: your existing rules stay untouched.
Next.js-aware fixes
When the connected repository is a Next.js App Router project (detected automatically at connect time), more findings become fixable — on static routes:
- Missing canonical — adds
alternates: { canonical }to the page's metadata; the value is the page's own path, no AI involved. - Missing / weak titles and meta descriptions — the copy is written from the page's own crawled content, in the page's language, within our standing length rules; then a tightly bounded edit places it in the metadata export.
- Broken canonicals (pointing at redirects or 404s) — reset to the page's own path.
- Missing og:title — a verbatim copy of the page's measured title.
- Missing <html lang> — set in the root layout to the language the crawl actually measured across your pages.
- Missing structured data — an Organization + WebSite JSON-LD script in the root layout, built only from measured site facts.
Guardrails: only the one target file may change, the edit must stay under a hard line budget, and pages with dynamic metadata (generateMetadata) or dynamic routes ([slug]) are refused with a clear reason — a wrong-file PR is worse than no PR.
Verified, automatically
After you merge and deploy, the next crawl re-checks the finding. If it is gone, the fix turns Verified in the history and the PR receives a "Verified by Seoruna" comment — proof, not promises.