diff --git a/.env.example b/.env.example
index a0a8cf42..3454e302 100644
--- a/.env.example
+++ b/.env.example
@@ -1,4 +1,4 @@
-# rssamplifier.com — copy to .env and fill in.
+# rssamp.com — copy to .env and fill in.
# Team copy lives in logicsrc: `logicsrc teams pull profullstack rssamplifier-com prod`
# PostgreSQL. `sslmode=require` asks for TLS without verifying the certificate,
@@ -24,7 +24,7 @@ CRAWL_AUXILIARY_WRITES=1
CRAWL_CATCHUP=0
# Public origin, used for canonical URLs, OPML, llms.txt and JSON-LD.
-SITE_URL=https://rssamplifier.com
+SITE_URL=https://rssamp.com
# Selling crawl access to AI training crawlers (GPTBot, ClaudeBot, CCBot,
# meta-externalagent, …): a dollar buys a day, settled in USDC by CoinPay. See
diff --git a/.github/workflows/deploy-dev2.yml b/.github/workflows/deploy-dev2.yml
index 23f2cc1e..ffadd2e4 100644
--- a/.github/workflows/deploy-dev2.yml
+++ b/.github/workflows/deploy-dev2.yml
@@ -1,4 +1,4 @@
-# Ship every merge to dev2, where rssamplifier.com runs since 2026-09-25 (it was
+# Ship every merge to dev2, where rssamp.com runs since 2026-09-25 (it was
# two Railway services, which deployed on merge by themselves). The box pulls the
# merged commit, rebuilds the web and poller images from the repo's Dockerfiles
# and restarts the compose stack under /home/anthony/www/rssamplifier.com.
@@ -52,8 +52,8 @@ jobs:
- name: Verify the site answers
run: |
for i in $(seq 1 10); do
- code=$(curl -s -o /dev/null -w '%{http_code}' https://rssamplifier.com/ || true)
- if [ "$code" = 200 ]; then echo "rssamplifier.com 200"; exit 0; fi
+ code=$(curl -s -o /dev/null -w '%{http_code}' https://rssamp.com/ || true)
+ if [ "$code" = 200 ]; then echo "rssamp.com 200"; exit 0; fi
echo "attempt $i: $code"; sleep 10
done
- echo "rssamplifier.com never returned 200"; exit 1
+ echo "rssamp.com never returned 200"; exit 1
diff --git a/README.md b/README.md
index a86e4b79..9ec49b29 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# rssamplifier.com
+# rssamp.com
An open, agent-first directory of independent blogs.
@@ -9,7 +9,7 @@ The point of difference is the machine-readable half: most of the web now blocks
this directory deliberately does the opposite. Everything is also published as JSON, OPML and plain
text so an agent can read the whole thing in one request.
-**Live:**
- Nobody has added this {platform.name} source to the directory yet. Add it and RSS Amplifier
+ Nobody has added this {platform.name} source to the directory yet. Add it and RSSAmp
will start collecting it — usually within a minute.
- RSS Amplifier is an open directory of independent blogs. Submit a URL, a list of URLs or an
+ RSSAmp is an open directory of independent blogs. Submit a URL, a list of URLs or an
OPML file; we find the feed, read it, and give the blog a permanent page.
- RSS Amplifier is an open directory of {fmt(feeds)} independent feeds. Ads here run through{' '}
+ RSSAmp is an open directory of {fmt(feeds)} independent feeds. Ads here run through{' '}
CrawlProof
diff --git a/apps/web/src/app/api/dataset/route.js b/apps/web/src/app/api/dataset/route.js
index 8005ab6f..82f6069b 100644
--- a/apps/web/src/app/api/dataset/route.js
+++ b/apps/web/src/app/api/dataset/route.js
@@ -118,7 +118,7 @@ export function GET() {
source:
'Public feeds their publishers chose to syndicate. The directory is open and anyone may submit to it.',
optOut:
- 'A publisher may be excluded from the corpus while staying in the directory, on request to hello@rssamplifier.com. Excluded feeds and every post and article belonging to them are absent from every dataset above.',
+ 'A publisher may be excluded from the corpus while staying in the directory, on request to hello@rssamp.com. Excluded feeds and every post and article belonging to them are absent from every dataset above.',
openApi: `Nothing here is a restriction on the open API: ${base}/api/feeds, /api/search, /opml and the MCP server all answer without an account.`,
},
},
diff --git a/apps/web/src/app/api/following/feed/[format]/route.js b/apps/web/src/app/api/following/feed/[format]/route.js
index 6d3b624b..4977934b 100644
--- a/apps/web/src/app/api/following/feed/[format]/route.js
+++ b/apps/web/src/app/api/following/feed/[format]/route.js
@@ -100,15 +100,15 @@ export async function GET(req, { params }) {
// this and the whole thing must be able to tell them apart in a list of
// feeds, and "Following" twice over cannot.
title: kinds
- ? `Following: ${CATEGORIES[kinds[0]].heading} — RSS Amplifier`
- : 'Following — RSS Amplifier',
+ ? `Following: ${CATEGORIES[kinds[0]].heading} — RSSAmp`
+ : 'Following — RSSAmp',
description: `Recent ${
kinds ? CATEGORIES[kinds[0]].item : 'posts'
} from the ${count(topics.length, 'topic')}, ${count(
authors.length,
'person',
'people',
- )} and ${count(feeds.length, 'blog')} this RSS Amplifier account follows.`,
+ )} and ${count(feeds.length, 'blog')} this RSSAmp account follows.`,
link: `${origin}/following${kinds ? `?kind=${kinds[0]}` : ''}`,
selfUrl: followingFeedUrl(origin, token, format, kinds),
},
diff --git a/apps/web/src/app/api/frame/route.js b/apps/web/src/app/api/frame/route.js
index e37d9ae6..9954cf9e 100644
--- a/apps/web/src/app/api/frame/route.js
+++ b/apps/web/src/app/api/frame/route.js
@@ -36,7 +36,7 @@ export const dynamic = 'force-dynamic';
*
* A hole in our origin. The response carries `Content-Security-Policy:
* sandbox`, which applies however the document is loaded, so somebody else's
- * markup can never run with rssamplifier.com's origin — not in the frame, and
+ * markup can never run with rssamp.com's origin — not in the frame, and
* not by pasting this URL into the address bar.
*/
diff --git a/apps/web/src/app/api/v1/daemon/route.js b/apps/web/src/app/api/v1/daemon/route.js
index 755cd3aa..7296513a 100644
--- a/apps/web/src/app/api/v1/daemon/route.js
+++ b/apps/web/src/app/api/v1/daemon/route.js
@@ -15,7 +15,7 @@ const NO_STORE = { 'cache-control': 'no-store' };
* the one fact a cached copy would hide.
*
* Same shape as every other site on @profullstack/scraper-daemon, so
- * `npx @profullstack/scraper-daemon status https://rssamplifier.com` reads it.
+ * `npx @profullstack/scraper-daemon status https://rssamp.com` reads it.
*/
export async function GET() {
try {
diff --git a/apps/web/src/app/contact/page.jsx b/apps/web/src/app/contact/page.jsx
index 071d3917..80706dcc 100644
--- a/apps/web/src/app/contact/page.jsx
+++ b/apps/web/src/app/contact/page.jsx
@@ -1,7 +1,7 @@
export const metadata = {
title: 'Contact',
description:
- 'How to reach the people who run RSS Amplifier: general questions, corrections to a listing, privacy requests and security reports.',
+ 'How to reach the people who run RSSAmp: general questions, corrections to a listing, privacy requests and security reports.',
};
/**
@@ -26,7 +26,7 @@ export default function ContactPage() {
<>
- RSS Amplifier is built and run by{' '}
+ RSSAmp is built and run by{' '}
Profullstack, Inc. There is no support queue and no
account system; the addresses below reach people.
{label}
About
Advertise
Contact
If an entry about your site is wrong, or you would like it removed, email{' '} - hello@rssamplifier.com with the address of the + hello@rssamp.com with the address of the page. We only index public feeds, and we remove on request without asking why.
@@ -55,13 +55,13 @@ export default function ContactPage() {For access, correction or deletion requests, or any question about{' '} the privacy policy, email{' '} - privacy@rssamplifier.com. + privacy@rssamp.com.
To report a vulnerability, email{' '} - security@rssamplifier.com. Machine-readable + security@rssamp.com. Machine-readable details are at /.well-known/security.txt. Please give us a chance to fix it before publishing.
diff --git a/apps/web/src/app/crawlstats/page.jsx b/apps/web/src/app/crawlstats/page.jsx index 3348fb89..c88e35b9 100644 --- a/apps/web/src/app/crawlstats/page.jsx +++ b/apps/web/src/app/crawlstats/page.jsx @@ -32,7 +32,7 @@ export const dynamic = 'force-dynamic'; export const metadata = { title: 'Crawler status', description: - 'Live status of the RSS Amplifier crawler: how many feeds are due, what was fetched in the last hour, and which feeds are failing.', + 'Live status of the RSSAmp crawler: how many feeds are due, what was fetched in the last hour, and which feeds are failing.', robots: { index: true, follow: true }, }; diff --git a/apps/web/src/app/discover/page.jsx b/apps/web/src/app/discover/page.jsx index e2b083ca..0a290782 100644 --- a/apps/web/src/app/discover/page.jsx +++ b/apps/web/src/app/discover/page.jsx @@ -83,7 +83,7 @@ export default async function DiscoverPage({ searchParams }) {Same endpoint, JSON in and JSON out:
-{`curl -X POST https://rssamplifier.com/api/discover \\
+ {`curl -X POST https://rssamp.com/api/discover \\
-H 'content-type: application/json' \\
-d '{"keywords":["siberian huskies"]}'`}
diff --git a/apps/web/src/app/discoveries/[id]/page.jsx b/apps/web/src/app/discoveries/[id]/page.jsx
index eb15edba..12c64af4 100644
--- a/apps/web/src/app/discoveries/[id]/page.jsx
+++ b/apps/web/src/app/discoveries/[id]/page.jsx
@@ -190,7 +190,7 @@ export default async function DiscoveryPage({ params }) {
For agents
The same status as JSON, safe to poll:
- {`curl https://rssamplifier.com/api/discoveries/${id}`}
+ {`curl https://rssamp.com/api/discoveries/${id}`}
{/*
* The stream carries the bar and the log; this is only what fills in the
diff --git a/apps/web/src/app/ig/page.jsx b/apps/web/src/app/ig/page.jsx
index 7ba2ac75..1cf0041c 100644
--- a/apps/web/src/app/ig/page.jsx
+++ b/apps/web/src/app/ig/page.jsx
@@ -12,7 +12,7 @@ export async function generateMetadata({ searchParams }) {
return {
title: page === 1 ? 'Instagram' : `Instagram · page ${page}`,
description:
- 'Instagram accounts and hashtags as feeds you can subscribe to — collected by RSS Amplifier and served from here, never from Instagram.',
+ 'Instagram accounts and hashtags as feeds you can subscribe to — collected by RSSAmp and served from here, never from Instagram.',
alternates: {
canonical: page === 1 ? `${siteUrl()}/ig` : `${siteUrl()}/ig?page=${page}`,
},
diff --git a/apps/web/src/app/install.sh/route.js b/apps/web/src/app/install.sh/route.js
index a3e528af..0eebf9a3 100644
--- a/apps/web/src/app/install.sh/route.js
+++ b/apps/web/src/app/install.sh/route.js
@@ -3,7 +3,7 @@ import { siteUrl } from '../../lib/db.js';
export const dynamic = 'force-dynamic';
/**
- * The installer, for `curl -fsSL https://rssamplifier.com/install.sh | sh`.
+ * The installer, for `curl -fsSL https://rssamp.com/install.sh | sh`.
*
* Generated rather than static so the URLs in it are this deployment's own:
* an installer served from a preview or a local run should install that
diff --git a/apps/web/src/app/layout.jsx b/apps/web/src/app/layout.jsx
index 24e6a513..b395a25b 100644
--- a/apps/web/src/app/layout.jsx
+++ b/apps/web/src/app/layout.jsx
@@ -21,16 +21,16 @@ export const revalidate = 3600;
export const metadata = {
metadataBase: new URL(siteUrl()),
title: {
- default: 'RSS Amplifier — an open directory of blogs, built for agents',
- template: '%s · RSS Amplifier',
+ default: 'RSSAmp — an open directory of blogs, built for agents',
+ template: '%s · RSSAmp',
},
description:
'Submit a URL, a list of URLs or an OPML file. Every blog gets its own page, and the whole directory is available as JSON, OPML and plain text for AI agents.',
- applicationName: 'RSS Amplifier',
+ applicationName: 'RSSAmp',
manifest: '/manifest.webmanifest',
appleWebApp: {
capable: true,
- title: 'RSS Amplifier',
+ title: 'RSSAmp',
statusBarStyle: 'default',
},
icons: {
@@ -90,7 +90,7 @@ export const metadata = {
},
openGraph: {
type: 'website',
- siteName: 'RSS Amplifier',
+ siteName: 'RSSAmp',
},
};
@@ -132,7 +132,7 @@ function siteJsonLd() {
{
'@type': 'WebSite',
'@id': `${url}/#website`,
- name: 'RSS Amplifier',
+ name: 'RSSAmp',
description:
'An open, agent-friendly directory of independent blogs, podcasts, music and video feeds.',
url,
@@ -217,7 +217,7 @@ export default function RootLayout({ children }) {
contrast, so there is no dark variant to swap in and no
wrapper to resolve — which also means nothing here
needs rechecking when the theme changes. */}
-
+
{/* A checkbox rather than a button, so the menu opens with no
@@ -289,7 +289,7 @@ export default function RootLayout({ children }) {
{/* One shared footer includes the human and machine-readable doors. */}