intake/ generates the public daily intake page.
The page is a lightweight daily intake surface with three parts:
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
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.
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/
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.
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.
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.
The page is generated by Build Intake Page; configuration: .github/workflows/build-news.yml.
0 */5 * * *, five planned runs per day at 00:00, 05:00, 10:00, 15:00 and 20:00 UTC. Actual runs can be delayed.Run workflow in Actions. A push to sources.md does not itself trigger this workflow.build.py → rename gpt.md to llm-context.md → commit generated outputs.data/ is temporary build output; the workflow removes data/ and the temporary gpt.md from Git tracking.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.