← 返回 Skills 市场
podberezovk

BilimClass

作者 podberezovk · GitHub ↗ · v1.1.0 · MIT-0
cross-platform ⚠ suspicious
92
总下载
1
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install bilimclass
功能描述
Access BilimClass school platform (Kazakhstan) for schedule, homework, grades, and diary via API. Triggers on schedule/raspisanie/расписание, homework/domash...
使用说明 (SKILL.md)

BilimClass — School Schedule, Homework & Grades

Access BilimClass API for Kazakhstan school data. Supports schedule, homework, and quarterly/yearly grades.

Setup

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:

  1. Open bilimclass.kz → grades section
  2. F12 → Network → find request to journal-service.bilimclass.kz/diary
  3. Copy the Authorization: Bearer ... header value

To refresh main token: browser console → localStorage.token

Required config fields in .env.json:

{
  "bilimclass": {
    "token": "\x3CYOUR_TOKEN>",
    "journalToken": "\x3CYOUR_JOURNAL_TOKEN>",
    "schoolId": "\x3CYOUR_SCHOOL_ID>",
    "eduYear": "\x3CEDUCATION_YEAR>",
    "userId": "\x3CYOUR_USER_ID>",
    "studentSchoolUuid": "\x3CYOUR_STUDENT_UUID>",
    "studentGroups": [
      {"uuid": "\x3CUUID>", "name": "Group name"},
      {"uuid": "\x3CUUID>", "name": "Group name"}
    ]
  }
}

studentGroups — all student groups for the user. The first one should be the current group for grades.

Quick Usage

python3 \x3Cskill_dir>/scripts/bilimclass.py schedule [DD.MM.YYYY]
python3 \x3Cskill_dir>/scripts/bilimclass.py diary [YYYY-MM-DD]
python3 \x3Cskill_dir>/scripts/bilimclass.py week [DD.MM.YYYY]      # Monday of that week
python3 \x3Cskill_dir>/scripts/bilimclass.py grades \x3CYYYY-MM-DD> \x3CYYYY-MM-DD>
python3 \x3Cskill_dir>/scripts/bilimclass.py quarter-report [Q3|Q4]
python3 \x3Cskill_dir>/scripts/bilimclass.py today
python3 \x3Cskill_dir>/scripts/bilimclass.py tomorrow

All output is JSON — format it nicely for the user.

Schedule Format

Each day contains:

  • date_label — display date (e.g. "06 АПРЕЛЯ")
  • schedule[] — lessons with:
    • subject.label — subject name
    • subject.subjectId — integer ID (used for grade mapping)
    • teacher — teacher full name
    • homework.body — homework text
    • time.label — time range (e.g. "08:00 - 08:40")

Diaries (Homework Detail)

Multiple student groups. The script iterates all studentGroups — it handles dedup automatically.

Grades

Grades use a separate service (journal-service.bilimclass.kz) with the journalToken.

API Endpoints

  • Schedule + subject names: https://api.bilimclass.kz/api/v4/os/clientoffice/schedule
    • Auth: Bearer {token} (main JWT)
    • Headers: X-School-Id, X-Localization: ru
  • Grades: https://journal-service.bilimclass.kz/diary
    • Auth: Bearer {journalToken} (journal JWT)
    • Headers: X-School-Id, X-Localization: ru, external: 1

How grades work

  1. Query /diary with schoolId, eduYear, userId, studentGroupUuid, date (ISO 8601)
  2. Response is {"data": {\x3CscheduleUuid>: {formattedScore, sor, soch, ...}}}
  3. Each of formattedScore/sor/soch contains:
    • mark — the score (integer)
    • markMax — maximum (usually 10, sometimes 24 for СОЧ)
    • subjectIdinteger ID for mapping to subject names
    • date, markType, comment
  4. scheduleUuid (the key) is a UUID, not the same as subjectId
  5. Subject names come from the schedule API — map via subjectId from lesson data

Grading scale (4th quarter rules)

  • 5: ≥ 87%
  • 4: ≥ 65%
  • 3: ≥ 50%
  • 2: \x3C 50%

Quarter date ranges (approximate for 2025-2026)

  • Q3: January 8 — March 22
  • Q4: March 31 — current date

Notes

  • Some subjects may have no grades in a quarter if no assessments have been given yet
  • Absent-due-to-illness marks use markType: "sick" — exclude from percentage calculations
  • Always use the first studentGroup (index 0) for current grades
  • journalToken expires ~every 2 weeks — check 401 responses and prompt user to refresh
  • When reporting grades, sort alphabetically by subject name
  • Always show: subject name, %, predicted grade, number of assessments

Notes

  • Both APIs use Bearer \x3Ctoken> style auth but with different tokens
  • Schedule API uses main token; Grades API uses journalToken
  • SUBJECT_NAMES dict is populated dynamically from schedule API — if subject name missing, show Предмет #{id} and note the gap
安全使用建议
This skill appears to be an unofficial BilimClass client that needs your BilimClass JWTs and account IDs stored in ~/.openclaw/.env.json. That is coherent with its purpose, but do the following before installing: 1) Inspect the SKILL.md and scripts/bilimclass.py in a plain-text/hex editor for hidden (zero-width) characters or unexpected instructions (pre-scan flagged unicode control chars). 2) Only provide tokens if you trust the code — these JWTs grant access to your BilimClass account; the main token is long-lived. 3) Keep ~/.openclaw/.env.json private (file permissions 600) and ensure it is gitignored. 4) Confirm the script only calls the two BilimClass endpoints shown (api.bilimclass.kz and journal-service.bilimclass.kz) — no other external hosts should appear. 5) If unsure, run the Python script locally without installing as a skill and observe network calls (use a network monitor or sandbox) before enabling as an OpenClaw skill. 6) Ask the publisher to fix the metadata mismatch (registry vs SKILL.md) and explain why unicode control chars are present; absence of a clear explanation increases risk.
功能分析
Type: OpenClaw Skill Name: bilimclass Version: 1.1.0 The bilimclass skill is a legitimate tool designed to fetch school schedule, homework, and grades from the Kazakhstan BilimClass platform. It reads user-provided API tokens from a local configuration file (~/.openclaw/.env.json) and communicates exclusively with the official service domains (api.bilimclass.kz and journal-service.bilimclass.kz). The code in bilimclass.py and the instructions in SKILL.md are consistent with the stated purpose and contain no evidence of data exfiltration, malicious execution, or prompt injection.
能力评估
Purpose & Capability
Name/description, README, SKILL.md, and the script all align: the skill reads a local OpenClaw .env.json entry and calls BilimClass schedule and journal APIs. However, registry metadata (no required env/config) does not match the SKILL.md's explicit requirement of ~/.openclaw/.env.json; that mismatch should be clarified.
Instruction Scope
Instructions ask you to extract sensitive tokens (localStorage.token and an Authorization header) via browser DevTools and store them in ~/.openclaw/.env.json — this is expected for an unofficial client but is inherently sensitive. Additionally, a pre-scan flagged 'unicode-control-chars' in SKILL.md (prompt‑injection pattern), which could be used to hide or manipulate text; the presence of such characters in the runtime instructions is suspicious and should be examined (open SKILL.md in a hex/clean-text viewer).
Install Mechanism
Instruction-only skill plus a Python script; no install spec/downloading of arbitrary archives. Requires Python requests (checked at runtime). No remote install URLs or extracted archives were found.
Credentials
The skill requests a set of BilimClass-specific tokens and IDs (token, journalToken, schoolId, eduYear, userId, studentSchoolUuid, studentGroups). These are proportional to the stated purpose. Note: registry-level metadata didn't list these requirements, but SKILL.md explicitly requires the ~/.openclaw/.env.json file with these fields. Tokens are long‑lived (main token ~1 year) — storing them in a file increases risk if the file isn't protected.
Persistence & Privilege
The skill does not request always:true, does not attempt to modify other skills or system settings, and only reads a local OpenClaw .env.json. No elevated persistence or cross-skill config changes detected.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install bilimclass
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /bilimclass 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.0
**Adds support for grades and improved multi-token configuration.** - Added detailed instructions for obtaining and refreshing both main and journal tokens. - Expanded API info: now supports quarterly and yearly grades via a new grades service. - Updated environment configuration requirements to include `journalToken`, `eduYear`, `userId`, `studentSchoolUuid`, and `studentGroups`. - Added command-line usage for new grades features (e.g., `grades`, `quarter-report`). - Clarified subject mapping for grade reporting, and provided grading scale reference. - Included comprehensive setup, troubleshooting, and token expiry details.
v1.0.0
Initial release: Access BilimClass school platform data for Kazakhstan students. - Retrieve schedule, grades, homework, and diary via BilimClass API. - Supports queries in Russian or transliterated keywords (e.g., "расписание", "домашка", "дневник", "оценки"). - Handles multiple student groups and automatically deduplicates entries. - CLI scripts for quick data fetch (outputs JSON for external formatting). - Secure token setup with instructions for renewal if expired.
元数据
Slug bilimclass
版本 1.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

BilimClass 是什么?

Access BilimClass school platform (Kazakhstan) for schedule, homework, grades, and diary via API. Triggers on schedule/raspisanie/расписание, homework/domash... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 92 次。

如何安装 BilimClass?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install bilimclass」即可一键安装,无需额外配置。

BilimClass 是免费的吗?

是的,BilimClass 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

BilimClass 支持哪些平台?

BilimClass 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 BilimClass?

由 podberezovk(@podberezovk)开发并维护,当前版本 v1.1.0。

💬 留言讨论