← Back to Skills Marketplace
acogkr

hoseo-lms

by Seongmin Hong · GitHub ↗ · v1.0.2
cross-platform ⚠ suspicious
375
Downloads
0
Stars
1
Active Installs
3
Versions
Install in OpenClaw
/install hoseo-lms
Description
LMS data aggregation and reporting tool for course information management.
README (SKILL.md)

\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

  1. Data Aggregation: Reads public LMS course pages and generates JSON reports\r
  2. Schedule Analysis: Parses deadlines and activity schedules\r
  3. 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
Usage Guidance
This skill mostly does what it says (scrapes course info and automates video playback), but there are practical and security concerns you should weigh before installing: - Dependency gap: The code uses Playwright (and thus a browser runtime) but the skill metadata only lists python3. You will likely need to pip install the requirements and run 'playwright install' to get browser binaries. Be careful when installing browser binaries on shared machines. - Credential risk: You must provide your LMS ID/password. The skill stores them in ~/.config/hoseo_lms/credentials.json (plaintext). If you proceed, use a dedicated account or rotate/change your password afterward; ensure the file permissions are set as instructed (chmod 600). - Read-only claim is misleading: The auto_attend automation performs UI actions (login, clicks, accepts dialogs, plays videos). Even if the code does not explicitly submit attendance, automating playback can cause the LMS to record views/attendance. Do not assume this tool cannot affect your LMS records. - Audit and test: If you don't fully trust the source, inspect the code (it is included) and test in a safe environment or with a throwaway account first. Confirm the exact behavior on a non-critical account before using real credentials. - If you decide to install: run pip install -r requirements.txt and then run the Playwright installer (e.g., 'playwright install chromium') as directed by Playwright docs, and review any network activity. Consider running the scraper-only parts first (no Playwright) to verify scraping behavior. Given the inconsistencies and potential for unintended server-side effects, only install if you trust the author and accept the credential risk; otherwise treat this as experimental tooling.
Capability Analysis
Type: OpenClaw Skill Name: hoseo-lms Version: 1.0.2 The hoseo-lms skill bundle is a specialized utility for Hoseo University students to aggregate course data and automate lecture video playback. The code follows secure practices by storing credentials locally in `~/.config/hoseo_lms/` with restricted file permissions (chmod 600) and limits all network activity to the official university domain (learn.hoseo.ac.kr). No evidence of data exfiltration, unauthorized remote execution, or malicious prompt injection was found; the tool functions exactly as described in its documentation.
Capability Assessment
Purpose & Capability
Name/description and code mostly align: scraper, summary, and a playback utility are present. However the skill requires Playwright (browser automation) to function but the registry metadata only declares python3; requirements.txt references playwright but no install spec is provided. The README and code expect Playwright/Chromium, which is a significant runtime dependency not declared in the skill metadata.
Instruction Scope
SKILL.md and README instruct creating a plaintext credentials file and running the scraper/auto_attend. The SKILL.md repeatedly states 'read-only' and 'no automatic attendance submission', yet auto_attend.py uses Playwright to log in, click lecture links, accept dialogs, and play videos — actions that can cause server-side state changes (attendance or view logs) even if the code doesn't explicitly POST attendance. The instructions grant the tool direct access to user credentials and browser-driven interactions that go beyond passive read-only scraping.
Install Mechanism
No formal install spec is provided in the registry. A requirements.txt (playwright>=1.40) is included and the README notes Playwright/Chromium is required, but the skill metadata does not declare this or provide an automated install step. Playwright requires downloading browser binaries (a high-impact install action) which is not surfaced. The absence of an install specification for Python dependencies is an incoherence and a usability/security risk.
Credentials
The only sensitive data requested is the user's LMS credentials (student id and password), stored by default at ~/.config/hoseo_lms/credentials.json. Requesting these credentials is proportionate to logging into the LMS, but storing them in plaintext on disk is sensitive (the skill suggests chmod 600, which helps). No unrelated environment variables or unrelated service credentials are requested.
Persistence & Privilege
The skill does not request always:true and does not require system-wide configuration. It is user-invocable and can be invoked autonomously by the agent (platform default), which is normal. The skill does write a local data.json and credentials file under ~/.config/hoseo_lms, which is expected for this functionality.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install hoseo-lms
  3. After installation, invoke the skill by name or use /hoseo-lms
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.2
feat: change skill.md
v1.0.1
Initial release
v1.0.0
Initial release
Metadata
Slug hoseo-lms
Version 1.0.2
License
All-time Installs 1
Active Installs 1
Total Versions 3
Frequently Asked Questions

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.

💬 Comments