| name | qinglong |
| description | Manage Qinglong Panel (青龙面板) — cron jobs, environment variables, subscriptions, scripts, dependencies, configs, and logs via its REST API. Use when the user mentions Qinglong, 青龙, scheduled tasks, cron management, environment variables for scripts, subscription repos, or any task automation panel operations. Also use when the user wants to create, edit, enable, disable, run, or delete cron jobs, manage script files, or check task logs. |
Qinglong Panel Skill
Interact with a self-hosted Qinglong Panel (v2.x) through its Open API.
Configuration
- Instance:
http://localhost:5700
- Client ID:
kFg9R80c5_Yt
- Client Secret:
D4ko5EqlMAO13jh2U5Sl-V9H
Credentials come from Qinglong → System Settings → App Management. The CursorAgent app has full permissions (crons, envs, subscriptions, configs, scripts, dependencies, logs, system).
Quick Reference
All API calls go through the helper script:
QL_BASE_URL="http://localhost:5700" \
QL_CLIENT_ID="kFg9R80c5_Yt" \
QL_CLIENT_SECRET="D4ko5EqlMAO13jh2U5Sl-V9H" \
bash /data/tmp/qinglong-skill/scripts/ql-api.sh <METHOD> <ENDPOINT> [JSON_BODY]
The script handles token acquisition, caching, and renewal automatically.
Cron Jobs (定时任务)
| Action | Command |
|---|
| List all | GET /open/crons |
| Create | POST /open/crons '{"name":"Job Name","command":"node script.js","schedule":"0 9 * * *"}' |
| Update | PUT /open/crons '{"id":1,"name":"New Name","command":"...","schedule":"..."}' |
| Delete | DELETE /open/crons '[1,2,3]' |
| Run now | PUT /open/crons/run '[1,2]' |
| Stop | PUT /open/crons/stop '[1,2]' |
| Enable | PUT /open/crons/enable '[1,2]' |
| Disable | PUT /open/crons/disable '[1,2]' |
| Get log | GET /open/crons/123/log |
| Views | GET /open/crons/views |
Cron fields: id, name, command, schedule, status (0=running, 1=idle, 5=disabled), labels, sub_id, extra_schedules, task_before, task_after.
Environment Variables (环境变量)
| Action | Command |
|---|
| List all | GET /open/envs |
| Create | POST /open/envs '[{"name":"KEY","value":"val","remarks":"desc"}]' |
| Update | PUT /open/envs '{"id":1,"name":"KEY","value":"new_val"}' |
| Delete | DELETE /open/envs '[1,2]' |
| Enable | PUT /open/envs/enable '[1,2]' |
| Disable | PUT /open/envs/disable '[1,2]' |
| Move | PUT /open/envs/move '{"ids":[1],"toIndex":0}' |
| Search | GET /open/envs?searchValue=MY_KEY |
Env fields: id, name, value, remarks, status (0=enabled, 1=disabled).
Subscriptions (订阅管理)
| Action | Command |
|---|
| List all | GET /open/subscriptions |
| Create | POST /open/subscriptions '{"name":"Sub","url":"https://github.com/user/repo.git","schedule":"0 0 * * *","type":"public-repo","branch":"main"}' |
| Update | PUT /open/subscriptions '{"id":1,"name":"...","url":"..."}' |
| Delete | DELETE /open/subscriptions '[1]' |
| Run | PUT /open/subscriptions/run '[1]' |
| Stop | PUT /open/subscriptions/stop '[1]' |
| Enable | PUT /open/subscriptions/enable '[1]' |
| Disable | PUT /open/subscriptions/disable '[1]' |
| Get log | GET /open/subscriptions/1/log |
Subscription types: public-repo, private-repo, file.
Scripts (脚本管理)
| Action | Command |
|---|
| List all | GET /open/scripts |
| Get content | GET /open/scripts/script.js |
| Create/Update | POST /open/scripts '{"filename":"test.js","content":"console.log(1)","path":""}' |
| Delete | DELETE /open/scripts '{"filename":"test.js","path":""}' |
| Rename | PUT /open/scripts/rename '{"filename":"old.js","path":"","newFilename":"new.js"}' |
| Run | PUT /open/scripts/run '{"filename":"test.js","path":""}' |
| Stop | PUT /open/scripts/stop '{"filename":"test.js","path":""}' |
Dependencies (依赖管理)
| Action | Command |
|---|
| List all | GET /open/dependencies |
| Create | POST /open/dependencies '[{"name":"axios","type":0}]' |
| Delete | DELETE /open/dependencies '[1]' |
| Reinstall | PUT /open/dependencies/reinstall '[1]' |
| Get log | GET /open/dependencies/1/log |
Dependency types: 0 = Node.js, 1 = Python, 2 = Linux.
Config Files (配置文件)
| Action | Command |
|---|
| Get content | GET /open/configs/config.sh |
| Update | POST /open/configs/save '{"name":"config.sh","content":"..."}' |
Logs (日志管理)
| Action | Command |
|---|
| List log files | GET /open/logs |
| Get log detail | GET /open/logs/2026-04-03/taskname.log |
System (系统设置)
| Action | Command |
|---|
| System info | GET /open/system |
| Send notification | PUT /open/system/notify '{"title":"Alert","content":"Message body"}' |
Workflow Guidance
Creating a new scheduled task:
- (Optional) Upload the script first via Scripts API
- Create the cron job with
name, command, schedule
- Enable it if not already enabled
- Run it manually to verify with
/open/crons/run
- Check the log with
/open/crons/{id}/log
Managing subscription repos:
- Create subscription with repo URL, branch, schedule
- Run it to pull scripts
- New cron jobs are auto-created from pulled scripts (if
AutoAddCron=true)
Batch operations:
Most enable/disable/delete/run/stop endpoints accept arrays of IDs for batch processing.
Output Format
All API responses follow this structure:
{"code": 200, "data": ...}
Error responses: {"code": 400|401|500, "message": "error description"}
Important Notes
- Token is cached automatically at
/tmp/.ql-token-cache; delete this file to force re-auth
- Cron
status values: 0 = running, 1 = idle, 5 = disabled
- Env
status values: 0 = enabled, 1 = disabled
- The
schedule field uses standard cron syntax (5 fields: min hour day month weekday)
- For complete API details and field schemas, see reference.md