ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

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.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/axel5o5/edstem
Or

EdStem

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:

  1. Log into EdStem and navigate to your course
  2. Look at the URL: https://edstem.org/us/courses/<course_id>/
  3. 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:

  1. Log into EdStem in your browser
  2. Open Developer Tools → Network tab
  3. Reload any EdStem page
  4. Find an API request and copy the Authorization: Bearer ... token
  5. Update ED_TOKEN in scripts/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

Author@axel5o5
Stars4473
Views0
Updated2026-05-01
View Author Profile
AI Skill Finder

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 skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-axel5o5-edstem": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.