Duolingo Tracker
/install duolingo-tracker
Duolingo Tracker Skill
Fetch Duolingo user stats via the unofficial Duolingo API. No official API key required — uses the same endpoints the Duolingo web app uses.
Authentication setup
Duolingo does not offer an official public API. The tracker uses the cookie-based session token from an active browser session.
One-time setup:
- Log in to duolingo.com in your browser
- Open DevTools → Application → Cookies →
duolingo.com - Copy the value of the
jwt_tokencookie - Save it:
export DUOLINGO_JWT="your_token_here"
Alternatively the user can provide their username only — a subset of public stats is available without auth.
Base URL
https://www.duolingo.com/2017-06-30
All requests should include:
Accept: application/json
Content-Type: application/json
Authorization: Bearer $DUOLINGO_JWT # omit if unauthenticated
Fetch user profile and streak
curl -s "https://www.duolingo.com/2017-06-30/users?username=USERNAME&fields=streak,xpGoal,xpGoalMetToday,lingots,totalXp,currentCourse,courses,streakData" \
-H "Authorization: Bearer $DUOLINGO_JWT" \
-H "Accept: application/json"
Key fields to surface:
| Field | Meaning |
|---|---|
streak |
Current day streak |
streakData.currentStreak.length |
Days in current streak |
streakData.longestStreak.length |
All-time longest streak |
totalXp |
Lifetime XP |
xpGoal |
Daily XP goal |
xpGoalMetToday |
Whether today's goal is met (bool) |
courses[].xp |
XP per language course |
courses[].crowns |
Crowns earned per course |
courses[].title |
Language name |
Fetch leaderboard / league info
# Get user ID first from profile, then:
curl -s "https://duolingo-leaderboards-prod.duolingo.com/leaderboards/7d9f5dd1-8423-491a-91f2-2532052038d8/users/USER_ID?get_users_only=true" \
-H "Authorization: Bearer $DUOLINGO_JWT"
League tiers (low → high): Bronze, Silver, Gold, Sapphire, Ruby, Emerald, Amethyst, Pearl, Obsidian, Diamond.
Fetch XP summary (last 7 days)
curl -s "https://www.duolingo.com/2017-06-30/users/USER_ID/xp_summaries?startDate=YYYY-MM-DD" \
-H "Authorization: Bearer $DUOLINGO_JWT"
Set startDate to 7 days ago. Returns daily XP totals — use these to show a mini chart or bar summary.
Displaying results
Present stats in this format:
🔥 Streak: 47 days (longest: 93 days)
⭐ Today: 150 XP / 100 XP goal ✓
📚 Active course: Spanish (es) — 3,420 XP, 42 crowns
🏆 League: Gold | Weekly XP: 892
Weekly XP:
Mon ████████ 180
Tue ██████ 120
Wed █████ 100
Thu ████████ 160
Fri ██████ 132
Sat ███ 60
Sun ████████ 140
If the daily goal is not yet met, flag it clearly so the user knows to practice today.
Public stats (no auth required)
For users who don't want to share their JWT, these endpoints work without auth for public profiles:
curl -s "https://www.duolingo.com/users/USERNAME" \
-H "Accept: application/json"
Returns streak, learning_language, level, totalXp, courses. Fewer fields but sufficient for a quick summary.
Common issues
| Problem | Fix |
|---|---|
| 401 Unauthorized | JWT expired — user needs to re-copy token from browser |
| Empty streak data | User hasn't practiced in 7+ days (streak likely 0) |
| Username not found | Check exact username (case-sensitive) on duolingo.com/profile |
| Rate limited (429) | Wait 60 seconds before retrying |
Privacy note
Always remind the user that their JWT token is sensitive — treat it like a password. Never log it or include it in outputs.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install duolingo-tracker - 安装完成后,直接呼叫该 Skill 的名称或使用
/duolingo-tracker触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Duolingo Tracker 是什么?
Fetch and display Duolingo learning stats: streak, XP, league, level, course progress, and daily/weekly summaries. Use this skill whenever the user asks abou... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 101 次。
如何安装 Duolingo Tracker?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install duolingo-tracker」即可一键安装,无需额外配置。
Duolingo Tracker 是免费的吗?
是的,Duolingo Tracker 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Duolingo Tracker 支持哪些平台?
Duolingo Tracker 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Duolingo Tracker?
由 The Mooorish(@elmoorish)开发并维护,当前版本 v0.1.0。