Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计通过

ezyhostezyhost 分析

Agent Skill

ezyhost 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

24,646

周安装

997

GitHub Stars

公开资料未说明

下载量

7,737
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ezyhost(ezyhost 分析)
来源仓库:https://github.com/araratdev/ezyhost
安装命令:
openclaw skills install ezyhost
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install ezyhost

简介

用于查找、检索和筛选相关信息。ezyhost 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

  • 适合根据关键词或任务场景快速定位候选结果。
  • 可结合来源仓库和 README 核验具体用法。
  • 安装前建议确认权限范围和是否会触发联网、命令执行或文件读写。
  • 注意检查维护状态和实际功能是否与描述一致。

SKILL.md

name
ezyhost
description
Deploy, manage, and monitor static websites via the EzyHost API. Upload files, build with AI, track analytics, manage custom domains, QR codes, email capture, and team collaboration.
homepage
https://ezyhost.io
metadata
openclaw
emoji
🚀
requires
env
primaryEnv
EZYHOST_API_KEY
permissions
version
1
declared_purpose
Deploy and manage static websites on EzyHost. Upload files, run SEO analysis, track analytics, generate sites with AI, configure custom domains, manage versions, teams, QR codes, and email capture.
network
env
filesystem
[]
exec
[]
sensitive_data
credentials
false

EzyHost — Agent Skill

This document describes how AI agents can interact with EzyHost programmatically. For human users, visit ezyhost.io.

Base URL

https://ezyhost.io/api

Authentication

All API requests require an API key passed as a header:

x-api-key: $EZYHOST_API_KEY

The key is loaded from the EZYHOST_API_KEY environment variable. Generate your API key at https://ezyhost.io/dashboard/api-keys.

Note: API access requires the Pro plan or higher.


Endpoints

Projects

List Projects

GET /api/projects

Returns { projects: [{ id, name, slug, subdomain, customDomain, status, storageUsed, seoScore, deployedAt, _count: { files, analytics } }] }

Create Project

POST /api/projects
Content-Type: application/json
Body: { "name": "my-site", "subdomain": "my-site" }

Returns { project: { id, name, subdomain, s3Prefix, url, ... } }

The subdomain must be 3+ characters, lowercase alphanumeric with hyphens. Returns 409 SUBDOMAIN_TAKEN if already in use. Your site will be live at https://{subdomain}.ezyhost.site.

Optional fields: displayMode ("standard" | "presentation"), hideFromSearch (boolean), password (string).

Check Subdomain Availability

GET /api/projects/check-subdomain/:subdomain

Returns { available: true/false, subdomain }. Use this to validate before creating.

Get Project

GET /api/projects/:id

Returns { project: { id, name, subdomain, customDomain, status, storageUsed, seoScore, files: [...], ... } }

Update Project

PATCH /api/projects/:id
Content-Type: application/json
Body: { "name": "new-name", "metaTitle": "...", "metaDescription": "...", "password": "...", "removeBranding": true, "displayMode": "standard", "hideFromSearch": false, "emailCapture": true }

Delete Project

DELETE /api/projects/:id

Deletes the project and all associated files from storage. This cannot be undone.


File Upload

Upload Files (ZIP or individual)

POST /api/upload/:projectId
Content-Type: multipart/form-data
Body: files (multipart)

Returns { message, filesUploaded, totalSize, project: { id, subdomain } }

Supports .zip archives (auto-extracted) and individual files. All uploaded files go through malware scanning (ClamAV + magic byte validation).

Supported file types: HTML, CSS, JS, JSON, XML, SVG, images (PNG, JPG, GIF, WebP, AVIF, ICO), PDFs, presentations (PPTX), documents (DOCX, XLSX), audio (MP3, WAV, OGG, FLAC, AAC), video (MP4, WebM, MOV), fonts (WOFF, WOFF2, TTF, OTF, EOT), archives (ZIP), 3D models (GLB, GLTF, OBJ), and any other static asset.

Blocked file types: Executables (.exe, .dll, .bat, .sh, .php, .asp, .jar) and SVGs containing scripts or event handlers are rejected.

Delete a File

DELETE /api/upload/:projectId/files/:fileId

Bulk Delete Files

POST /api/upload/:projectId/files/bulk-delete
Content-Type: application/json
Body: { "fileIds": ["id1", "id2", "id3"] }

Rename a File

PATCH /api/upload/:projectId/files/:fileId
Content-Type: application/json
Body: { "newPath": "assets/renamed-file.png" }

GitHub Import

Import from GitHub

POST /api/github/:projectId
Content-Type: application/json
Body: { "owner": "username", "repo": "repo-name", "branch": "main", "subfolder": "dist" }

Returns { message, repo, branch, filesUploaded, filesSkipped, totalSize }

Imports files from a public GitHub repository. The branch defaults to "main" and automatically falls back to "master" if not found. The optional subfolder field lets you import only a subdirectory (e.g. "dist", "build").

Requires Pro plan or higher.


Version Rollback

List Versions

GET /api/versions/:projectId

Returns { versions: [{ id, version, label, fileCount, totalSize, createdAt }] }

Create Version Snapshot

POST /api/versions/:projectId
Content-Type: application/json
Body: { "label": "v1.0" }

Snapshots the current state of all project files. Requires Pro plan or higher.

Rollback to Version

POST /api/versions/:projectId/rollback/:version

Restores all files to the state captured in the specified version number.


SEO

Get SEO Report

GET /api/seo/:projectId

Returns { score, suggestions: [{ id, type, severity, message, resolved }] }

Requires Pro plan or higher.

Run SEO Analysis

POST /api/seo/:projectId/analyze

Triggers a fresh SEO scan and returns updated suggestions.

Resolve a Suggestion

PATCH /api/seo/suggestion/:id/resolve

AI Auto-Fix SEO Issues

POST /api/seo/:projectId/ai-fix
Content-Type: application/json
Body: { "suggestionIds": ["id1", "id2"] }

Uses AI to automatically fix SEO issues in your HTML files. Counts against AI generation limits.


Analytics

Get Analytics

GET /api/analytics/:projectId?period=7d

Periods: 24h, 7d, 30d, 90d

Basic analytics (all plans): Returns { totalVisits, visitsByDay, topPages, isAdvanced }

Advanced analytics (Pro+ plans): Additionally returns { uniqueVisitors, uniqueByDay, topReferrers, topCountries, devices, browsers }

Free plan users receive isAdvanced: false and advanced fields are empty.

Track Event (public, no auth required)

POST /api/analytics/track
Content-Type: application/json
Body: { "projectId": "...", "path": "/page", "referrer": "..." }

QR Codes

Generate QR Code

POST /api/qrcode/:projectId

Returns { qrCodeUrl: "data:image/png;base64,...", siteUrl: "https://..." }

Generates a QR code pointing to the project's live URL (subdomain or custom domain). Returns a base64 data URL. Available on all paid plans.

Get QR Code

GET /api/qrcode/:projectId

Returns { qrCodeUrl: "data:image/..." | null }


Email Capture

Toggle Email Capture on Project

PATCH /api/emails/:projectId/toggle

Returns { emailCapture: true/false }. Requires Business plan.

When enabled, visitors to the hosted site see a popup email collection form after 5 seconds.

Submit Email (public, no auth)

POST /api/emails/submit
Content-Type: application/json
Body: { "email": "visitor@example.com", "projectId": "...", "source": "modal" }

Source options: modal, inline, api. Only works if the project has email capture enabled and the project owner has a Business plan.

Get Captured Emails

GET /api/emails/:projectId?page=1&limit=50

Returns { emails: [{ id, email, source, createdAt }], total, page, totalPages }

Requires Business plan.

Export Emails as CSV

GET /api/emails/:projectId/export

Returns a CSV file download. Requires Business plan.

Delete a Captured Email

DELETE /api/emails/:projectId/:emailId

Teams

List Teams

GET /api/teams

Returns { teams: [{ id, name, ownerId, members: [...] }] }

Create Team

POST /api/teams
Content-Type: application/json
Body: { "name": "My Team" }

Requires Business plan.

Add Team Member

POST /api/teams/:teamId/members
Content-Type: application/json
Body: { "email": "user@example.com", "role": "editor" }

Roles: editor, viewer.

Update Member Role

PATCH /api/teams/:teamId/members/:memberId
Content-Type: application/json
Body: { "role": "viewer" }

Remove Team Member

DELETE /api/teams/:teamId/members/:memberId

Leave Team

POST /api/teams/:teamId/leave

Delete Team

DELETE /api/teams/:teamId

Domains

Add Custom Domain

POST /api/domains/:projectId
Content-Type: application/json
Body: { "domain": "example.com" }

Returns { dnsInstructions: { type, name, value } } — DNS records you need to create.

Requires Pro plan or higher.

Verify Domain DNS

GET /api/domains/:projectId/verify

Returns { verified: true/false, dnsInstructions }. Call this after setting up DNS records.

Remove Domain

DELETE /api/domains/:projectId

AI Builder

Chat (generate/edit websites via AI)

POST /api/aibuilder/chat
Content-Type: application/json
Body: { "message": "build a portfolio site", "history": [], "currentFiles": [] }

Returns SSE stream with events:

  • status — progress updates ("Generating HTML...")
  • progress — percentage (0-100)
  • done{ files: [{ filename, content }] } — the generated files
  • error{ message } on failure

Counts against per-plan AI generation limits. Only one AI generation can run at a time per user.

Deploy AI-Generated Files

POST /api/aibuilder/deploy/:projectId
Content-Type: application/json
Body: { "files": [{ "filename": "index.html", "content": "<!DOCTYPE html>..." }] }

Download as ZIP

POST /api/aibuilder/download-zip
Content-Type: application/json
Body: { "files": [{ "filename": "index.html", "content": "..." }] }

Returns a ZIP file download.

Templates

GET    /api/aibuilder/templates           — list saved templates
GET    /api/aibuilder/templates/:id       — get template details
POST   /api/aibuilder/templates           — save new template
PATCH  /api/aibuilder/templates/:id       — update template
DELETE /api/aibuilder/templates/:id       — delete template

Template body: { "name": "My Template", "description": "...", "messages": [...], "files": [...] }


API Keys

Get Current Key

GET /api/apikey

Returns { hasKey: true/false, apiKey: "ag_••••..." } — key is partially masked.

Generate New Key

POST /api/apikey/generate

Returns { apiKey: "ag_..." } — full key shown only once. Store it securely. Revokes any previous key.

Requires Pro plan or higher.

Revoke Key

DELETE /api/apikey

Plans (Public)

Get All Plans

GET /api/plans

No authentication required. Returns { plans: [{ plan, name, priceMonthly, maxProjects, maxStorageMB, ... }] } with all feature flags and limits for each plan.


Billing

Get Billing Info

GET /api/billing

Returns { plan, subscription, aiCredits, usage }.

Get AI Usage

GET /api/billing/ai-usage

Returns { used, limit, remaining, resetsAt }.


Plan Limits

FeatureFreePro ($9/mo)Business ($29/mo)
Projects215Unlimited
Storage50 MB2 GB20 GB
Max file size10 MB100 MB500 MB
Custom domains3Unlimited
API access
GitHub import
Version rollbackUp to 5Up to 30
Password protection
Remove branding
SEO tools
Advanced analytics
QR codes
Hide from search
Email capture
Team membersUp to 5
Priority support
AI generations3/mo10/mo30/mo
AI templates110Unlimited
Presentation mode
Basic analytics

Hosted Site URLs

Sites are served at:

  • Free subdomain: https://{subdomain}.ezyhost.site
  • Custom domain: https://{your-domain.com} (Pro+ plans)

All sites include HTTPS, CDN caching, automatic file browser for non-HTML projects, and optional presentation mode for PDF/PPTX files.

Injected features on served sites:

  • Branding badge: "Hosted on ezyhost" badge shown on free plan sites. Removable on paid plans via removeBranding project setting.
  • Email capture popup: When enabled (Business plan), visitors see a subscribe popup after 5 seconds. Dismissible and stored in sessionStorage.
  • Analytics tracking: Pageviews are automatically tracked for HTML files.

Error Responses

All errors return JSON:

{ "error": "Description of the error" }

Plan limit errors include "upgrade": true to indicate a higher plan is needed:

{ "error": "GitHub import requires a Pro plan or higher", "upgrade": true }

Subdomain conflicts:

{ "error": "The subdomain \"my-site\" is already taken.", "code": "SUBDOMAIN_TAKEN" }

Common HTTP status codes:

  • 400 — Bad request / validation error
  • 401 — Not authenticated
  • 403 — Plan limit reached or feature disabled
  • 404 — Resource not found
  • 409 — Conflict (subdomain taken)
  • 429 — Rate limited
  • 500 — Server error

Rate Limits

  • General API: 300 requests per 15 minutes per API key
  • Upload: 2 requests per second
  • Analytics tracking: 60 writes per minute per IP
  • Email capture submit: 10 per minute per IP
  • AI Builder: Subject to per-plan generation limits (1 concurrent request max)

Example: Deploy a Static Site

# 1. Check subdomain availability
curl https://ezyhost.io/api/projects/check-subdomain/my-site \
  -H "x-api-key: $EZYHOST_API_KEY"

# 2. Create a project
curl -X POST https://ezyhost.io/api/projects \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-site", "subdomain": "my-site"}'

# 3. Upload files (ZIP)
curl -X POST https://ezyhost.io/api/upload/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -F "files=@site.zip"

# 4. Generate QR code
curl -X POST https://ezyhost.io/api/qrcode/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY"

# 5. Check SEO (Pro+)
curl https://ezyhost.io/api/seo/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY"

# 6. Add custom domain (Pro+)
curl -X POST https://ezyhost.io/api/domains/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

Your site is now live at https://my-site.ezyhost.site

Example: Import from GitHub

# Import a public repo (auto-detects main/master branch)
curl -X POST https://ezyhost.io/api/github/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"owner": "emilbaehr", "repo": "automatic-app-landing-page"}'

Example: AI-Generate and Deploy

# 1. Generate a site with AI (SSE stream)
curl -N -X POST https://ezyhost.io/api/aibuilder/chat \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "build a modern portfolio with dark theme", "history": []}'

# 2. Deploy the generated files to a project
curl -X POST https://ezyhost.io/api/aibuilder/deploy/PROJECT_ID \
  -H "x-api-key: $EZYHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"files": [{"filename": "index.html", "content": "..."}]}'

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

90.96%
按下载量换算7,038

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills