edstem
Fetch, sync, and organize EdStem discussion threads for any course or institution. Use when checking for new EdStem posts, syncing course discussion forums, reviewing student/staff questions and answers, or when the user asks to check EdStem, review course discussions, or stay updated on class forums.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/axel5o5/edstemEdStem
Fetch and organize EdStem discussion threads from any course or institution with automatic staff/student differentiation.
Quick Start
Fetch recent threads for any course:
cd /home/axel/.openclaw/workspace/skills/edstem/scripts
python3 fetch-edstem.py <course_id> [output_dir] [--course-name "Course Name"]
Examples:
# Fetch to default directory (./edstem-<course_id>)
python3 fetch-edstem.py 92041
# Fetch to specific directory
python3 fetch-edstem.py 92041 ./machine-learning
# Specify course name for clearer output
python3 fetch-edstem.py 92041 --course-name "Machine Learning"
# Combine directory and course name
python3 fetch-edstem.py 92041 ./ml-course --course-name "Machine Learning"
# Fetch more threads (default is 10)
python3 fetch-edstem.py 92041 --limit 25
Finding Your Course ID
To find your EdStem course ID:
- Log into EdStem and navigate to your course
- Look at the URL:
https://edstem.org/us/courses/<course_id>/ - The number in the URL is your course ID
Alternatively, use the API to list your courses:
curl -H "Authorization: Bearer YOUR_TOKEN" https://us.edstem.org/api/user | jq '.courses[] | {id: .course.id, name: .course.name}'
What Gets Fetched
For each course:
- threads.json - Full thread list with metadata
- thread-XXX.md - Individual threads formatted as markdown
- Thread title, category, timestamps
- Original post content
- All answers and comments
- [STAFF] or [STUDENT] tags on every post
Features
- Institution-agnostic: Works with any school using EdStem
- Staff differentiation: Clearly marks instructor/TA posts vs student posts
- Structured output: Markdown format for easy reading and searching
- API-based: Uses EdStem's official API (no scraping)
- Flexible output: Choose your own output directory and organization scheme
Authentication
The skill uses a bearer token stored in the Python script. To use with your own account:
- Log into EdStem in your browser
- Open Developer Tools → Network tab
- Reload any EdStem page
- Find an API request and copy the
Authorization: Bearer ...token - Update
ED_TOKENinscripts/fetch-edstem.py
Current token location: Line 20 in scripts/fetch-edstem.py
If API calls fail (401 Unauthorized), your token likely expired and needs refresh.
Scripts
fetch-edstem.py (recommended)
Full-featured Python script with markdown formatting and staff/student differentiation.
Usage:
python3 scripts/fetch-edstem.py <course_id> [output_dir] [options]
Options:
output_dir- Where to save threads (default:./edstem-<course_id>)--course-name NAME- Display name for the course--limit N- Number of threads to fetch (default: 10)
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-axel5o5-edstem": {
"enabled": true,
"auto_update": true
}
}
}