fivsevn-devlog

Intake

intake/ generates the public daily intake page.

The page is a lightweight daily intake surface with three parts:

Architecture

intake/sources.md
    -> canonical hand-maintained source registry
    -> controls On the shelf / 本日上架

intake/build.py
    -> parses sources.md
    -> generates feeds.yml
    -> fetches RSS items
    -> assembles index.html and gpt.md

intake/scripts/daily_postcard.py
    -> generates the daily postcard fragment

intake/scripts/daily_field_sample.py
    -> generates the Daily Field Sample fragment

intake/feeds.yml
    -> generated intermediate file; the committed copy also supplies base configuration

intake/index.html
    -> generated public page

intake/gpt.md
    -> generated by build.py
    -> renamed to llm-context.md by GitHub Actions

intake/llm-context.md
    -> generated reading context for AI; not hand-maintained

Files

intake/
├── README.md
├── sources.md
├── feeds.yml
├── requirements.txt
├── build.py
├── index.html
├── llm-context.md
├── scripts/
│   ├── daily_postcard.py
│   └── daily_field_sample.py
└── data/                         generated during a build, not committed by Actions
    ├── daily_postcard.html
    ├── daily_postcard.json
    ├── daily_field_sample.html
    └── daily_field_sample.json

gpt.md exists between the build and rename steps; the repository-facing output is llm-context.md.

Source registry

Edit intake/sources.md to change On the shelf / 本日上架 sources, RSS URLs, and per-source fetch counts.

Each source uses this shape inside a fenced source block, not an ordinary yaml block. Preserve the surrounding category, display and section definitions already in sources.md.

name: Example Source
section: science_news
feed_url: https://example.com/feed.xml
source_cap: 6
site_url: https://example.com/
source_type: specialist_media
authority_level: specialist
reliability_score: 4
professional_value: 4
use_role: baseline

If a source has no usable feed, keep it as a website source; change these fields in its existing source block:

feed_url: ''
source_cap: 0
site_url: https://example.com/

Spec reference

Field meanings and enum values are defined in fivsevn-spec:

intake/sources.md is the current selected source list. fivsevn-spec keeps the stable field rules and enum reference.

Generated files

Do not hand-edit these as source files:

intake/feeds.yml
intake/index.html
intake/gpt.md
intake/llm-context.md
intake/data/daily_postcard.html
intake/data/daily_postcard.json
intake/data/daily_field_sample.html
intake/data/daily_field_sample.json

They are generated by scripts and may be overwritten. The current workflow commits index.html and llm-context.md; it does not commit the regenerated feeds.yml or data/. Do not use the committed feeds.yml as a fresh export of the source registry.

Manual build

From the repository root:

pip install -r intake/requirements.txt
python intake/scripts/daily_postcard.py
python intake/scripts/daily_field_sample.py
python intake/build.py
mv intake/gpt.md intake/llm-context.md

The final rename matches the Actions output. Running build.py alone leaves the AI context at gpt.md; it does not update llm-context.md by itself.

GitHub Actions

The page is generated by Build Intake Page; configuration: .github/workflows/build-news.yml.

Editing boundary

Change On the shelf sources, RSS URLs, or per-source fetch counts
-> edit intake/sources.md

Change page structure, HTML assembly, header/footer, or rendering logic
-> edit intake/build.py

Change the postcard module
-> edit intake/scripts/daily_postcard.py

Change the Daily Field Sample module
-> edit intake/scripts/daily_field_sample.py

intake/ is a current-facing generated page, not a permanent archive or canonical content axis. Published reading notes belong in posts, natsci or netcom.

Checked: 2026-10-13. These documentation changes do not alter the fetch schedule or scripts.