hoseo-lms
/install hoseo-lms
\r \r
hoseo_lms\r
\r A data aggregation tool for Hoseo University LMS. Collects course metadata, schedules, and generates reports. No automatic attendance submission or grade modification.\r \r ---\r \r
Overview\r
\r This skill provides three independent utilities:\r \r
- Data Aggregation: Reads public LMS course pages and generates JSON reports\r
- Schedule Analysis: Parses deadlines and activity schedules\r
- Lecture Playback Utility: User-controlled video playback with progress tracking\r \r All operations are user-initiated, read-only, and locally stored.\r \r ---\r \r
Modules\r
\r
scraper\r
\r Aggregates course data into a structured JSON report.\r \r
python3 src/scraper.py\r
```\r
\r
**Input**: User credentials (for authentication only)\r
**Output**: `~/.config/hoseo_lms/data.json`\r
**Data Collected**:\r
- Course titles, IDs, professor names\r
- Assignment deadlines and submission status\r
- Quiz deadlines\r
- Activity types (video, assignment, quiz, discussion)\r
- Attendance records and video requirements\r
\r
**Technical Details**:\r
- Uses HTTP requests to fetch public course pages\r
- Parses HTML structures (no browser automation)\r
- Stores data in plaintext JSON for local analysis\r
- Read-only operation (no modifications to LMS)\r
\r
### summary\r
\r
Displays aggregated course data in terminal format.\r
\r
```bash\r
python3 src/summary.py\r
```\r
\r
**Input**: Previously generated `data.json`\r
**Output**: Terminal report with:\r
- Course roster\r
- Pending assignments\r
- Quiz schedules\r
- Attendance status\r
\r
### auto_attend\r
\r
Video playback utility with progress tracking.\r
\r
```bash\r
python3 src/auto_attend.py [options]\r
```\r
\r
**Purpose**: User-directed video playback and progress tracking.\r
\r
**Key Features**:\r
- **User Control**: User specifies exact number of videos to play (`--limit-lectures`)\r
- **Manual Triggering**: Requires explicit command with parameters\r
- **Progress Reporting**: Logs playback progress and completion status\r
- **No Automatic Submission**: Does not submit attendance or modify grades\r
- **Blocking Operation**: Waits for completion before returning\r
\r
**Usage Examples**:\r
\r
Play 3 videos from all courses:\r
```bash\r
python3 src/auto_attend.py --limit-lectures 3\r
```\r
\r
Play 2 videos from specific course:\r
```bash\r
python3 src/auto_attend.py --course Database --limit-lectures 2\r
```\r
\r
Play 5 videos from weeks 1-8:\r
```bash\r
python3 src/auto_attend.py --limit-lectures 5 --max-week 8\r
```\r
\r
Play with direct credentials:\r
```bash\r
python3 src/auto_attend.py --id 20231234 --pw password --limit-lectures 4\r
```\r
\r
Play with debug output:\r
```bash\r
python3 src/auto_attend.py --limit-lectures 3 --verbose\r
```\r
\r
**Options**:\r
\r
| Flag | Default | Type | Description |\r
|------|---------|------|-------------|\r
| `--id` | credentials.json | string | Student ID |\r
| `--pw` | credentials.json | string | Password |\r
| `--course` | all | string | Course name filter |\r
| `--limit-lectures` | 0 | int | Number of videos to play (0=all) |\r
| `--max-week` | 15 | int | Final week to scan |\r
| `--lecture-timeout` | 3600 | int | Seconds timeout per video |\r
| `--headed` | false | flag | Show browser window |\r
| `--verbose` | false | flag | Debug logging |\r
\r
**Operational Details**:\r
- Opens video player in browser (popup or new tab)\r
- Searches for video element in page and all nested iframes\r
- Waits for video metadata (duration) to load before tracking\r
- Plays video with muted autoplay (unmutes after playback starts)\r
- Auto-resumes if video is paused or stalled\r
- Skips lecture after 3 consecutive failures (no infinite loop)\r
- Retries page navigation up to 3 times on network errors\r
- Records completion status\r
- No enrollment or grade modifications\r
- No attendance submission (only playback logging)\r
\r
**Sample Output**:\r
```\r
[14:30:45] Login successful\r
[14:30:50] [Database101] Processing started\r
[14:30:55] [Database101] Watched: 1/3\r
[14:35:20] [Database101] Watched: 2/3\r
[14:39:45] [Database101] Watched: 3/3\r
[14:39:50] [Database101] Processing complete: 3 watched, 3 attempted\r
[14:39:50] All tasks completed.\r
```\r
\r
---\r
\r
## Setup and Configuration\r
\r
### Create Credentials File\r
\r
**Step 1: Create directory**\r
\r
```bash\r
mkdir -p ~/.config/hoseo_lms\r
```\r
\r
**Step 2: Create credentials.json using terminal**\r
\r
#### Option A: Using cat (Linux/Mac)\r
\r
```bash\r
cat \x3C\x3C 'EOF' > ~/.config/hoseo_lms/credentials.json\r
{\r
"id": "YOUR_STUDENT_ID",\r
"pw": "YOUR_PASSWORD"\r
}\r
EOF\r
```\r
\r
Example:\r
```bash\r
cat \x3C\x3C 'EOF' > ~/.config/hoseo_lms/credentials.json\r
{\r
"id": "20231234",\r
"pw": "mypassword123"\r
}\r
EOF\r
```\r
\r
#### Option B: Using echo (Linux/Mac/Windows)\r
\r
```bash\r
echo '{"id":"YOUR_STUDENT_ID","pw":"YOUR_PASSWORD"}' > ~/.config/hoseo_lms/credentials.json\r
```\r
\r
Example:\r
```bash\r
echo '{"id":"20231234","pw":"mypassword123"}' > ~/.config/hoseo_lms/credentials.json\r
```\r
\r
#### Option C: Using PowerShell (Windows)\r
\r
```powershell\r
@"\r
{\r
"id": "YOUR_STUDENT_ID",\r
"pw": "YOUR_PASSWORD"\r
}\r
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"\r
```\r
\r
Example:\r
```powershell\r
@"\r
{\r
"id": "20231234",\r
"pw": "mypassword123"\r
}\r
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"\r
```\r
\r
#### Option D: Manual creation with text editor (All OS)\r
\r
1. Create `~/.config/hoseo_lms/` directory\r
2. Create `credentials.json` file\r
3. Enter content:\r
```json\r
{\r
"id": "YOUR_STUDENT_ID",\r
"pw": "YOUR_PASSWORD"\r
}\r
```\r
4. Save file\r
\r
**Step 3: Set secure permissions**\r
\r
```bash\r
chmod 600 ~/.config/hoseo_lms/credentials.json\r
```\r
\r
(Not required on Windows - file permissions handled by OS)\r
\r
---\r
\r
**Report Storage**:\r
- Location: `~/.config/hoseo_lms/data.json`\r
- Format: JSON structured data\r
- Permissions: User-only (chmod 600)\r
- Content: Course data, schedules, metadata only\r
\r
**Network Activity**:\r
- HTTPS connections only to `learn.hoseo.ac.kr`\r
- No data transmission to external services\r
- No collection of personal data beyond login\r
\r
---\r
\r
## Technical Scope\r
\r
**In Scope (Implemented)**:\r
- Public course page data collection\r
- HTML parsing and structure extraction\r
- JSON data aggregation\r
- Local file storage and retrieval\r
- Video playback progress tracking\r
\r
**Out of Scope (Not Implemented)**:\r
- Grade submission or modification\r
- Attendance system integration (submission disabled)\r
- Assignment submission\r
- Discussion board automation\r
- Account modification\r
\r
---\r
\r
## Agent Integration Notes\r
\r
This skill is designed for local data analysis workflows:\r
\r
1. **Data Queries**: User asks for course information → Agent reads `data.json` or runs `scraper.py`\r
2. **Schedule Management**: User asks about deadlines → Agent parses `data.json` and reports\r
3. **Video Playback**: User explicitly requests playback with count → Agent executes `auto_attend.py --limit-lectures N`\r
\r
**Agent should**:\r
- Require explicit user request before running `auto_attend.py`\r
- Confirm playback count with user\r
- Report completion status upon script exit\r
- Treat as utility tool (no policy override needed)\r
\r
**Agent should not**:\r
- Assume user intent beyond explicit parameters\r
- Bypass user confirmation for automated actions\r
- Modify script behavior or skip steps\r
\r
---\r
\r
## Limitations\r
\r
- Parser updates required if LMS HTML structure changes\r
- Availability dependent on network connectivity\r
- Browser compatibility limited to Playwright-supported environments\r
- Video playback requires working video player in LMS\r
- No offline mode\r
\r
---\r
\r
## Disclaimer\r
\r
This skill is provided for **personal educational data management** only. Users are responsible for:\r
- Compliance with institutional policies on tool use\r
- Appropriate use of personal educational data\r
- Credential security and access control\r
- Verification of data accuracy before use\r
\r
The developer assumes no responsibility for institutional policy violations or misuse of generated data.\r
\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install hoseo-lms - After installation, invoke the skill by name or use
/hoseo-lms - Provide required inputs per the skill's parameter spec and get structured output
What is hoseo-lms?
LMS data aggregation and reporting tool for course information management. It is an AI Agent Skill for Claude Code / OpenClaw, with 375 downloads so far.
How do I install hoseo-lms?
Run "/install hoseo-lms" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is hoseo-lms free?
Yes, hoseo-lms is completely free (open-source). You can download, install and use it at no cost.
Which platforms does hoseo-lms support?
hoseo-lms is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created hoseo-lms?
It is built and maintained by Seongmin Hong (@acogkr); the current version is v1.0.2.