← Back to Skills Marketplace
ohano

Ai Course Agent

by ohano · GitHub ↗ · v0.2.1
cross-platform ⚠ suspicious
636
Downloads
0
Stars
1
Active Installs
3
Versions
Install in OpenClaw
/install ai-course-agent
Description
Auto-generates AI education courses from natural language requests in Chinese. Detects patterns like "帮我生成6年级数学分数乘除法的课程" and calls Edustem API to create and...
README (SKILL.md)

AI Course Agent

OpenClaw Skill for auto-generating AI education courses. Detects natural language course generation requests and calls the Edustem API to create ready-to-use course content.

💳 Billing & Pricing

This skill uses SkillPay for usage-based billing:

  • Rate: 1 token per course generation
  • Pricing: 1 USDT = 1000 tokens
  • Minimum deposit: 8 USDT (8000 tokens = 8000 courses)
  • Payment: USDT cryptocurrency via SkillPay

When your balance runs out, the skill will return a payment link for top-up.

Quick Start

import { isCourseLessonRequest, processUserMessage } from 'ai-course-agent';

// When user sends a message:
const userId = req.user.sub; // Get user ID from your auth system

if (isCourseLessonRequest(userInput)) {
  const response = await processUserMessage(userInput, userId);
  
  // Success:
  // "✅ 成功为6年级数学《分数乘除法》生成课程!\
\
📚 课程链接: https://..."
  
  // Insufficient balance:
  // "❌ 余额不足 (当前: 0 tokens)\
\
💳 请充值后继续使用: https://skillpay.me/..."
}

Configuration

Set environment variables before use:

Edustem API (Required)

export EDUSTEM_USERNAME="[email protected]"
export EDUSTEM_PASSWORD="your-password"

SkillPay Billing

No configuration needed. SkillPay credentials are hardcoded in the skill and belong to the skill author. Payments are automatically deducted from your SkillPay balance.

Supported Input Patterns

帮我生成6年级数学分数乘除法的课程
帮我创建一个七年级语文从百草园到三味书屋的课程
帮我制作9年级英语日常会话的课程
生成8年级科学地球和宇宙的课程

Supports both Arabic (6年级) and Chinese (六年级) numerals for grade levels.

Supported Subjects

数学 · 语文 · 英语 · 科学 · 历史 · 地理 · 物理 · 化学 · 生物

Output Format

✅ 成功为6年级数学《分数乘除法》生成课程!

📚 课程链接: https://your-api-host/ai-lesson/{lesson_ref}

API Flow

  1. handleBilling(userId) — Charge user via SkillPay (1 token)
  2. login() — Authenticate and get JWT token
  3. createLessonPlan() — Create lesson plan with metadata
  4. acceptLessonPlan() — Confirm and trigger course generation
  5. Return course URL (or payment link if balance insufficient)

Exports

// Main integration functions
isCourseLessonRequest(message: string): boolean
processUserMessage(userInput: string, userId: string): Promise\x3Cstring>

// Core functions
generateCourse(request: CourseRequest, userId: string): Promise\x3CGeneratedCourseResponse>
parseCourseRequest(userInput: string): CourseRequest | null

// SkillPay Billing
handleBilling(userId: string): Promise\x3CBillingResult>
chargeUser(userId: string, amount?: number): Promise\x3CChargeResult>
getBalance(userId: string): Promise\x3Cnumber>
getPaymentLink(userId: string, amount?: number): Promise\x3Cstring>

// Edustem API (lower level)
login(username, password): Promise\x3Cstring>
createLessonPlan(token, payload): Promise\x3CCreateLessonPlanResponse>
acceptLessonPlan(token, lessonRef): Promise\x3CAcceptLessonPlanResponse>
generateLessonUrl(lessonRef): string

Tech Stack

TypeScript · Node.js · axios · form-data

Usage Guidance
Key things to consider before installing: - The skill requires you to provide EDUSTEM_USERNAME and EDUSTEM_PASSWORD; those credentials will be sent to the API endpoint hardcoded in the skill (an ngrok domain: 6bb95bf119bf.ngrok-free.app). Ngrok endpoints are typically temporary tunnels to an individual's host — verify with the author or the official Edustem service before using real credentials. If in doubt, use a throwaway/test Edustem account only. - The SkillPay API key and skill ID are hardcoded in src/skillpay.ts. That means billing is set up to deduct tokens and route payments to the skill author's account; you cannot use your own SkillPay credentials without editing the code. The author has published their secret API key in the codebase — this is poor practice and could be abused or indicate sloppy secret handling. - The registry metadata and SKILL.md disagree about required environment variables — the SKILL.md and code do require EDUSTEM_USERNAME/EDUSTEM_PASSWORD despite the registry showing none. This inconsistency lowers trust. - Recommended actions: contact the author and ask for (a) an official Edustem API hostname (not an ngrok URL) or proof that the ngrok endpoint is legitimate, (b) removal of hardcoded SkillPay secrets and support for user-configurable billing, and (c) a public source repository (e.g., GitHub) with author identity and commit history. If you cannot verify those, do not use your real Edustem credentials or real payment info. Prefer installing only after the above concerns are remediated. - If you want to proceed for testing: create a disposable Edustem account with no real data and monitor network traffic; consider forking the skill and removing or replacing the hardcoded SkillPay credentials so payments do not go to the author.
Capability Analysis
Type: OpenClaw Skill Name: ai-course-agent Version: 0.2.1 The skill bundle requires sensitive credentials (EDUSTEM_USERNAME and EDUSTEM_PASSWORD) and transmits them to an unverified ngrok endpoint (6bb95bf119bf.ngrok-free.app) in src/edustem-api.ts, which is a common pattern for credential harvesting. Furthermore, it implements a hardcoded, usage-based monetization scheme via 'SkillPay' (src/skillpay.ts) that requires users to deposit USDT to the author's account to use the skill. While the behavior is documented in the README.md, the use of temporary infrastructure (ngrok) to handle raw credentials and the forced cryptocurrency billing system present a significant security and financial risk.
Capability Assessment
Purpose & Capability
The code implements course generation via an Edustem API and usage billing via SkillPay, which matches the description. However the registry metadata at the top claimed no required env vars while SKILL.md and the code require EDUSTEM_USERNAME and EDUSTEM_PASSWORD — an internal metadata mismatch. The Edustem API base URL is an ngrok domain (https://6bb95bf119bf.ngrok-free.app), not an obvious official Edustem host; that endpoint will receive users' Edustem credentials and lesson data. Hardcoded SkillPay API credentials in src/skillpay.ts make payments go to the skill author's account (documented in README), which is functionally related to billing but unusual and risky for users who may expect to configure their own billing credentials.
Instruction Scope
Runtime instructions and code read EDUSTEM_USERNAME and EDUSTEM_PASSWORD and POST them to the API_BASE_URL (the ngrok domain) during login(). The SKILL.md explicitly instructs users to set those env vars. The instructions also state SkillPay credentials are hardcoded and payments will be deducted and routed to the author's account. There are no broader surprises like reading arbitrary host files, but sending user credentials to a non-official ngrok endpoint and routing billing through an author-controlled API are significant scope/privilege concerns.
Install Mechanism
This is effectively instruction/code-only: there is no install spec that downloads arbitrary archives or runs remote installers. Dependencies are normal npm packages (axios, form-data). Nothing in the manifest downloads code from unknown URLs during install. Risk here comes from runtime network calls rather than install-time actions.
Credentials
Requesting EDUSTEM_USERNAME and EDUSTEM_PASSWORD is reasonable for a skill that must call an external Edustem API. However: (1) the registry metadata omitted these required env vars (incoherent), and (2) the skill contains a hardcoded SkillPay API key and skillId in src/skillpay.ts which are sensitive secrets that give the author control over billing operations; users cannot replace these without modifying code. The hardcoded key is unrelated to the user's Edustem account and concentrates financial control with the author.
Persistence & Privilege
always is false and the skill does not request permanent platform-level privileges. It does not modify other skills or global agent settings. Autonomous invocation is enabled by default but is not combined here with other privilege escalations.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ai-course-agent
  3. After installation, invoke the skill by name or use /ai-course-agent
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.2.1
安全修复:硬编码 SkillPay 凭证,防止用户篡改收款账户。用户无需配置 API key。
v0.2.0
集成 SkillPay 计费系统
v0.1.0
Initial release: auto-generates AI education courses via Edustem API
Metadata
Slug ai-course-agent
Version 0.2.1
License
All-time Installs 1
Active Installs 1
Total Versions 3
Frequently Asked Questions

What is Ai Course Agent?

Auto-generates AI education courses from natural language requests in Chinese. Detects patterns like "帮我生成6年级数学分数乘除法的课程" and calls Edustem API to create and... It is an AI Agent Skill for Claude Code / OpenClaw, with 636 downloads so far.

How do I install Ai Course Agent?

Run "/install ai-course-agent" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Ai Course Agent free?

Yes, Ai Course Agent is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Ai Course Agent support?

Ai Course Agent is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Ai Course Agent?

It is built and maintained by ohano (@ohano); the current version is v0.2.1.

💬 Comments