Signals Hub Installation
Set up your Signals Hub under your domain for SEO, AEO, and AI discovery — in minutes.
Why this works
Your Signals Hub lives under your domain so search engines and AI systems attribute everything to you.
- Content is published under your domain (signals.yourdomain.com), so authority stays with your brand.
- Your robots.txt and sitemap ensure crawlers and AI discovery engines can find and index your signals.
- A footer link creates an always-fresh entry point from your main site to your latest signal.
DNS Setup (CNAME)
Point your Signals subdomain to our ingest endpoint with a CNAME record.
signals.your-domain.com → CNAME → ingest.freshnews.aiDNS propagation can take a short time.
robots.txt (Sitemap Discovery)
Add this line to your main site's robots.txt so crawlers can discover your signals sitemap.
Sitemap: https://signals.your-domain.com/sitemap.xmlFooter Integration (Preferred) — Always Up-to-Date "Latest Signal"
We inject a link that always points to the most recent published signal.
Preferred: Dynamic Script (recommended)
<div id="freshnews-latest" class="freshnews-footer-pulse">
<noscript>
<a href="https://signals.yourdomain.com/en/latest" target="_blank" rel="noopener noreferrer">
Latest Signal ↗
</a>
</noscript>
</div>
<style>
.freshnews-footer-pulse a{
display:inline-block;
max-width:11ch;
white-space:nowrap;
overflow:hidden;
text-overflow:clip;
position:relative;
padding-right:1.1em;
}
.freshnews-footer-pulse a::after{
content:"↗";
position:absolute;
right:0;
top:50%;
transform:translateY(-50%);
opacity:.8;
font-size:.9em;
}
</style>
<script
src="https://signals.yourdomain.com/embed/footer-pulse.min.js"
data-hub="https://signals.yourdomain.com"
data-container="#freshnews-latest"
data-lang="en"
data-label="Latest Signal: "
data-target="_blank"
></script>The max-width is intentional to keep footers clean; the full title remains in the DOM for crawlers.
Fallback: Static Link (optional)
<a href="https://signals.yourdomain.com/en/latest" target="_blank" rel="noopener noreferrer">Latest Signal ↗</a>Multi-Language Setup
If your site is available in multiple languages, use the snippet for each language. Select a tab to see the code for that locale.
<div id="freshnews-latest" class="freshnews-footer-pulse">
<noscript>
<a href="https://signals.yourdomain.com/en/latest" target="_blank" rel="noopener noreferrer">
Latest Signal ↗
</a>
</noscript>
</div>
<style>
.freshnews-footer-pulse a{
display:inline-block;
max-width:11ch;
white-space:nowrap;
overflow:hidden;
text-overflow:clip;
position:relative;
padding-right:1.1em;
}
.freshnews-footer-pulse a::after{
content:"↗";
position:absolute;
right:0;
top:50%;
transform:translateY(-50%);
opacity:.8;
font-size:.9em;
}
</style>
<script
src="https://signals.yourdomain.com/embed/footer-pulse.min.js"
data-hub="https://signals.yourdomain.com"
data-container="#freshnews-latest"
data-lang="en"
data-label="Latest Signal: "
data-target="_blank"
></script>High-Performance Features
Stale-While-Revalidate
Instant loads with freshness. The widget shows cached content immediately (0ms delay), then fetches fresh data in the background for soft-updates.
Skeleton Screens
No layout shift. The widget shows animated skeleton screens during loading instead of 'Loading...' text for better perceived performance.
Parallel Fetching
Branding and articles are fetched in parallel (non-blocking), so articles render immediately even if branding API is slow.
How New Articles Appear
Instant Render (0ms delay)
The widget uses LocalStorage caching to show content immediately. On first visit, articles load instantly from cache (0ms perceived delay), then fresh data is fetched in the background.
Soft Refresh
Background fetching ensures freshness without jarring the user experience. New articles appear seamlessly as they're published, with no layout shifts or loading spinners.
Discovery Advantage
💡 Why this matters for AI: Generative engines (GEO) and Answer engines (AEO) look for fast, authoritative HTML structures. Our widget's "Stale-While-Revalidate" approach ensures AI crawlers find your content immediately, while your users get an instant-load experience.
Additional Resources
For troubleshooting, contact us at contact@freshnews.ai.