hoseo_lms

LMS data aggregation and reporting tool for course information management.

3,891 stars

Best use case

hoseo_lms is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

LMS data aggregation and reporting tool for course information management.

Teams using hoseo_lms should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/hoseo-lms/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/acogkr/hoseo-lms/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/hoseo-lms/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How hoseo_lms Compares

Feature / Agenthoseo_lmsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

LMS data aggregation and reporting tool for course information management.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# hoseo_lms

A data aggregation tool for Hoseo University LMS. Collects course metadata, schedules, and generates reports. No automatic attendance submission or grade modification.

---

## Overview

This skill provides three independent utilities:

1. **Data Aggregation**: Reads public LMS course pages and generates JSON reports
2. **Schedule Analysis**: Parses deadlines and activity schedules
3. **Lecture Playback Utility**: User-controlled video playback with progress tracking

All operations are **user-initiated**, **read-only**, and **locally stored**.

---

## Modules

### scraper

Aggregates course data into a structured JSON report.

```bash
python3 src/scraper.py
```

**Input**: User credentials (for authentication only)
**Output**: `~/.config/hoseo_lms/data.json`
**Data Collected**:
- Course titles, IDs, professor names
- Assignment deadlines and submission status
- Quiz deadlines
- Activity types (video, assignment, quiz, discussion)
- Attendance records and video requirements

**Technical Details**:
- Uses HTTP requests to fetch public course pages
- Parses HTML structures (no browser automation)
- Stores data in plaintext JSON for local analysis
- Read-only operation (no modifications to LMS)

### summary

Displays aggregated course data in terminal format.

```bash
python3 src/summary.py
```

**Input**: Previously generated `data.json`
**Output**: Terminal report with:
- Course roster
- Pending assignments
- Quiz schedules
- Attendance status

### auto_attend

Video playback utility with progress tracking.

```bash
python3 src/auto_attend.py [options]
```

**Purpose**: User-directed video playback and progress tracking.

**Key Features**:
- **User Control**: User specifies exact number of videos to play (`--limit-lectures`)
- **Manual Triggering**: Requires explicit command with parameters
- **Progress Reporting**: Logs playback progress and completion status
- **No Automatic Submission**: Does not submit attendance or modify grades
- **Blocking Operation**: Waits for completion before returning

**Usage Examples**:

Play 3 videos from all courses:
```bash
python3 src/auto_attend.py --limit-lectures 3
```

Play 2 videos from specific course:
```bash
python3 src/auto_attend.py --course Database --limit-lectures 2
```

Play 5 videos from weeks 1-8:
```bash
python3 src/auto_attend.py --limit-lectures 5 --max-week 8
```

Play with direct credentials:
```bash
python3 src/auto_attend.py --id 20231234 --pw password --limit-lectures 4
```

Play with debug output:
```bash
python3 src/auto_attend.py --limit-lectures 3 --verbose
```

**Options**:

| Flag | Default | Type | Description |
|------|---------|------|-------------|
| `--id` | credentials.json | string | Student ID |
| `--pw` | credentials.json | string | Password |
| `--course` | all | string | Course name filter |
| `--limit-lectures` | 0 | int | Number of videos to play (0=all) |
| `--max-week` | 15 | int | Final week to scan |
| `--lecture-timeout` | 3600 | int | Seconds timeout per video |
| `--headed` | false | flag | Show browser window |
| `--verbose` | false | flag | Debug logging |

**Operational Details**:
- Opens video player in browser (popup or new tab)
- Searches for video element in page and all nested iframes
- Waits for video metadata (duration) to load before tracking
- Plays video with muted autoplay (unmutes after playback starts)
- Auto-resumes if video is paused or stalled
- Skips lecture after 3 consecutive failures (no infinite loop)
- Retries page navigation up to 3 times on network errors
- Records completion status
- No enrollment or grade modifications
- No attendance submission (only playback logging)

**Sample Output**:
```
[14:30:45] Login successful
[14:30:50] [Database101] Processing started
[14:30:55] [Database101] Watched: 1/3
[14:35:20] [Database101] Watched: 2/3
[14:39:45] [Database101] Watched: 3/3
[14:39:50] [Database101] Processing complete: 3 watched, 3 attempted
[14:39:50] All tasks completed.
```

---

## Setup and Configuration

### Create Credentials File

**Step 1: Create directory**

```bash
mkdir -p ~/.config/hoseo_lms
```

**Step 2: Create credentials.json using terminal**

#### Option A: Using cat (Linux/Mac)

```bash
cat << 'EOF' > ~/.config/hoseo_lms/credentials.json
{
  "id": "YOUR_STUDENT_ID",
  "pw": "YOUR_PASSWORD"
}
EOF
```

Example:
```bash
cat << 'EOF' > ~/.config/hoseo_lms/credentials.json
{
  "id": "20231234",
  "pw": "mypassword123"
}
EOF
```

#### Option B: Using echo (Linux/Mac/Windows)

```bash
echo '{"id":"YOUR_STUDENT_ID","pw":"YOUR_PASSWORD"}' > ~/.config/hoseo_lms/credentials.json
```

Example:
```bash
echo '{"id":"20231234","pw":"mypassword123"}' > ~/.config/hoseo_lms/credentials.json
```

#### Option C: Using PowerShell (Windows)

```powershell
@"
{
  "id": "YOUR_STUDENT_ID",
  "pw": "YOUR_PASSWORD"
}
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"
```

Example:
```powershell
@"
{
  "id": "20231234",
  "pw": "mypassword123"
}
"@ | Out-File -Encoding UTF8 "$env:USERPROFILE\.config\hoseo_lms\credentials.json"
```

#### Option D: Manual creation with text editor (All OS)

1. Create `~/.config/hoseo_lms/` directory
2. Create `credentials.json` file
3. Enter content:
```json
{
  "id": "YOUR_STUDENT_ID",
  "pw": "YOUR_PASSWORD"
}
```
4. Save file

**Step 3: Set secure permissions**

```bash
chmod 600 ~/.config/hoseo_lms/credentials.json
```

(Not required on Windows - file permissions handled by OS)

---

**Report Storage**:
- Location: `~/.config/hoseo_lms/data.json`
- Format: JSON structured data
- Permissions: User-only (chmod 600)
- Content: Course data, schedules, metadata only

**Network Activity**:
- HTTPS connections only to `learn.hoseo.ac.kr`
- No data transmission to external services
- No collection of personal data beyond login

---

## Technical Scope

**In Scope (Implemented)**:
- Public course page data collection
- HTML parsing and structure extraction
- JSON data aggregation
- Local file storage and retrieval
- Video playback progress tracking

**Out of Scope (Not Implemented)**:
- Grade submission or modification
- Attendance system integration (submission disabled)
- Assignment submission
- Discussion board automation
- Account modification

---

## Agent Integration Notes

This skill is designed for local data analysis workflows:

1. **Data Queries**: User asks for course information → Agent reads `data.json` or runs `scraper.py`
2. **Schedule Management**: User asks about deadlines → Agent parses `data.json` and reports
3. **Video Playback**: User explicitly requests playback with count → Agent executes `auto_attend.py --limit-lectures N`

**Agent should**:
- Require explicit user request before running `auto_attend.py`
- Confirm playback count with user
- Report completion status upon script exit
- Treat as utility tool (no policy override needed)

**Agent should not**:
- Assume user intent beyond explicit parameters
- Bypass user confirmation for automated actions
- Modify script behavior or skip steps

---

## Limitations

- Parser updates required if LMS HTML structure changes
- Availability dependent on network connectivity
- Browser compatibility limited to Playwright-supported environments
- Video playback requires working video player in LMS
- No offline mode

---

## Disclaimer

This skill is provided for **personal educational data management** only. Users are responsible for:
- Compliance with institutional policies on tool use
- Appropriate use of personal educational data
- Credential security and access control
- Verification of data accuracy before use

The developer assumes no responsibility for institutional policy violations or misuse of generated data.

Related Skills

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research

agent-autonomy-kit

3891
from openclaw/skills

Stop waiting for prompts. Keep working.

Workflow & Productivity

Meeting Prep

3891
from openclaw/skills

Never walk into a meeting unprepared again. Your agent researches all attendees before calendar events—pulling LinkedIn profiles, recent company news, mutual connections, and conversation starters. Generates a briefing doc with talking points, icebreakers, and context so you show up informed and confident. Triggered automatically before meetings or on-demand. Configure research depth, advance timing, and output format. Walking into meetings blind is amateur hour—missed connections, generic small talk, zero leverage. Use when setting up meeting intelligence, researching specific attendees, generating pre-meeting briefs, or automating your prep workflow.

Workflow & Productivity

self-improvement

3891
from openclaw/skills

Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.

Agent Intelligence & Learning

botlearn-healthcheck

3891
from openclaw/skills

botlearn-healthcheck — BotLearn autonomous health inspector for OpenClaw instances across 5 domains (hardware, config, security, skills, autonomy); triggers on system check, health report, diagnostics, or scheduled heartbeat inspection.

DevOps & Infrastructure

linkedin-cli

3891
from openclaw/skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

Content & Documentation

notebooklm

3891
from openclaw/skills

Google NotebookLM 非官方 Python API 的 OpenClaw Skill。支持内容生成(播客、视频、幻灯片、测验、思维导图等)、文档管理和研究自动化。当用户需要使用 NotebookLM 生成音频概述、视频、学习材料或管理知识库时触发。

Data & Research

小红书长图文发布 Skill

3891
from openclaw/skills

## 概述

Content & Documentation