Install
openclaw skills install bilimclassAccess BilimClass school platform (Kazakhstan) for schedule, homework, grades, and diary via API. Triggers on schedule/raspisanie/расписание, homework/domash...
openclaw skills install bilimclassAccess BilimClass API for Kazakhstan school data. Supports schedule, homework, and quarterly/yearly grades.
Two tokens required in ~/.openclaw/.env.json:
bilimclass.token — main JWT from localStorage.token (RS256, valid ~1 year). Used for schedule and subject names.bilimclass.journalToken — journal JWT from API headers on grades page (HS512, expires ~2 weeks). Used for grades only.Both expire — token annually, journalToken biweekly. To refresh journalToken:
journal-service.bilimclass.kz/diaryAuthorization: Bearer ... header valueTo refresh main token: browser console → localStorage.token
.env.json:{
"bilimclass": {
"token": "<YOUR_TOKEN>",
"journalToken": "<YOUR_JOURNAL_TOKEN>",
"schoolId": "<YOUR_SCHOOL_ID>",
"eduYear": "<EDUCATION_YEAR>",
"userId": "<YOUR_USER_ID>",
"studentSchoolUuid": "<YOUR_STUDENT_UUID>",
"studentGroups": [
{"uuid": "<UUID>", "name": "Group name"},
{"uuid": "<UUID>", "name": "Group name"}
]
}
}
studentGroups— all student groups for the user. The first one should be the current group for grades.
python3 <skill_dir>/scripts/bilimclass.py schedule [DD.MM.YYYY]
python3 <skill_dir>/scripts/bilimclass.py diary [YYYY-MM-DD]
python3 <skill_dir>/scripts/bilimclass.py week [DD.MM.YYYY] # Monday of that week
python3 <skill_dir>/scripts/bilimclass.py grades <YYYY-MM-DD> <YYYY-MM-DD>
python3 <skill_dir>/scripts/bilimclass.py quarter-report [Q3|Q4]
python3 <skill_dir>/scripts/bilimclass.py today
python3 <skill_dir>/scripts/bilimclass.py tomorrow
All output is JSON — format it nicely for the user.
Each day contains:
date_label — display date (e.g. "06 АПРЕЛЯ")schedule[] — lessons with:
subject.label — subject namesubject.subjectId — integer ID (used for grade mapping)teacher — teacher full namehomework.body — homework texttime.label — time range (e.g. "08:00 - 08:40")Multiple student groups. The script iterates all studentGroups — it handles dedup automatically.
Grades use a separate service (journal-service.bilimclass.kz) with the journalToken.
https://api.bilimclass.kz/api/v4/os/clientoffice/schedule
Bearer {token} (main JWT)X-School-Id, X-Localization: ruhttps://journal-service.bilimclass.kz/diary
Bearer {journalToken} (journal JWT)X-School-Id, X-Localization: ru, external: 1/diary with schoolId, eduYear, userId, studentGroupUuid, date (ISO 8601){"data": {<scheduleUuid>: {formattedScore, sor, soch, ...}}}formattedScore/sor/soch contains:
mark — the score (integer)markMax — maximum (usually 10, sometimes 24 for СОЧ)subjectId — integer ID for mapping to subject namesdate, markType, commentscheduleUuid (the key) is a UUID, not the same as subjectIdsubjectId from lesson datamarkType: "sick" — exclude from percentage calculationsstudentGroup (index 0) for current grades401 responses and prompt user to refreshBearer <token> style auth but with different tokensSUBJECT_NAMES dict is populated dynamically from schedule API — if subject name missing, show Предмет #{id} and note the gap