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.
1

DNS Setup (CNAME)

Point your Signals subdomain to our ingest endpoint with a CNAME record.

signals.your-domain.com  →  CNAME  →  ingest.freshnews.ai

DNS propagation can take a short time.

2

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.xml
3

Footer 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.