Sun-Panel Navigation

v1.0.0

Manage Sun-Panel navigation by adding websites, creating and editing shortcut groups, and getting icon recommendations for bookmarks.

0· 85·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for meichuanyi/sun-panel.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Sun-Panel Navigation" (meichuanyi/sun-panel) from ClawHub.
Skill page: https://clawhub.ai/meichuanyi/sun-panel
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install sun-panel

ClawHub CLI

Package manager switcher

npx clawhub@latest install sun-panel
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The skill's name/description match the instructions: it reads a Sun-Panel URL/username/password from a local config and calls the Sun-Panel API to manage groups and bookmarks. The requested capabilities (login, token use, CRUD on items) are appropriate for the stated purpose.
Instruction Scope
All runtime steps are limited to the skill's own config path (~/.openclaw/skills/sun-panel/config.json) and the user-provided Sun-Panel host URL. The instructions do not attempt to read other system files or unrelated credentials. However, the instructions explicitly tell the agent to store plaintext username/password in a config file and to use them for automated login, which is a risk and should be handled carefully.
Install Mechanism
This is instruction-only (no install spec) which minimizes disk footprint. The SKILL.md assumes availability of curl and jq for runtime operations, but the skill declares no required binaries—this is an inconsistency you should account for (the agent environment must have curl and jq installed).
!
Credentials
The skill does not request environment variables, but it requires storing credentials (username/password) in a local JSON file in the user's home directory. Storing passwords in plaintext is disproportionate risk unless file permissions and usage are managed; the skill should instead support tokens or recommend secure storage and minimum-permission account usage.
Persistence & Privilege
The skill does not request always:true and is user-invocable. It only writes to its own config directory (~/.openclaw/skills/sun-panel) and does not modify other skills or system-wide settings.
Assessment
This skill appears to do what it says: it will ask you for your Sun-Panel host/username/password and create a config at ~/.openclaw/skills/sun-panel/config.json, then use curl/jq to log in and manage bookmarks/groups on the host you provide. Before installing: (1) ensure you trust the Sun-Panel instance you provide and are comfortable storing credentials locally; (2) be aware the SKILL.md stores plaintext credentials—set strict file permissions (e.g., chmod 600) or prefer using a limited-permission account or API token if available; (3) ensure your agent environment has curl and jq (the skill assumes them but doesn't declare them); (4) if you do not want persistent credentials on disk, do not provide them—use per-session tokens or remove the config after use. If any of these are unacceptable, do not install or only use with a throwaway/limited account.

Like a lobster shell, security has layers — review code before you run it.

latestvk97a3d6g14x8dpr743b15ydg4985ac7r
85downloads
0stars
1versions
Updated 5d ago
v1.0.0
MIT-0

Sun-Panel 导航面板操作指南

Sun-Panel 是一个服务器/NAS导航面板工具。本 skill 帮助 AI Agent 通过 API 操作它。

配置文件

配置文件路径:~/.openclaw/skills/sun-panel/config.json

首次使用流程

  1. 检查配置文件是否存在
  2. 如果不存在,引导用户创建配置文件
  3. 读取配置,登录获取 Token,执行操作

配置文件格式

{
  "url": "http://your-sunpanel-host:3002",
  "username": "your_username",
  "password": "your_password"
}

检查和创建配置

CONFIG_FILE="$HOME/.openclaw/skills/sun-panel/config.json"

# 检查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
    echo "首次使用 Sun-Panel 技能,请提供以下信息:"
    echo "1. Sun-Panel 服务地址(如 http://192.168.10.3:3002)"
    echo "2. 登录账号"
    echo "3. 登录密码"
    echo ""
    echo "AI Agent 将引导用户输入并创建配置文件"
fi

# 读取配置
SUN_PANEL_URL=$(jq -r '.url' "$CONFIG_FILE")
SUN_PANEL_USERNAME=$(jq -r '.username' "$CONFIG_FILE")
SUN_PANEL_PASSWORD=$(jq -r '.password' "$CONFIG_FILE")

创建配置文件(AI Agent 执行)

# 确保目录存在
mkdir -p "$HOME/.openclaw/skills/sun-panel"

# 写入配置文件(使用用户提供的值)
cat > "$HOME/.openclaw/skills/sun-panel/config.json" << 'EOF'
{
  "url": "USER_PROVIDED_URL",
  "username": "USER_PROVIDED_USERNAME",
  "password": "USER_PROVIDED_PASSWORD"
}
EOF

echo "配置已保存到 $HOME/.openclaw/skills/sun-panel/config.json"

快速开始

1. 登录获取 Token

# 从配置文件读取
CONFIG_FILE="$HOME/.openclaw/skills/sun-panel/config.json"
SUN_PANEL_URL=$(jq -r '.url' "$CONFIG_FILE")
SUN_PANEL_USERNAME=$(jq -r '.username' "$CONFIG_FILE")
SUN_PANEL_PASSWORD=$(jq -r '.password' "$CONFIG_FILE")

# 登录
RESPONSE=$(curl -s -X POST "$SUN_PANEL_URL/api/login" \
  -H "Content-Type: application/json" \
  -d "{\"username\":\"$SUN_PANEL_USERNAME\",\"password\":\"$SUN_PANEL_PASSWORD\"}")

# 检查登录结果
if echo "$RESPONSE" | jq -e '.code == 0' > /dev/null; then
    TOKEN=$(echo "$RESPONSE" | jq -r '.data.token')
    echo "登录成功,Token 已获取"
else
    echo "登录失败:$(echo "$RESPONSE" | jq -r '.msg')"
fi

核心 API

获取分组列表

curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIconGroup/getList" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN"

# 返回示例:
# {"code":0,"data":{"list":[{"id":1,"title":"开发工具","icon":"","sort":1}]}}

创建分组

curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIconGroup/edit" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{"title":"AI工具","icon":"mdi:robot","description":"AI相关工具"}'

# id=0 时创建新分组,返回包含新 id

批量添加图标

curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIcon/addMultiple" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '[
    {
      "title": "GitHub",
      "url": "https://github.com",
      "lanUrl": "",
      "description": "代码托管平台",
      "icon": {"itemType": 3, "text": "mdi:github"},
      "openMethod": 2,
      "itemIconGroupId": 1
    },
    {
      "title": "ChatGPT",
      "url": "https://chat.openai.com",
      "icon": {"itemType": 3, "text": "mdi:chat"},
      "openMethod": 2,
      "itemIconGroupId": 2
    }
  ]'

单个添加/编辑图标

curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIcon/edit" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{
    "title": "Google",
    "url": "https://google.com",
    "icon": {"itemType": 3, "text": "mdi:google"},
    "openMethod": 2,
    "itemIconGroupId": 1
  }'

# id=0 时创建,有 id 时更新

自动获取网站 Favicon

curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIcon/getSiteFavicon" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{"url":"https://github.com"}'

# 返回:{"code":0,"data":{"iconUrl":"/uploads/xxx.png"}}
# 使用此路径作为 itemType=2 的 src

图标类型说明

itemType说明必填字段
1文字图标text(显示的文字)
2图片图标src(图片路径,可从 favicon API 获取)
3Iconify图标text(图标ID,如 mdi:github

openMethod 说明

说明
1当前页面打开
2新窗口打开
3小窗打开(iframe)

图标推荐表

常用网站图标

网站推荐 Iconify 图标
github.commdi:github
google.commdi:google
youtube.commdi:youtube
twitter.com / x.commdi:twitter
facebook.commdi:facebook
instagram.commdi:instagram
reddit.commdi:reddit
linkedin.commdi:linkedin
stackoverflow.commdi:stack-overflow
notion.somdi:notion
figma.commdi:figma
slack.commdi:slack
discord.commdi:discord
spotify.commdi:spotify
twitch.tvmdi:twitch
pinterest.commdi:pinterest
medium.commdi:medium
dribbble.commdi:dribbble
behance.netmdi:behance
trello.commdi:trello
jira.atlassian.commdi:jira
bitbucket.orgmdi:bitbucket
gitlab.commdi:gitlab
docker.commdi:docker
kubernetes.iomdi:kubernetes
aws.amazon.commdi:aws
azure.microsoft.commdi:azure
cloud.google.commdi:google-cloud
digitalocean.commdi:digital-ocean
vercel.commdi:vercel
netlify.commdi:netlify
heroku.commdi:heroku

AI 相关网站

网站推荐 Iconify 图标
chat.openai.commdi:chatmdi:robot
claude.aimdi:robot-outline
gemini.google.commdi:sparkles
copilot.microsoft.commdi:robot-happy
huggingface.comdi:face-man-hug
replicate.commdi:content-copy
perplexity.aimdi:magnify
midjourney.commdi:palette
stability.aimdi:creation
anthropic.commdi:brain
openai.commdi:robot

开发工具

类型推荐 Iconify 图标
Gitmdi:git
VS Codemdi:visual-studio-code
JetBrainsmdi:intellij
Terminal/SSHmdi:console
Databasemdi:database
APImdi:api
Dockermdi:docker
Kubernetesmdi:kubernetes
Servermdi:server
Nginxmdi:web
Redismdi:flash
PostgreSQLmdi:database-postgre
MySQLmdi:database-mysql
MongoDBmdi:leaf

通用图标(按用途)

用途推荐 Iconify 图标
文档/笔记mdi:file-document, mdi:notebook, mdi:book-open
搜索mdi:magnify, mdi:search-web
邮件mdi:email, mdi:mail
云存储mdi:cloud, mdi:folder-cloud
音乐mdi:music, mdi:playlist-music
视频mdi:video, mdi:play-circle
图片mdi:image, mdi:camera
下载mdi:download, mdi:cloud-download
设置mdi:cog, mdi:settings
监控mdi:monitor, mdi:chart-line
安全mdi:shield, mdi:lock
日历mdi:calendar
聊天mdi:chat, mdi:message
书签mdi:bookmark, mdi:star
首页mdi:home, mdi:house

分组推荐表

网站类型推荐分组名推荐分组图标
GitHub, GitLab, Bitbucket开发工具mdi:code
ChatGPT, Claude, GeminiAI工具mdi:robot
YouTube, Netflix, Spotify视频娱乐mdi:play-circle
Twitter, Facebook, Discord社交媒体mdi:account-group
Google, Bing, DuckDuckGo搜索引擎mdi:magnify
Notion, Trello, Jira效率工具mdi:clipboard-check
Gmail, Outlook, ProtonMail邮件服务mdi:email
AWS, Azure, GCP云服务mdi:cloud
Plex, Jellyfin, Emby媒体服务器mdi:server-network
Grafana, Prometheus监控工具mdi:chart-areaspline
Portainer, Dockge容器管理mdi:docker
Nextcloud, Syncthing文件同步mdi:folder-sync

操作流程示例

AI Agent 标准工作流程

# Step 1: 检查配置文件
CONFIG_FILE="$HOME/.openclaw/skills/sun-panel/config.json"

if [ ! -f "$CONFIG_FILE" ]; then
    # 引导用户创建配置
    echo "首次使用 Sun-Panel 技能"
    echo "请提供 Sun-Panel 的配置信息:"
    echo "- URL: Sun-Panel 服务地址"
    echo "- Username: 登录账号"
    echo "- Password: 登录密码"
    # 等待用户提供信息后,创建配置文件
    exit 0
fi

# Step 2: 读取配置
SUN_PANEL_URL=$(jq -r '.url' "$CONFIG_FILE")
SUN_PANEL_USERNAME=$(jq -r '.username' "$CONFIG_FILE")
SUN_PANEL_PASSWORD=$(jq -r '.password' "$CONFIG_FILE")

# Step 3: 登录获取 Token
RESPONSE=$(curl -s -X POST "$SUN_PANEL_URL/api/login" \
  -H "Content-Type: application/json" \
  -d "{\"username\":\"$SUN_PANEL_USERNAME\",\"password\":\"$SUN_PANEL_PASSWORD\"}")

if ! echo "$RESPONSE" | jq -e '.code == 0' > /dev/null; then
    echo "登录失败,请检查配置文件中的账号密码"
    exit 1
fi

TOKEN=$(echo "$RESPONSE" | jq -r '.data.token')

# Step 4: 执行用户请求的操作
# (添加网站、创建分组等)

添加一批 AI 工具网站

# 1. 检查是否存在 "AI工具" 分组
GROUPS=$(curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIconGroup/getList" \
  -H "token: $TOKEN")
AI_GROUP_ID=$(echo "$GROUPS" | jq -r '.data.list[] | select(.title=="AI工具") | .id')

# 2. 如果不存在,创建分组
if [ -z "$AI_GROUP_ID" ] || [ "$AI_GROUP_ID" == "null" ]; then
  curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIconGroup/edit" \
    -H "Content-Type: application/json" \
    -H "token: $TOKEN" \
    -d '{"title":"AI工具","icon":"mdi:robot"}'
  GROUPS=$(curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIconGroup/getList" -H "token: $TOKEN")
  AI_GROUP_ID=$(echo "$GROUPS" | jq -r '.data.list[] | select(.title=="AI工具") | .id')
fi

# 3. 批量添加图标
curl -X POST "$SUN_PANEL_URL/api/panel/itemIcon/addMultiple" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d "[
    {
      \"title\": \"ChatGPT\",
      \"url\": \"https://chat.openai.com\",
      \"description\": \"OpenAI ChatGPT\",
      \"icon\": {\"itemType\": 3, \"text\": \"mdi:chat\"},
      \"openMethod\": 2,
      \"itemIconGroupId\": $AI_GROUP_ID
    },
    {
      \"title\": \"Claude\",
      \"url\": \"https://claude.ai\",
      \"description\": \"Anthropic Claude AI\",
      \"icon\": {\"itemType\": 3, \"text\": \"mdi:robot-outline\"},
      \"openMethod\": 2,
      \"itemIconGroupId\": $AI_GROUP_ID
    },
    {
      \"title\": \"Gemini\",
      \"url\": \"https://gemini.google.com\",
      \"description\": \"Google Gemini AI\",
      \"icon\": {\"itemType\": 3, \"text\": \"mdi:sparkles\"},
      \"openMethod\": 2,
      \"itemIconGroupId\": $AI_GROUP_ID
    }
  ]"

添加单个网站(智能推荐图标)

当用户说"帮我添加 xxx 网站"时:

  1. 根据网站 URL 或名称,从推荐表选择图标
  2. 根据网站类型,推荐或创建分组
  3. 调用 API 添加

示例:用户说"添加 bilibili"

# bilibili 不在预设表中,但属于视频娱乐类
# 推荐: icon=mdi:video, group=视频娱乐

# 1. 获取/创建分组
# 2. 添加图标
curl -X POST "$SUN_PANEL_URL/api/panel/itemIcon/edit" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{
    "title": "Bilibili",
    "url": "https://www.bilibili.com",
    "description": "哔哩哔哩视频网站",
    "icon": {"itemType": 3, "text": "mdi:video"},
    "openMethod": 2,
    "itemIconGroupId": 3
  }'

使用自动获取 Favicon

# 获取网站 favicon
ICON_RESP=$(curl -s -X POST "$SUN_PANEL_URL/api/panel/itemIcon/getSiteFavicon" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{"url":"https://example.com"}')

ICON_URL=$(echo $ICON_RESP | jq -r '.data.iconUrl')

# 使用获取到的 favicon 作为图标
curl -X POST "$SUN_PANEL_URL/api/panel/itemIcon/edit" \
  -H "Content-Type: application/json" \
  -H "token: $TOKEN" \
  -d '{
    "title": "Example",
    "url": "https://example.com",
    "icon": {"itemType": 2, "src": "'$ICON_URL'"},
    "openMethod": 2,
    "itemIconGroupId": 1
  }'

Iconify 图标搜索

如果推荐表中没有对应图标,可以搜索:

搜索格式:

# Material Design Icons 示例
mdi:github    → GitHub
mdi:home      → 首页图标
mdi:cog       → 设置图标

# Font Awesome 示例
fa:github
fa:home

常见问题

配置文件不存在

AI Agent 引导用户创建配置文件,收集 URL、账号、密码信息。

Token 过期

重新登录获取新 token。

分组不存在

先调用 itemIconGroup/edit 创建分组,再添加图标。

图标不显示

  • itemType=3 时确保 icon ID 正确(带前缀如 mdi:xxx
  • itemType=2 时确保 src 路径正确
  • 可调用 getSiteFavicon 自动获取网站图标

登录失败

检查配置文件中的账号密码是否正确,提示用户更新配置。

Comments

Loading comments...