Skip to content
Draft
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 28 additions & 6 deletions .github/workflows/news-article-generator.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,27 +269,49 @@ For the data retrieved:
For each article type with significant updates:

1. **Create HTML file** at `news/YYYY-MM-DD-{slug}-{lang}.html`
2. **Include proper structure**:

2. **HTML Requirements:**
- **MUST** use `<link rel="stylesheet" href="../styles.css">` - NO embedded `<style>` tags
- Follow "Latest news and analysis from Sweden's Riksdag. The Economist-style political journalism covering parliament, government, and agencies with systematic transparency."
- Use semantic HTML5: `<article>`, `<header>`, `<section>`, `<footer>`
- Include proper `<html lang="{lang}">` and `dir="rtl"` for Arabic/Hebrew
- Mobile-responsive (handled by styles.css)

3. **Metadata Structure**:
- SEO metadata (title, description, keywords)
- Open Graph tags
- Schema.org NewsArticle
- Twitter Card tags
- Schema.org NewsArticle structured data
- YAML frontmatter (in HTML comment)
- Hreflang tags for language alternatives
- Hreflang tags for all language alternatives

3. **Write article content** following The Economist style:
4. **Write article content** following The Economist style:
- **Lead paragraph** (50 words): Who, what, when, where, why
- **Context** (150-200 words): Background and history
- **Evidence** (300-400 words): Data, quotes, documents
- **Analysis** (200-300 words): Interpretation and implications
- **Conclusion** (100 words): Synthesis and broader significance

4. **Source attribution**:
5. **CSS Classes Available in styles.css:**
- `.news-article` - Main container
- `.article-header` - Header with title and meta
- `.article-meta` - Date, time, article type
- `.lede` - Lead paragraph with accent border
- `.article-content` - Main content area
- `.context-box` - Information/background boxes
- `.event-calendar` - Calendar grid (for Week Ahead)
- `.watch-section` - Key points section
- `.article-footer` - Footer with sources
- `.article-sources` - Sources and attribution
- `.back-to-news` - Navigation link

6. **Source attribution**:
- Link to Riksdag documents (dok_id)
- Cite government sources
- Reference MCP tool calls
- Include data timestamps

5. **Generate requested languages**:
7. **Generate requested languages**:
- Parse the `languages` input
- Expand presets: "nordic" → "en,sv,da,no,fi", "eu-core" → "en,sv,de,fr,es,nl", "all" → all 14
- Generate article for each language with proper title/subtitle
Expand Down
140 changes: 110 additions & 30 deletions .github/workflows/news-evening-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,46 +176,126 @@ Structure the analysis around these editorial pillars:

**Article Type:** `analysis`

**HTML Template Requirements:**
- **MUST** use `<link rel="stylesheet" href="../styles.css">` - NO embedded `<style>` tags
- Follow "Latest news and analysis from Sweden's Riksdag. The Economist-style political journalism covering parliament, government, and agencies with systematic transparency."
- Include proper meta tags, Open Graph, Twitter Card, and Schema.org structured data
- Use semantic HTML5 structure with `<article>`, `<header>`, `<section>`, `<footer>`

**Structure for each language version:**

```html
<!-- Evening Analysis article structure -->
<article>
<h1>{Analytical headline capturing day's key theme}</h1>
<h2>{Subtitle with specific data point}</h2>
<!DOCTYPE html>
<html lang="{lang}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{title}</title>
<meta name="description" content="{subtitle}">
<meta name="keywords" content="{keywords}">
<meta name="author" content="James Pether Sörling, CISSP, CISM">
<link rel="canonical" href="https://riksdagsmonitor.com/news/{slug}">

<div class="article-meta">
<time>{date}</time>
<span class="read-time">{X} min read</span>
<span class="article-type">Evening Analysis</span>
</div>
<!-- Open Graph / Social Media -->
<meta property="og:title" content="{title}">
<meta property="og:description" content="{subtitle}">
<meta property="og:type" content="article">
<meta property="og:url" content="https://riksdagsmonitor.com/news/{slug}">
<meta property="og:image" content="https://cia.sourceforge.io/cia-logo.png">

<div class="article-content">
<p class="lead">{Opening paragraph: analytical thesis}</p>

<h3>The Day's Main Story</h3>
<p>{400-800 words of lead story analysis}</p>

<h3>Parliamentary Pulse</h3>
<p>{200-400 words summarizing legislative activity}</p>

<h3>Government Watch</h3>
<p>{200-300 words on executive activity}</p>
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{title}">
<meta name="twitter:description" content="{subtitle}">

<!-- Hreflang for all language alternatives -->
<link rel="alternate" hreflang="en" href="https://riksdagsmonitor.com/news/{baseSlug}-en.html">
<link rel="alternate" hreflang="sv" href="https://riksdagsmonitor.com/news/{baseSlug}-sv.html">
<!-- ... (all 14 languages) -->
Copy link

Copilot AI Feb 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hreflang example doesn’t note the repo’s Norwegian convention: article filenames use -no.html, but hreflang should be nb (Bokmål). Without calling this out, the workflow may generate hreflang="no", which would diverge from existing news article alternates. Consider explicitly including the nb alternate pointing to the -no.html file in the template/example.

Suggested change
<!-- ... (all 14 languages) -->
<!-- NOTE: Norwegian articles use filename suffix "-no.html" but hreflang code "nb" (Bokmål) -->
<link rel="alternate" hreflang="nb" href="https://riksdagsmonitor.com/news/{baseSlug}-no.html">
<!-- Include all 14 languages following existing conventions -->

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added documentation note in workflow: "Norwegian articles use filename suffix -no.html but hreflang code nb (Bokmål)" with explicit example showing all 14 languages. Commit: bcf9de5


<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700&family=Share+Tech+Mono&display=swap" rel="stylesheet">

<!-- CRITICAL: Use external stylesheet, NO embedded CSS -->
<link rel="stylesheet" href="../styles.css">

<!-- Schema.org NewsArticle structured data -->
<script type="application/ld+json">{...}</script>
</head>
<body>
<div class="news-article">
<header class="article-header">
<h1>{Analytical headline capturing day's key theme}</h1>
<div class="article-meta">
<time datetime="{isoDate}">{formattedDate}</time>
<span class="separator">•</span>
<span class="read-time">{X} min read</span>
<span class="separator">•</span>
<span class="article-type">Evening Analysis</span>
</div>
</header>

<h3>Opposition Dynamics</h3>
<p>{200-300 words on opposition and cross-party}</p>
<article class="article-content">
<p class="lede">{Opening paragraph: analytical thesis}</p>

<h2>The Day's Main Story</h2>
<p>{400-800 words of lead story analysis}</p>

<h2>Parliamentary Pulse</h2>
<p>{200-400 words summarizing legislative activity}</p>

<h2>Government Watch</h2>
<p>{200-300 words on executive activity}</p>

<h2>Opposition Dynamics</h2>
<p>{200-300 words on opposition and cross-party}</p>

<h2>Looking Ahead</h2>
<p>{100-200 words on tomorrow's agenda}</p>

<div class="context-box">
<h3>By the Numbers</h3>
<ul>{Key statistics from today's data}</ul>
</div>

<section class="watch-section">
<h2>What to Watch This Week</h2>
<ul class="watch-list">
<li><strong>{Topic}:</strong> {Description}</li>
</ul>
</section>
</article>

<h3>Looking Ahead</h3>
<p>{100-200 words on tomorrow's agenda}</p>
<footer class="article-footer">
<div class="article-sources">
<h3>Sources and Data</h3>
<p><strong>Data Sources:</strong> {List riksdag-regering-mcp tools with document IDs}</p>
<p><strong>Generated by:</strong> Automated News System using riksdag-regering-mcp</p>
<p><strong>Analysis Tools:</strong> AI-assisted journalism with human editorial oversight</p>
</div>
<div class="article-nav">
<a href="../index.html" class="back-to-news">Back to News</a>
</div>
</footer>
</div>

<div class="sources">
<h4>Sources</h4>
<ul>{List all riksdag-regering-mcp tools used with document IDs}</ul>
</div>
</article>
</body>
</html>
```

**CSS Classes Available in styles.css:**
- `.news-article` - Main container
- `.article-header` - Header section
- `.article-meta` - Date, time, type info
- `.lede` - Lead paragraph with left border
- `.article-content` - Main content area
- `.context-box` - Information boxes
- `.watch-section` - "What to Watch" section
- `.article-footer` - Footer with sources
- `.article-sources` - Sources section
- `.back-to-news` - Back button

### Step 4: Generate All Language Versions

For each language in the requested set:
Expand Down
20 changes: 17 additions & 3 deletions .github/workflows/news-realtime-monitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,27 @@ For HIGH significance events, generate articles following **The Economist style*
- **Reaction** (200 words): Statements from parties, analysis
- **Implications** (150 words): What happens next

**Important HTML requirements:**
- Use the cyberpunk theme (dark background, cyan/magenta accents)
**HTML Requirements:**
- **MUST** use `<link rel="stylesheet" href="../styles.css">` - NO embedded `<style>` tags
- Follow "Latest news and analysis from Sweden's Riksdag. The Economist-style political journalism covering parliament, government, and agencies with systematic transparency."
- Include proper `<html lang="{lang}">` and `dir="rtl"` for Arabic/Hebrew
- Schema.org `NewsArticle` structured data
- Open Graph and Twitter Card meta tags
- Hreflang alternates for all generated languages
- Mobile-responsive layout
- Use semantic HTML5: `<article>`, `<header>`, `<section>`, `<footer>`
- Mobile-responsive (handled by styles.css)

**Available CSS Classes in styles.css:**
- `.news-article` - Main container
- `.article-header` - Header with title and meta
- `.article-meta` - Date, time, article type
- `.lede` - Lead paragraph with accent border
- `.article-content` - Main content area
- `.context-box` - Information/background boxes
- `.watch-section` - Key points section
- `.article-footer` - Footer with sources
- `.article-sources` - Sources and attribution
- `.back-to-news` - Navigation link

### Step 4: Update Indexes and Sitemap

Expand Down
Loading
Loading