No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steffen Rörtgen d5c4ae97a8
All checks were successful
Wiki articles / sync (pull_request) Successful in 12s
License article: twillo-aligned AI tags, precise x-tag users
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).
2026-10-03 08:40:32 +02:00
.forgejo/workflows Add index, Djot sync script and publish workflow 2026-10-03 08:39:54 +02:00
articles License article: twillo-aligned AI tags, precise x-tag users 2026-10-03 08:40:32 +02:00
scripts Add index, Djot sync script and publish workflow 2026-10-03 08:39:54 +02:00
README.md Add index, Djot sync script and publish workflow 2026-10-03 08:39:54 +02:00

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 check and 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 check shows the same report (needs pandoc ≥ 3.1.12 and nak). 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.

  1. 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.
  2. NIP-29 conventions on groups.edufeed.org: UUID group ids, per-community endpoint /c/<rootId>, metadata flag rules, t=dm, r tags in the 10009 group list, invite DM format, polls in rooms, member-gated media.
  3. AMB in edufeed: NIP-32 form-variant and Bildungsbereich labels, cover_color, creator vs. indexer, hasPart/isPartOf, the Konfi ext: namespace, curriculum fields, and the NIP-50 search query syntax.
  4. Interactive resources and pads (webxdc): 30142 m/x tags, the dual-purpose 1063, channel sessions 9450/24450.
  5. Metadata forms (kind 30168 → 30142). Draft in edufeed-app docs/guides/metadata-forms.md.
  6. Video calls: NIP-29 AV, the in-call edufeed.call data messages, and guest links once they are merged.
  7. Agents: 30175/30177, presence 20001, companion pairing. Wait until the feature is enabled on prod.
  8. Scientific publications: kind 30040 and where it deviates from NKBIP-01.
  9. Small conventions (possibly one collection article): educator fields in kind 0, waves, the highlight textquoteselector tag, the calendar participant tag, 30002 relay overrides, gated/curated/WoT mode, NIP-78 app-data d-tags, Concord zaps, Google login.