[object Object]

← back to Allnewsdaily

yoloforever C1 (DTD-B): add 3 original news-literacy guides + /guides routes + JSON-LD + internal linking — turns bare directory into a real publisher (AdSense low-value-content fix)

d7d48fb44de77ab4c41aa84d15a5691ef783ed6d · 2026-08-05 12:16:23 -0700 · Steve

Files touched

Diff

commit d7d48fb44de77ab4c41aa84d15a5691ef783ed6d
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Aug 5 12:16:23 2026 -0700

    yoloforever C1 (DTD-B): add 3 original news-literacy guides + /guides routes + JSON-LD + internal linking — turns bare directory into a real publisher (AdSense low-value-content fix)
---
 content/guides.js | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/index.html |  1 +
 server.js         | 48 +++++++++++++++++++++++++++
 3 files changed, 148 insertions(+)

diff --git a/content/guides.js b/content/guides.js
new file mode 100644
index 0000000..26c862f
--- /dev/null
+++ b/content/guides.js
@@ -0,0 +1,99 @@
+// Original editorial content for All News Daily — news-literacy guides that make
+// the site a genuine publisher, not just an outbound-link directory. Written for
+// readers of a global newsroom index: how to actually USE the outlets we list.
+// Plain objects so server.js can render them into full HTML pages.
+
+const GUIDES = [
+  {
+    slug: 'how-to-evaluate-a-news-source',
+    title: 'How to Evaluate a News Source: A Practical Checklist',
+    dek: 'Before you trust a headline, run the outlet through these seven questions. It takes ninety seconds and it changes what you believe.',
+    updated: '2026-08-05',
+    body: `
+<p>All News Daily indexes hundreds of newsrooms across every region and language. That is useful only if you can tell a serious outlet from a content farm dressed up to look like one. Reputable and unreliable sources increasingly share the same fonts, the same breaking-news banners, the same urgent tone. The difference is underneath the design, and you can surface it fast.</p>
+
+<h2>1. Who owns it, and do they say so?</h2>
+<p>A credible outlet tells you who is behind it. Look for an <em>About</em> page that names an actual publisher, parent company, or non-profit — and a masthead that names editors, not just "the team." Ownership is not disqualifying in itself; a billionaire, a state, or an advocacy group can own a newsroom. What matters is that the ownership is disclosed so you can weight it.</p>
+
+<h2>2. Is there a byline, and is it a real person?</h2>
+<p>Original reporting carries a byline attached to a reporter with a track record you can follow. Anonymous or single-initial bylines, or a site where every article is written by "Staff," are a signal that no individual is accountable for the claims.</p>
+
+<h2>3. Does it separate reporting from opinion?</h2>
+<p>Trustworthy outlets label opinion, analysis, and sponsored content distinctly from straight news. When commentary is served as reporting with no label, the outlet is either careless or deliberately blurring the line to move your opinion while looking neutral.</p>
+
+<h2>4. Where do the facts come from?</h2>
+<p>Follow the sourcing. Good journalism links to primary documents, names its sources, or explains why a source is anonymous. A story built entirely on "reports suggest" and screenshots of other posts is aggregation, not reporting — fine to read, but not something to treat as confirmation.</p>
+
+<h2>5. Does it correct itself?</h2>
+<p>Every newsroom makes errors. The honest ones publish corrections and date them. A corrections policy — and visible corrections — is one of the strongest positive signals a source can give you.</p>
+
+<h2>6. What does the URL and the wording actually say?</h2>
+<p>Check the domain for look-alikes of established brands, and read the headline against the body. If the headline promises a certainty the article never delivers, the outlet is optimizing for clicks over accuracy.</p>
+
+<h2>7. Can you triangulate it?</h2>
+<p>The single best habit: before you share, find the same claim in two independent outlets that don't cite each other. Our regional directory makes this quick — open two newsrooms from different owners and compare how each frames the same event.</p>
+
+<p class="guide-cta">Use the <a href="/">All News Daily directory</a> to line up two or three independent sources on any story before you decide it's true.</p>`,
+  },
+  {
+    slug: 'understanding-media-bias',
+    title: 'Understanding Media Bias: The Kinds That Actually Change What You Think',
+    dek: '"Bias" is not one thing. Knowing the four kinds — and which ones matter — makes you a sharper reader of any outlet in our index.',
+    updated: '2026-08-05',
+    body: `
+<p>People talk about media bias as if every outlet sits on a single left-to-right line. That model is too crude to be useful. Bias shows up in at least four distinct ways, and only some of them should change how much you trust a report.</p>
+
+<h2>Selection bias: what gets covered at all</h2>
+<p>The most powerful bias is invisible: the stories an outlet chooses to run, and the ones it never touches. Two newsrooms can report accurately and still leave you with opposite pictures of the world simply by covering different events. This is why reading across our directory — outlets from different regions and owners — matters more than finding one "unbiased" source that does not exist.</p>
+
+<h2>Framing bias: how the same fact is told</h2>
+<p>The same unemployment number is "a recovery gains steam" or "growth slows sharply" depending on the frame. Framing is not lying; it is emphasis. Watch the verbs, the adjectives, and which number leads the sentence. When you notice the frame, you can extract the underlying fact from it.</p>
+
+<h2>Source bias: who gets quoted</h2>
+<p>A report that quotes three officials from one side and none from the other is skewed even if every quote is accurate. Strong journalism seeks out the people its story is about and the people who disagree. Count the voices.</p>
+
+<h2>Commercial and audience bias: who it's for</h2>
+<p>Outlets have audiences, and audiences have expectations. A source that never publishes anything its readers dislike is optimizing for loyalty over truth. The tell is predictability: if you can guess the conclusion of every article from the outlet's name, it is serving its audience, not informing it.</p>
+
+<h2>What to do about it</h2>
+<p>You cannot remove bias, and no "view from nowhere" outlet is waiting to be found. The working solution is structural: read outlets with <em>different</em> biases on the same story and let the overlap show you the durable facts. That is the entire premise of a global newsroom directory — bias becomes a feature you triangulate against, not a flaw you have to eliminate.</p>
+
+<p class="guide-cta">Pick a story, then open two outlets with opposite leanings from the <a href="/">directory</a>. The facts both report are the ones you can most safely believe.</p>`,
+  },
+  {
+    slug: 'spotting-misinformation',
+    title: 'Spotting Misinformation: Eight Verification Techniques Newsrooms Actually Use',
+    dek: 'The methods professional fact-checkers rely on are simple enough to use on your phone in the time it takes to read a post.',
+    updated: '2026-08-05',
+    body: `
+<p>Misinformation spreads because verifying a claim feels like work. It usually isn't. Here are eight techniques that newsroom verification desks use every day, stripped down to what you can do yourself before you believe or share something.</p>
+
+<h2>1. Read past the headline</h2>
+<p>A large share of misleading shares come from people who reacted to a headline the article itself contradicts. Open it. Read the body. Surprisingly often the "shocking claim" is walked back in paragraph three.</p>
+
+<h2>2. Find the original</h2>
+<p>Screenshots strip context. Trace a quote, statistic, or image back to where it first appeared. If you cannot find an original — only copies citing copies — treat it as unverified.</p>
+
+<h2>3. Reverse-search the image</h2>
+<p>Old photos are constantly recycled as "breaking." A reverse image search tells you when and where a picture actually first appeared. A "today" image that has been online for six years is your answer.</p>
+
+<h2>4. Check the date</h2>
+<p>Real stories get re-shared out of season, especially during a crisis. Confirm the event is current, not a true story from three years ago repackaged as new.</p>
+
+<h2>5. Look for the second source</h2>
+<p>If something genuinely major happened, more than one credible newsroom is reporting it. A world-changing claim that appears in exactly one obscure outlet and nowhere else is almost always false. Our <a href="/">directory</a> is built for exactly this check.</p>
+
+<h2>6. Separate the claim from the conclusion</h2>
+<p>A post can contain a true fact and a false conclusion. "The bill passed" may be accurate; "which proves X" may not follow at all. Verify each part separately.</p>
+
+<h2>7. Watch for manufactured urgency</h2>
+<p>"Share before they delete this" is not a journalistic instinct; it is a manipulation technique designed to bypass your verification step. Urgency is a reason to slow down, not speed up.</p>
+
+<h2>8. Consider the incentive</h2>
+<p>Ask who benefits if you believe and spread this. Content built to enrage tends to be engineered, not reported. That doesn't make it false — but it earns a second look before you pass it on.</p>
+
+<p class="guide-cta">Bookmark the <a href="/">All News Daily directory</a> and make "find it in a second independent outlet" your default before sharing anything.</p>`,
+  },
+];
+
+module.exports = { GUIDES };
diff --git a/public/index.html b/public/index.html
index 6b6de57..7202840 100644
--- a/public/index.html
+++ b/public/index.html
@@ -123,6 +123,7 @@
   <header>
     <div class="bar">
       <div class="brand"><span class="dot"></span>All News Daily<small>global newsroom directory</small></div>
+      <a href="/guides" style="color:var(--fg-dim);text-decoration:none;font-weight:600;font-size:14px;margin-left:16px">News-Literacy Guides →</a>
       <div class="controls">
         <input id="q" type="search" placeholder="Search outlet / country…" autocomplete="off" />
         <select id="region"><option value="">All regions</option></select>
diff --git a/server.js b/server.js
index 856ceed..3a95a37 100644
--- a/server.js
+++ b/server.js
@@ -2,6 +2,7 @@ const express = require('express');
 const fs = require('fs');
 const path = require('path');
 const { spawn } = require('child_process');
+const { GUIDES } = require('./content/guides');
 
 const app = express();
 const PORT = process.env.PORT || 9788;
@@ -50,6 +51,53 @@ app.get('/', (req, res) => {
 
 app.get('/ads.txt', (_q, res) => res.type('text/plain').send('google.com, pub-5278231299883833, DIRECT, f08c47fec0942fa0\n'));
 
+// ---- Original editorial content (news-literacy guides) --------------------
+// Turns the site from a bare outbound-link directory into a real publisher.
+const esc = (s) => String(s).replace(/[&<>"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c]));
+const ADSENSE = '<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5278231299883833" crossorigin="anonymous"></script>';
+const GUIDE_CSS = `body{margin:0;background:#0d1117;color:#e6edf3;font:17px/1.7 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
+a{color:#58a6ff}.wrap{max-width:760px;margin:0 auto;padding:28px 22px 80px}
+.top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #21262d;padding-bottom:14px;margin-bottom:26px}
+.brand{font-weight:700;color:#e6edf3;text-decoration:none;font-size:18px}
+h1{font-size:30px;line-height:1.25;margin:8px 0 6px}h2{font-size:20px;margin:30px 0 8px}
+.dek{color:#9da7b3;font-size:18px;margin:0 0 6px}.meta{color:#6e7681;font-size:13px;margin-bottom:24px}
+.guide-cta{margin-top:30px;padding:16px 18px;background:#161b22;border:1px solid #21262d;border-radius:10px}
+.related{margin-top:44px;border-top:1px solid #21262d;padding-top:20px}.related a{display:block;margin:8px 0}
+footer{color:#6e7681;font-size:13px;border-top:1px solid #21262d;margin-top:40px;padding-top:16px}`;
+const guidePage = ({ title, desc, canonical, jsonld, inner }) => `<!doctype html><html lang="en"><head>
+<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>${esc(title)} · All News Daily</title>
+<meta name="description" content="${esc(desc)}">
+<link rel="canonical" href="https://allnewsdaily.com${canonical}">
+<meta property="og:type" content="article"><meta property="og:title" content="${esc(title)}">
+<meta property="og:description" content="${esc(desc)}"><meta property="og:site_name" content="All News Daily">
+${jsonld ? `<script type="application/ld+json">${JSON.stringify(jsonld)}</script>` : ''}
+<style>${GUIDE_CSS}</style>${ADSENSE}</head><body><div class="wrap">
+<div class="top"><a class="brand" href="/">All News Daily</a><a href="/guides">All guides</a></div>
+${inner}
+<footer>&copy; ${new Date().getFullYear()} All News Daily — an independent global newsroom directory &amp; news-literacy resource. Educational content only.</footer>
+</div></body></html>`;
+
+app.get('/guides', (_req, res) => {
+  const items = GUIDES.map((g) => `<article style="margin:22px 0"><h2 style="margin:0 0 4px"><a href="/guides/${g.slug}">${esc(g.title)}</a></h2><p class="dek">${esc(g.dek)}</p></article>`).join('');
+  res.type('html').send(guidePage({
+    title: 'News-Literacy Guides', desc: 'Practical guides to evaluating news sources, understanding media bias, and spotting misinformation — from All News Daily.',
+    canonical: '/guides',
+    inner: `<h1>News-Literacy Guides</h1><p class="dek">How to actually use a global newsroom directory: evaluate sources, read past bias, and verify before you share.</p>${items}`,
+  }));
+});
+
+app.get('/guides/:slug', (req, res, next) => {
+  const g = GUIDES.find((x) => x.slug === req.params.slug);
+  if (!g) return next();
+  const related = GUIDES.filter((x) => x.slug !== g.slug).map((x) => `<a href="/guides/${x.slug}">${esc(x.title)} →</a>`).join('');
+  const jsonld = { '@context': 'https://schema.org', '@type': 'Article', headline: g.title, description: g.dek, datePublished: g.updated, dateModified: g.updated, author: { '@type': 'Organization', name: 'All News Daily' }, publisher: { '@type': 'Organization', name: 'All News Daily' } };
+  res.type('html').send(guidePage({
+    title: g.title, desc: g.dek, canonical: `/guides/${g.slug}`, jsonld,
+    inner: `<h1>${esc(g.title)}</h1><p class="dek">${esc(g.dek)}</p><div class="meta">Updated ${esc(g.updated)} · All News Daily</div>${g.body}<div class="related"><strong>Related guides</strong>${related}</div>`,
+  }));
+});
+
 app.get('/api/outlets', (req, res) => {
   res.json({ outlets: mergeOutlets(), updatedAt: new Date().toISOString() });
 });

← ef10de6 AdSense: loader + ads.txt (ca-pub-5278231299883833) — prep,  ·  back to Allnewsdaily  ·  yoloforever C2: add About/Contact/Privacy trust pages (AdSen 661d70e →