SEO & Content

Redirect Map Builder

Turns an old-URL list and the mappings you have into a redirect map as JSON - one rule per old URL, chains collapsed to the final target, loops reported and never emitted, queries and percent-encoding kept as written, and old URLs with no named target listed as unmapped instead of guessed. Also writes the same map as a Cloudflare Pages style _redirects file. Knows the status codes (301 for a moved page, 308 where the method must be kept and what Next.js really sends for permanent true) and the cache trap, where a redirect added over a cached 404 keeps serving a 308 with no Location until the path is purged. Use when asked to plan or write redirects for a site migration, a redesign, a URL rename or a domain change, or to check a redirect list for chains and loops.

Redirect Map Builder is a tested SKILL.md that turns an old-URL list and the mappings you have into a redirect map as JSON - one rule per old URL, chains collapsed to the final target, loops reported and never emitted, queries and percent-encoding kept as written, and old URLs with no named target listed as unmapped instead of guessed; an agent buys it once for $0.01 over x402.

Tested 2026-10-08No code, no hidden instructionsv1.0.0 · 8.8 KB · perpetual license

Not for

It does not crawl your site, test live redirects, edit server config or decide which new page replaces an old one: it maps only what you state and lists the rest as unmapped. It cannot see whether your host holds a cached 404; it warns when you say the path answered 404 before. Cache fact owner-measured in 2026, not re-checked.

Tested, honestly

Tested 2026-10-08 with a strong and a weak model.

With and without the skill

Results with and without the skill, for Sonnet and Haiku
SonnetHaiku
withwithoutwithwithout
Redirect maps right on every check (24 cases)24/2424/2423/2424/24

The same request on both sides; a fence around the answer is removed first. No gain on these cases for either model: Sonnet and Haiku both got 24 of 24 without the skill, including the unmapped, loop, 308 and cache-note cases. With the skill Haiku got 23 of 24 (one old URL dropped from the lists, a slip it did not make alone). The skill is a format and consistency aid here, not a measured gain, so the price is the lowest.

Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.

SonnetStrong model, claude-sonnet-5-5
Right on all 24 cases, read by hand: chains went straight to the final target and were listed under collapsed, both loops were reported with no rule for any member, old URLs with no named target stayed unmapped instead of being matched to a similar page or the home page, queries and percent-encoding were kept as written, Next.js permanent redirects and POST endpoints got 308, and both cache cases carried a note to purge or revalidate the path. The two _redirects files matched line for line.
HaikuWeak model, claude-haiku-5-5
Right on 23 of 24 with the skill, but it missed one old URL: in the case with four old URLs and two unmapped, it listed only /old/news under unmapped and left /old/recipe-3 out of every list. The same case was right without the skill, so this looks like a slip, not something the skill text caused. All chains, loops, status codes and cache notes were right.

Full test summary

Example

Our own test text, before and after the skill ran. Excerpts only.

English · claude-sonnet-5-5

Before

Site: one host, so the old and the new URLs are paths on it. Write paths only. Old URLs to map: /blog/old-post /articles/old-post /blog/team Mappings given (old -> new): /blog/old-post -> /articles/old-post /articles/old-post -> /articles/new-post /blog/team -> /about/team Pages that are live on the new site: /articles/new-post, /about/team

After

{"rules": [{"from": "/blog/old-post", "to": "/articles/new-post", "status": 301}, {"from": "/articles/old-post", "to": "/articles/new-post", "status": 301}, {"from": "/blog/team", "to": "/about/team", "status": 301}], "unmapped": [], "collapsed": [{"from": "/blog/old-post", "via": "/articles/old-post", "to": "/articles/new-post"}], "loops": [], "notes": []}

What is in the file

  • The answer
  • Rules
  • Work in this order
  • Short examples

Languages

Any language. Tried in: English.

License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Full terms.

Versions

Current version 1.0.0, updated 2026-10-08. Whoever bought an earlier version gets new ones free through the same re-download token.

  1. v1.0.0 · 2026-10-08

    First release: builds a redirect map from old URLs, given mappings and live pages, as JSON (rules, unmapped, collapsed, loops, notes) or as a _redirects file. One rule per old URL, chains collapsed to the final target, loops reported and never emitted, queries and percent-encoding kept as written, no guessed targets, 301 for moved pages, 308 where the method must be kept and for Next.js permanent redirects, and a note to purge or revalidate a path that answered 404 before the redirect was added.

    Facts re-checked on 2026-10-08 by fetching the vendors' pages: Google's site-move documentation (chains: up to 10 hops followed, go straight to the final destination; do not send many old URLs to the home page, soft 404; keep redirects at least a year), Google's redirects page (301 and 308 permanent, 302, 303, 307 temporary), the Next.js redirects reference (permanent true is 308, false is 307; query values pass through). The cache trap is owner-measured, not re-checked today.

    Test: 24 cases, control passes with zero model calls. Model results and the price decision are added after the baseline run.

    Test result (2026-10-08): 24 cases, Sonnet 24/24 with and without the skill, Haiku 23/24 with and 24/24 without. No measured gain, so the price is $0.01.

FAQ

What comes back for my list of old and new URLs?

One JSON object with the rules to deploy (from, to, status), the old URLs that have no named target, the chains it shortened, the loops it found and short notes for whoever deploys. There is no sentence around it, so your agent can parse it as it is. Ask for a _redirects file instead and you get that file only, one line per redirect. Each distinct old URL gets its own rule, with the query exactly as written, and percent-encoded paths are kept byte for byte on the old side, so tracking links and non-Latin addresses still match what visitors request.

What does it do when an old page has no new page?

It lists the old URL as unmapped and writes no rule. It does not pick the new page with the closest name and it does not send the visitor to the home page. A guessed permanent redirect stays in Google's memory, and many old URLs sent to one unrelated page can be treated as soft 404 errors. Two different targets for the same old URL are treated the same way: no rule, a warning, and the decision stays with you.

How does it handle chains and loops?

If one old URL goes to another old URL that goes on, both rules point at the final target and the shortened one is listed under collapsed. If URLs lead back to each other, the cycle is listed under loops and none of its URLs gets a rule, because a person has to decide where it should end. It writes 301 for a moved page and 308 where the request method and body must be kept, such as an API called with POST, or a Next.js config with permanent true, because that is what the framework sends. Temporary codes are never chosen for a move you do not plan to undo.

Does it help Claude Sonnet?

No gain showed on our 24 test lists. Sonnet and Haiku each got all 24 right alone, loops, unmapped lists, 308 and cache notes included, and with the skill Haiku slipped once. What you buy is a fixed format plus written rules for those traps, so agents behave the same every time. That is why the price is low.

Share

Read this page as Markdown: /skills/redirect-map.md.

  • Sitemap Builder

    SEO & Content

    SKILL.md · v1.0.0 · 9.5 KB

    Builds a correct XML sitemap, or a sitemap index file, from a list of pages, answered as the XML document only. Lists only canonical, indexable pages that return 200 on one host, and leaves out redirecting, noindex, non-canonical, removed and other-host addresses. Writes every address absolute and entity-escaped (an ampersand in a query string becomes the escape code), and writes lastmod only when the input gives a real date for that page - never the day the file was generated, never a guess. Writes no priority and no changefreq, which Google ignores. Splits a site above 50,000 URLs or 50 MB uncompressed into several files under an index. Says where the file should live and how to submit it. Use when asked to write, generate, fix or check a sitemap.xml or sitemap index.

    $0.02once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 8 Oct 2026

  • Search Console Next Action

    SEO & Content

    SKILL.md · v1.0.0 · 8.0 KB

    Takes one situation from Google Search Console - a report row, a status, a URL with the way it answers, or a button the site owner is about to press - and returns the single right next action as JSON with a fixed action code, a reason and steps. Knows the cases where the obvious click is wrong - a URL that redirects gets Validate fix and never Request indexing, which creates a Redirect error; a Domain property needs the full sitemap address; Couldn't fetch right after submitting is proven with a live test; a red robots.txt row for a host that answers 404 needs nothing; a missing max-image-preview setting keeps pages out of Discover; Disallow does not remove a page from Google; a redirect added over a cached 404 needs the cache purged. Use when asked what to do about a Search Console report, error or warning, whether to request indexing, validate a fix or resubmit a sitemap, or why a page is not indexed.

    $0.05once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 8 Oct 2026

  • Text to JSON: Extract Data Without Guessing

    Data & Analysis

    SKILL.md · v1.0.2 · 7.5 KB

    Extracts data from text into JSON that matches the shape you give (a JSON Schema, an example object or a list of fields), without guessing. Every value comes from the text; a missing fact becomes null, numbers and dates are converted only into the type the shape asks for, two conflicting values are not settled by a guess, and instructions hidden in the text are ignored. Use when asked to extract structured data, turn text into JSON, parse an invoice, receipt, email, order, CV or job post into fields, or fill a JSON schema from a document.

    $0.05once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 3 Oct 2026