DEV Community

Cover image for I open-sourced my free SEO tools as a Next.js toolkit (and what I learned building a safe crawler)
pSEO Wizard
pSEO Wizard

Posted on

I open-sourced my free SEO tools as a Next.js toolkit (and what I learned building a safe crawler)

I build a programmatic SEO tool, and along the way I made a few small free utilities. They turned out to be useful on their own, so I rewrote them as a clean, self-hostable Next.js project: open-seo-toolkit.

Live demo: https://open-seo-toolkit.vercel.app
GitHub: https://github.com/cmkmteam-blip/open-seo-toolkit

The tools

Keyword mixer. Combine up to 4 lists (services × cities × modifiers), dedupe, export CSV or TXT. Runs entirely in the browser.

Bulk slug generator. Most slug libraries break on non-English text. This one handles Turkish (İ/ı/ğ/ş), German ß, accents, Arabic and Cyrillic, and lets you either transliterate to ASCII or keep the native script. Duplicates get -2, -3.

Hreflang generator. Outputs HTML <link> tags, an XML sitemap block or an HTTP Link header, with x-default. It warns about common mistakes like en-UK (should be en-GB) and relative URLs.

Site crawler. Reports missing titles, meta descriptions and H1s, images without alt text, and broken links together with the pages that link to them. Export as CSV.

Building a crawler you can safely deploy publicly

A crawler inside a public web app is an open invitation for abuse, so most of the work went into guardrails:

  • SSRF protection: block localhost, private IP ranges and cloud metadata addresses, checked after DNS resolution and again on every redirect.
  • Politeness: respects robots.txt and Crawl-delay, with a default delay between requests.
  • Limits: max pages per crawl, per-request timeout and a per-IP rate limit.
  • Redirect handling: a site that redirects / to /en shouldn't be crawled twice.

Results stream to the UI while the crawl runs, so you're not staring at a spinner.

No accounts, no tracking

Everything works without environment variables. There's an optional AI keyword-ideas panel that only shows up if you add your own Gemini API key, so it never runs on anyone else's quota.

Deploy your own

One click with the Deploy to Vercel button in the README, or clone it and run npm run dev.

Disclosure: I'm the maker of pSEO Wizard, a programmatic SEO page generator. The demo shows a small card about it after results. The toolkit itself is MIT, so fork it and make it yours.

Feedback and PRs welcome. What SEO tool would you add next?

Top comments (0)