- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Wiki articles / sync (pull_request) Successful in 12s
Documents ai-tool (label + optional edu-sharing aiTools concept URI), ai-edited and ai-training with their twillo ccm:commonlicense_ai_* fields and read rules, as written by image-license.js / read by ai-label.js. Step 4 now names the events that write the x tag today (30142 cover and package, 30023 cover). |
||
| .forgejo/workflows | ||
| articles | ||
| scripts | ||
| README.md | ||
edufeed wiki articles
Source of truth for the NIP-54 wiki articles (kind 30818) that the edufeed
account publishes:
npub1hhpplya3ut9h2cyvant6pgq2w7thnkfk0hyhnz7e7gflqmy4h3yqp2p4pk
(hex bdc21f93b1e2cb75608cecd7a0a00a779779d9367dc9798bd9f213f06c95bc48).
They explain how edufeed uses Nostr, so that other clients and services can interoperate: event shapes, app-specific tags, and resolution rules.
How publishing works
-
One file per article:
articles/<d-tag>.md. The filename is the d-tag, so changing it creates a new article instead of updating the old one. -
Write in Markdown (GFM). At publish time it is converted to Djot, the content format NIP-54 has required since 2026-03 (nostr-protocol/nips#2242).
-
Frontmatter becomes tags:
--- title: Human-readable title # required → ["title", …] summary: One sentence for lists # optional → ["summary", …] t: [edufeed, licenses] # optional → one ["t", …] per entry h: <community pubkey> # optional → ["h", …], shows it in the edufeed community status: draft # optional; drafts are never published --- -
Pull request: CI runs
scripts/sync.py checkand lists which articles would change on the relays. -
Merge to main: CI runs
scripts/sync.py publish. It publishes only articles whose Djot content or tags differ from the live event. Merging is publishing: relays keep what they receive, so review before merging. -
Locally,
python3 scripts/sync.py checkshows the same report (needspandoc≥ 3.1.12 andnak). It needs no key.
The CI secret NOSTR_NSEC holds the edufeed key. sync.py refuses to
publish when that key is not the edufeed key.
Articles
| d-tag | Title | Source | Covers (app features / kinds) |
|---|---|---|---|
edufeed-amb-nip |
NIP-AMB | edufeed/nips AMB.md |
Learning resources, kind 30142 |
edufeed-vocab-nip |
NIP-VOCAB | edufeed/nips VOCAB.md |
SKOS vocabularies, kinds 39737–39739 |
edufeed-didactic-nip |
NIP-DIDACTIC | edufeed/nips DIDACTIC.md |
Didactic projects and measures, kinds 30143/30144 |
license-events-nope |
License events for uploaded files | here | Blossom uploads, kind 1063 license and AI tags, x links from 30142/30023 |
edufeed-community-content-sharing |
Sharing and reading community content | here | Communikey 10222, follow set 30000 d=communities, h tags, NIP-18 reposts, 30223 overrides, publisher window |
Backlog
Features with app-specific conventions that no article covers yet, by
priority. Each one becomes a PR adding articles/<d-tag>.md.
- Communikey groups: community types (open / moderated / closed),
access tiers, channels, admin section overrides (30223), publisher window.
Draft exists in edufeed-app
docs/nips/communikey-groups.md. - NIP-29 conventions on groups.edufeed.org: UUID group ids, per-community
endpoint
/c/<rootId>, metadata flag rules,t=dm,rtags in the 10009 group list, invite DM format, polls in rooms, member-gated media. - AMB in edufeed: NIP-32 form-variant and Bildungsbereich labels,
cover_color, creator vs. indexer,hasPart/isPartOf, the Konfiext:namespace, curriculum fields, and the NIP-50 search query syntax. - Interactive resources and pads (webxdc): 30142
m/xtags, the dual-purpose 1063, channel sessions 9450/24450. - Metadata forms (kind 30168 → 30142). Draft in edufeed-app
docs/guides/metadata-forms.md. - Video calls: NIP-29 AV, the in-call
edufeed.calldata messages, and guest links once they are merged. - Agents: 30175/30177, presence 20001, companion pairing. Wait until the feature is enabled on prod.
- Scientific publications: kind 30040 and where it deviates from NKBIP-01.
- Small conventions (possibly one collection article): educator fields
in kind 0, waves, the highlight
textquoteselectortag, the calendarparticipanttag, 30002 relay overrides, gated/curated/WoT mode, NIP-78 app-data d-tags, Concord zaps, Google login.