A knowledge base on artificial intelligence in education — research, pedagogy, policy, and practice. Automatically ingests new AI-in-education papers daily from arXiv and Semantic Scholar.
Live site: edtechdev.github.io/aied
Every day at 9:00 AM, a Hermes Agent cron job:
- Searches arXiv (cs.CY, cs.HC, cs.CL, cs.AI) and Semantic Scholar for new AI-in-education papers
- Filters for relevance (AI/LLM applied to education, tutoring, feedback, grading, assessment)
- Skips already-ingested papers (checks
raw/papers/) - Ingests new papers: raw source → concept page → back-links → index → log → journal
- Regenerates the static HTML site with search and tag filtering
- Sends a Telegram summary of what was added, skipped, and not relevant
# View the wiki locally
python3 -m http.server 8080 --directory static-site/
# Search the wiki (CLI)
grep -r "search term" concepts/
# Check web server status
ss -tlnp | grep 8080The pipeline runs as a Hermes Agent cron job. Key configurable parameters:
- Schedule:
0 9 * * *(9 AM daily) - Search sources: arXiv categories (cs.CY, cs.HC, cs.CL, cs.AI) + Semantic Scholar
- Search keywords: title terms for education relevance
- Date window: Auto-advances each run based on last ingestion date
- Notification: Delivers to a Telegram chat
wiki/
├── concepts/ # Synthesized concept pages (one per paper/topic)
├── raw/
│ ├── papers/ # Raw arXiv paper text files
│ ├── articles/ # Non-arXiv article text files
│ └── assets/ # Media files
├── entities/ # Notable organizations, people, products
├── queries/ # Saved queries and daily digests
├── comparisons/ # Side-by-side analyses
├── SCHEMA.md # Domain, conventions, tag taxonomy, page thresholds
├── index.md # Full alphabetical content catalog
├── journal.md # Reverse-chronological index of all ingested papers
├── log.md # Audit log of every wiki action
└── static-site/ # Generated static HTML site (deployed to GitHub Pages)
├── index.html # Homepage with search, tag filter, all pages
├── journal.html # Full reverse-chronological journal
├── search.html # FlexSearch-powered full-text search
├── tags.html # Tag directory
├── tags/ # Per-tag listing pages
├── search_index.json / .js
└── pages/ # Individual HTML pages
The pipeline uses only standard tools:
- arXiv API: No key required, rate-limited (~1 req/3s)
- Semantic Scholar API: No key required, rate-limited (~100 req/5min)
- pdftotext: For PDF extraction (from poppler-utils)
- curl: For API calls (with --retry for rate limiting)
- Python stdlib: xml.etree, json, re, hashlib, subprocess, PyYAML
- FlexSearch 0.7.31: Client-side search (CDN, no install needed)
- Pico CSS: UI framework (CDN, no install needed)
| Problem | Check |
|---|---|
| Web server not responding | ss -tlnp | grep 8080 — restart if needed: python3 -m http.server 8080 --directory static-site/ & |
| arXiv API 429 errors | Rate limit hit — retries built in (--retry 3 --retry-delay 2), wait 1 min |
| Static site out of date | Regenerate via scripts/generate-static-site.py in the research-wiki skill |
| YAML parsing errors | Check concept page frontmatter — titles with colons must be quoted: title: "X: Y" |
| Missing pages | Check index.md count vs. ls concepts/*.md | wc -l — may need re-sort |
To add a new search source (e.g., ERIC, PubMed), update the Hermes cron job prompt with the new source and search parameters.
To ingest a specific paper immediately, send the arXiv URL or OSF/EdArXiv preprint link to Hermes. The research-wiki skill handles the full workflow automatically.