一键导入
here-now
// Publish static sites to {slug}.here.now and store private files in cloud Drives for agent-to-agent handoff.
// Publish static sites to {slug}.here.now and store private files in cloud Drives for agent-to-agent handoff.
[HINT] 下载包含 SKILL.md 和所有相关文件的完整技能目录
| name | here.now |
| description | Publish static sites to {slug}.here.now and store private files in cloud Drives for agent-to-agent handoff. |
| version | 1.15.3 |
| author | here.now |
| license | MIT |
| prerequisites | {"commands":["curl","file","jq"]} |
| platforms | ["macos","linux"] |
| metadata | {"hermes":{"tags":["here.now","herenow","publish","deploy","hosting","static-site","web","share","URL","drive","storage"],"homepage":"https://here.now","requires_toolsets":["terminal"]}} |
here.now lets agents publish websites and store private files in cloud Drives.
Use here.now for two jobs:
{slug}.here.now.Before answering questions about here.now capabilities, features, or workflows, read the current docs:
Read the docs:
Topics that require current docs (do not rely on local skill text alone):
If docs and live API behavior disagree, trust the live API behavior.
If the docs fetch fails or times out, continue with the local skill and live API/script output. Prefer live API behavior for active operations.
curl, file, jq$HERENOW_API_KEY$HERENOW_DRIVE_TOKEN~/.herenow/credentials${HERMES_SKILL_DIR}/scripts/publish.sh for publishing sites${HERMES_SKILL_DIR}/scripts/drive.sh for private Drive storagePUBLISH="${HERMES_SKILL_DIR}/scripts/publish.sh"
bash "$PUBLISH" {file-or-dir} --client hermes
Outputs the live URL (e.g. https://bright-canvas-a7k2.here.now/).
Under the hood this is a three-step flow: create/update -> upload files -> finalize. A site is not live until finalize succeeds.
Without an API key this creates an anonymous site that expires in 24 hours. With a saved API key, the site is permanent.
File structure: For HTML sites, place index.html at the root of the directory you publish, not inside a subdirectory. The directory's contents become the site root. For example, publish my-site/ where my-site/index.html exists — don't publish a parent folder that contains my-site/.
You can also publish raw files without any HTML. Single files get a rich auto-viewer (images, PDF, video, audio). Multiple files get an auto-generated directory listing with folder navigation and an image gallery.
PUBLISH="${HERMES_SKILL_DIR}/scripts/publish.sh"
bash "$PUBLISH" {file-or-dir} --slug {slug} --client hermes
The script auto-loads the claimToken from .herenow/state.json when updating anonymous sites. Pass --claim-token {token} to override.
Authenticated updates require a saved API key.
Use a Drive when the user wants private cloud storage for agent files: documents, context, memory, plans, assets, media, research, code, and anything else that should persist without being published as a website.
Every signed-in account has a default Drive named My Drive.
DRIVE="${HERMES_SKILL_DIR}/scripts/drive.sh"
bash "$DRIVE" default
bash "$DRIVE" ls "My Drive"
bash "$DRIVE" put "My Drive" notes/today.md --from ./notes/today.md
bash "$DRIVE" cat "My Drive" notes/today.md
bash "$DRIVE" share "My Drive" --perms write --prefix notes/ --ttl 7d
Use scoped Drive tokens for agent-to-agent handoff. If you receive a herenow_drive share block, use its token as Authorization: Bearer <token> against api_base, respect pathPrefix when present, and preserve ETags on writes. A pathPrefix of null means full-Drive access. If the skill is available, prefer drive.sh; otherwise call the listed API operations directly.
The publish script reads the API key from these sources (first match wins):
--api-key {key} flag (CI/scripting only — avoid in interactive use)$HERENOW_API_KEY environment variable~/.herenow/credentials file (recommended for agents)To store a key, write it to the credentials file:
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
IMPORTANT: After receiving an API key, save it immediately — run the command above yourself. Do not ask the user to run it manually. Avoid passing the key via CLI flags (e.g. --api-key) in interactive sessions; the credentials file is the preferred storage method.
Never commit credentials or local state files (~/.herenow/credentials, .herenow/state.json) to source control.
To upgrade from anonymous (24h) to permanent sites:
curl -sS https://here.now/api/auth/agent/request-code \
-H "content-type: application/json" \
-d '{"email": "user@example.com"}'
curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'
apiKey yourself (do not ask the user to do this):mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
After every site create/update, the script writes to .herenow/state.json in the working directory:
{
"publishes": {
"bright-canvas-a7k2": {
"siteUrl": "https://bright-canvas-a7k2.here.now/",
"claimToken": "abc123",
"claimUrl": "https://here.now/claim?slug=bright-canvas-a7k2&token=abc123",
"expiresAt": "2026-02-18T01:00:00.000Z"
}
}
}
Before creating or updating sites, you may check this file to find prior slugs.
Treat .herenow/state.json as internal cache only.
Never present this local file path as a URL, and never use it as source of truth for auth mode, expiry, or claim URL.
For published sites:
siteUrl from the current script run.publish_result.* lines from script stderr to determine auth mode.publish_result.auth_mode=authenticated: tell the user the site is permanent and saved to their account. No claim URL is needed.publish_result.auth_mode=anonymous: tell the user the site expires in 24 hours. Share the claim URL (if publish_result.claim_url is non-empty and starts with https://) so they can keep it permanently. Warn that claim tokens are only returned once and cannot be recovered..herenow/state.json for claim URLs or auth status.For Drives:
pathPrefix and short TTL.| Flag | Description |
|---|---|
--slug {slug} | Update an existing site instead of creating |
--claim-token {token} | Override claim token for anonymous updates |
--title {text} | Viewer title (non-HTML sites) |
--description {text} | Viewer description |
--ttl {seconds} | Set expiry (authenticated only) |
--client {name} | Agent name for attribution (e.g. hermes) |
--base-url {url} | API base URL (default: https://here.now) |
--allow-nonherenow-base-url | Allow sending auth to non-default --base-url |
--api-key {key} | API key override (prefer credentials file) |
--spa | Enable SPA routing (serve index.html for unknown paths) |
--forkable | Allow others to fork this site |
For Drive operations, use drive.sh or the Drive API. For broader account and site management — delete, metadata, passwords, payments, domains, handles, links, variables, proxy routes, forking, duplication, and more — see the current docs:
Full docs: https://here.now/docs