Stork Wire · install help
The /news install.
Every platform, one rule.
Your Stork Wire paper is served by a single server-side rewrite: requests to /news on your domain proxy to our origin. Installing for the first time, or reinstalling after a server rebuild dropped the rule — either way, everything you need is on this page.
The rule, in words
Proxy /news and /news/* to https://www.stork.ai/wire/YOUR-KEY. It must be a proxy that returns 200 — a 301/302 redirect sends your readers and crawlers to stork.ai instead of serving under your domain, which defeats the point, and our install check will fail on it. Both paths matter: on every engine the /* splat does not match the bare /news, and a paper whose index works but whose articles 404 reads as broken.
YOUR-KEY is your paper's key — the part after /wire/ on your install card. Your console shows every snippet below with the key already filled in, next to a Verify button.
The same rule on your stack
Pick your platform, replace YOUR-KEY
Next.js/Vercel
// next.config.js -> rewrites()
{ source: "/news", destination: "https://www.stork.ai/wire/YOUR-KEY" },
{ source: "/news/:path*", destination: "https://www.stork.ai/wire/YOUR-KEY/:path*" }Netlify
# netlify.toml - status 200 proxies; 301 would break it [[redirects]] from = "/news" to = "https://www.stork.ai/wire/YOUR-KEY" status = 200 force = true [[redirects]] from = "/news/*" to = "https://www.stork.ai/wire/YOUR-KEY/:splat" status = 200 force = true
Cloudflare
// Cloudflare Worker (Workers Routes: yourdomain.com/news*)
export default {
async fetch(request) {
const url = new URL(request.url);
const rest = url.pathname.replace(/^\/news/, "");
return fetch("https://www.stork.ai/wire/YOUR-KEY" + rest + url.search, request);
},
};nginx
# nginx - inside your server { } block. proxy_pass, never return 301.
location = /news {
proxy_pass https://www.stork.ai/wire/YOUR-KEY;
proxy_set_header Host www.stork.ai;
}
location /news/ {
proxy_pass https://www.stork.ai/wire/YOUR-KEY/;
proxy_set_header Host www.stork.ai;
}Apache
# Apache / LiteSpeed - .htaccess or vhost. Needs mod_proxy + mod_proxy_http. SSLProxyEngine On ProxyPass /news/ https://www.stork.ai/wire/YOUR-KEY/ ProxyPassReverse /news/ https://www.stork.ai/wire/YOUR-KEY/ ProxyPass /news https://www.stork.ai/wire/YOUR-KEY ProxyPassReverse /news https://www.stork.ai/wire/YOUR-KEY
Caddy
# Caddyfile - inside your site block
handle /news* {
rewrite * /wire/YOUR-KEY{uri.path.strip_prefix./news}
reverse_proxy https://www.stork.ai {
header_up Host www.stork.ai
}
}Another stack? Express, Remix, SvelteKit, Astro, Plesk — same two paths, proxied server-side, status 200, using whatever your project already uses for proxying. Site builders that can't proxy at all (Webflow, Framer, Squarespace, Wix, Carrd, GitHub Pages) can front the domain with free Cloudflare and use the Worker above — the firewall guide walks through it.
Rather not touch config by hand?
Paste this into your coding agent
This is the full install prompt — it picks the right form for your stack, adds the sitemap line and a nav link, deploys, and verifies the result. Swap YOUR-KEY for your key and yoursite.com for your domain before pasting (or copy it pre-filled from your console).
Serve /news on this site from Stork Wire.
1. Add a server-side rewrite for /news and /news/*. It must PROXY (return 200),
not redirect - a 301/302 sends visitors and crawlers to stork.ai instead of
serving under this domain, which defeats the entire point, and our install
check will fail. Work out which host this project deploys to and use the
matching form:
Next.js / Vercel - next.config.js rewrites() (or vercel.json):
{ source: "/news", destination: "https://www.stork.ai/wire/YOUR-KEY" }
{ source: "/news/:path*", destination: "https://www.stork.ai/wire/YOUR-KEY/:path*" }
Netlify - netlify.toml (or _redirects). BOTH rules are required: the /*
splat does not match the bare /news.
[[redirects]]
from = "/news"
to = "https://www.stork.ai/wire/YOUR-KEY"
status = 200
force = true
[[redirects]]
from = "/news/*"
to = "https://www.stork.ai/wire/YOUR-KEY/:splat"
status = 200
force = true
_redirects equivalent, if the project already uses that file:
/news https://www.stork.ai/wire/YOUR-KEY 200!
/news/* https://www.stork.ai/wire/YOUR-KEY/:splat 200!
Cloudflare - a Worker on route yourdomain.com/news* :
export default { async fetch(request) {
const url = new URL(request.url);
const rest = url.pathname.replace(/^\/news/, "");
return fetch("https://www.stork.ai/wire/YOUR-KEY" + rest + url.search, request);
} };
nginx - in the server { } block:
location = /news { proxy_pass https://www.stork.ai/wire/YOUR-KEY; proxy_set_header Host www.stork.ai; }
location /news/ { proxy_pass https://www.stork.ai/wire/YOUR-KEY/; proxy_set_header Host www.stork.ai; }
Apache / LiteSpeed - .htaccess or vhost, needs mod_proxy + mod_proxy_http:
SSLProxyEngine On
ProxyPass /news/ https://www.stork.ai/wire/YOUR-KEY/
ProxyPassReverse /news/ https://www.stork.ai/wire/YOUR-KEY/
ProxyPass /news https://www.stork.ai/wire/YOUR-KEY
ProxyPassReverse /news https://www.stork.ai/wire/YOUR-KEY
Caddy - in the site block:
handle /news* {
rewrite * /wire/YOUR-KEY{uri.path.strip_prefix./news}
reverse_proxy https://www.stork.ai { header_up Host www.stork.ai }
}
Anything else (Express, Remix, SvelteKit, Astro, Caddy behind something
else): same two paths, proxied server-side, status 200. Use whatever this
project's stack already uses for proxying.
2. If robots.txt lists sitemaps, add: Sitemap: https://yoursite.com/news/sitemap.xml
3. Link to it from the site itself: add a "News" item pointing at /news to the
main nav or footer, matching the site's existing style. Without an internal
link the page is an orphan - crawlers reach it late and it inherits none of
the site's authority.
4. Deploy, then confirm https://yoursite.com/news returns a page containing "stork-wire:".
5. If that check returns HTTP 429/403 with a bot challenge (it will for curl AND
headless browsers), the site's firewall (Vercel Bot Protection, Cloudflare) is
challenging non-browser clients. Don't try to work around it from code - it's a
dashboard setting. Tell the human to add a firewall bypass rule for paths
starting with /news, then re-check. Step-by-step guide for them:
https://www.stork.ai/stork-wire/firewallAfter you deploy
Two checks and you're live
From any terminal: curl -s https://yoursite.com/news | grep stork-wire — a match means the proxy is serving your paper. Then hit Verify in your console; articles and citations resume on their own once it passes.
Seeing 429 or 403 instead? Your site's bot protection is challenging non-browser clients, ours included. That's a two-minute scoped exception — the firewall guide shows exactly where it lives on Vercel and Cloudflare.
Stuck on anything here? support@stork.ai — a person reads these. New here? What Stork Wire is →
