Static Website Hosting - Static.app

Deploy static websites to Static.app hosting. Use when the user wants to deploy, upload, or host a static site on Static.app. Triggers on phrases like "deploy to static.app", "upload to static", "host on static.app", "static.app deploy", or when working with the Static.app hosting service.

3,891 stars

Best use case

Static Website Hosting - Static.app is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Deploy static websites to Static.app hosting. Use when the user wants to deploy, upload, or host a static site on Static.app. Triggers on phrases like "deploy to static.app", "upload to static", "host on static.app", "static.app deploy", or when working with the Static.app hosting service.

Teams using Static Website Hosting - Static.app should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/static-app/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/akellacom/static-app/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/static-app/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Static Website Hosting - Static.app Compares

Feature / AgentStatic Website Hosting - Static.appStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Deploy static websites to Static.app hosting. Use when the user wants to deploy, upload, or host a static site on Static.app. Triggers on phrases like "deploy to static.app", "upload to static", "host on static.app", "static.app deploy", or when working with the Static.app hosting service.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Static.app Deployment Skill

Deploy static websites and applications to [Static.app](https://static.app) hosting directly from OpenClaw.

## Workspace Structure

All Static.app operations in your workspace use a dedicated folder structure:

```
workspace/
└── staticapp/              # Main folder for all Static.app operations
    ├── new-site/           # New sites created locally
    └── {pid}/              # Downloaded existing sites (by PID)
```

- **New sites**: Created in `staticapp/` subfolders before deployment
- **Downloaded sites**: Extracted to `staticapp/{pid}/` for editing

## How Static.app Handles Files

Static.app automatically creates clean URLs from your filenames:

| File | URL |
|------|-----|
| `index.html` | `/` (homepage) |
| `about.html` | `/about` |
| `portfolio.html` | `/portfolio` |
| `contact.html` | `/contact` |

**No subdirectories needed!** Just create `.html` files in the root folder.

## Project Structure

### Simple Multi-Page Site

```
my-site/
├── index.html          # Homepage → /
├── about.html          # About page → /about
├── portfolio.html      # Portfolio → /portfolio
├── contact.html        # Contact → /contact
├── style.css           # Stylesheet
├── js/                 # JavaScript files
│   ├── main.js
│   └── utils.js
└── images/             # Images folder
    ├── logo.png
    └── photo.jpg
```

### JavaScript App (React, Vue, etc.)

For JS apps, **build first**, then deploy the `dist` (or `build`) folder:

```bash
# Build your app
npm run build

# Deploy the dist folder
node scripts/deploy.js ./dist
```

## Prerequisites

1. **Get API Key**: Go to https://static.app/account/api and create an API key (starts with `sk_`)
2. **Set Environment Variable**: Store the API key in `STATIC_APP_API_KEY` env var

## Usage

### Deploy Multi-Page Site

```bash
# Create your pages
echo '<h1>Home</h1>' > index.html
echo '<h1>About</h1>' > about.html
echo '<h1>Portfolio</h1>' > portfolio.html

# Deploy
node scripts/deploy.js
```

### Deploy Specific Directory

```bash
node scripts/deploy.js ./my-site
```

### Update Existing Site

```bash
node scripts/deploy.js . --pid olhdscieyr
```

### List All Sites

```bash
node scripts/list.js
```

### List Site Files

```bash
node scripts/files.js YOUR_PID
```

Options:
- `--raw` — Output raw JSON
- `-k <key>` — Specify API key

### Delete Site

```bash
node scripts/delete.js YOUR_PID
```

Options:
- `-f, --force` — Skip confirmation prompt
- `-k <key>` — Specify API key

### Download Site

Download an existing site to your workspace for editing:

```bash
node scripts/download.js YOUR_PID
```

This will:
1. Fetch the download URL from Static.app API
2. Download the site archive
3. Extract it to `staticapp/{pid}/`

Options:
- `-p, --pid` — Site PID to download
- `-o, --output` — Custom output directory (default: `./staticapp/{pid}`)
- `-k <key>` — Specify API key
- `--raw` — Output raw JSON response

Example:
```bash
# Download site to default location
node scripts/download.js abc123

# Download to custom folder
node scripts/download.js abc123 -o ./my-site
```

## Script Options

```
node scripts/deploy.js [SOURCE_DIR] [OPTIONS]

Arguments:
  SOURCE_DIR          Directory to deploy (default: current directory)

Options:
  -k, --api-key       API key (or set STATIC_APP_API_KEY env var)
  -p, --pid           Project PID to update existing site
  -e, --exclude       Comma-separated exclude patterns
  --keep-zip          Keep zip archive after deployment
```

## Default Exclusions

The following are automatically excluded from deployment:
- `node_modules`
- `.git`, `.github`
- `*.md`
- `package*.json`
- `.env`
- `.openclaw`

## Important Notes

### ✅ What Works

- **Static HTML sites** — Any number of `.html` pages
- **CSS & JavaScript** — Frontend frameworks, vanilla JS
- **Images & Assets** — Place in `images/` folder or root
- **JavaScript files** — Place in `js/` folder or root
- **Built JS Apps** — Deploy `dist/` or `build/` folder after `npm run build`

### ❌ What Doesn't Work

- **Node.js Server Apps** — No server-side rendering, no Express.js, no API routes
- **PHP, Python, Ruby** — Static.app only serves static files
- **Databases** — Use client-side storage or external APIs

### JavaScript Apps Workflow

```bash
# 1. Build your React/Vue/Angular app
npm run build

# 2. Deploy the build output
node scripts/deploy.js ./dist --pid YOUR_PID
```

## API Reference

### Deploy Site
- **Endpoint**: `POST https://api.static.app/v1/sites/zip`
- **Auth**: Bearer token (API key)
- **Body**: Multipart form with `archive` (zip file) and optional `pid`

### List Sites
- **Endpoint**: `GET https://api.static.app/v1/sites`
- **Auth**: Bearer token (API key)
- **Headers**: `Accept: application/json`

### List Site Files
- **Endpoint**: `GET https://api.static.app/v1/sites/files/{pid}`
- **Auth**: Bearer token (API key)
- **Headers**: `Accept: application/json`

### Delete Site
- **Endpoint**: `DELETE https://api.static.app/v1/sites/{pid}`
- **Auth**: Bearer token (API key)
- **Headers**: `Accept: application/json`

### Download Site
- **Endpoint**: `GET https://api.static.app/v1/sites/download/{pid}`
- **Auth**: Bearer token (API key)
- **Headers**: `Accept: application/json`
- **Response**: Returns download URL for the site archive

## Dependencies

- `archiver` — Zip archive creation
- `form-data` — Multipart form encoding
- `node-fetch` — HTTP requests
- `adm-zip` — Zip extraction

Install with: `cd scripts && npm install`

## Response

On success, the script outputs:
```
✅ Deployment successful!
🌐 Site URL: https://xyz.static.app
📋 PID: abc123

STATIC_APP_URL=https://xyz.static.app
STATIC_APP_PID=abc123
```

## Workflow

1. Check for `STATIC_APP_API_KEY` env var or `--api-key`
2. Create zip archive from source directory (with exclusions)
3. Upload to Static.app API
4. Parse response and output URLs
5. Clean up temporary zip file

## Error Handling

- Missing API key → Clear error with instructions
- Network issues → HTTP error details
- Invalid PID → API error message

Related Skills

website-audit

3891
from openclaw/skills

Website Audit mit 230+ Rules für SEO, Performance, Security, Technical und Content Issues. LLM-optimierte Reports mit Health Scores und Handlungsempfehlungen.

static-files

3891
from openclaw/skills

Host static files on subdomains with optional authentication. Use when you need to serve HTML, images, CSS, JS, or any static content on a dedicated subdomain. Supports file upload, basic auth, quota management, and automatic SSL via Caddy. Commands include sf sites (create/list/delete), sf upload (files/directories), sf files (list/delete).

website-change-watcher

3891
from openclaw/skills

Monitor website/docs/pricing changes, diff meaningful updates, and summarize business impact with alert-ready reports.

You are Website Builder, a product-minded website planning assistant.

3891
from openclaw/skills

Your job is to help the user design and structure websites through conversation.

wp-to-static

3891
from openclaw/skills

Convert a WordPress website to a static site and deploy to Cloudflare Pages. Mirrors the rendered HTML via SSH, extracts only referenced assets (shrinks 1.5GB+ to ~25MB), fixes URLs, self-hosts fonts, strips WordPress cruft, and deploys. Use when migrating a WordPress site to static hosting.

Static (ø) Agent Interface Skill

3891
from openclaw/skills

This document describes how automated agents (openclaw, clawdbot, moldbot) can interact with the Static (ø) social media platform.

afrexai-self-hosting-mastery

3891
from openclaw/skills

Complete self-hosting and homelab operating system. Deploy, secure, monitor, and maintain self-hosted services with production-grade reliability. Use when setting up home servers, Docker infrastructure, reverse proxies, backups, monitoring, or evaluating self-hosted alternatives to SaaS.

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research