🧪 Skills

hoseo-lms

--- name: hoseo_lms description: LMS data aggregation and reporting tool for course information management. homepage: https://learn.hoseo.ac.kr metadata: { "openclaw": { "r

v1.0.2
❤️ 0
⬇️ 113
👁 1
Share

Description


name: hoseo_lms description: LMS data aggregation and reporting tool for course information management. homepage: https://learn.hoseo.ac.kr metadata: { "openclaw": { "requires": { "bins": ["python3"] } } }

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.

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.

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.

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:

python3 src/auto_attend.py --limit-lectures 3

Play 2 videos from specific course:

python3 src/auto_attend.py --course Database --limit-lectures 2

Play 5 videos from weeks 1-8:

python3 src/auto_attend.py --limit-lectures 5 --max-week 8

Play with direct credentials:

python3 src/auto_attend.py --id 20231234 --pw password --limit-lectures 4

Play with debug output:

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

mkdir -p ~/.config/hoseo_lms

Step 2: Create credentials.json using terminal

Option A: Using cat (Linux/Mac)

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

Example:

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

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

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

Example:

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

Option C: Using PowerShell (Windows)

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

Example:

@"
{
  "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:
{
  "id": "YOUR_STUDENT_ID",
  "pw": "YOUR_PASSWORD"
}
  1. Save file

Step 3: Set secure permissions

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.

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs