npx skills add https://github.com/heredotnow/skill --skill here-now技能版本:1.8.3
从任何文件或文件夹创建实时 URL。仅限静态托管。
安装或更新(推荐):npx skills add heredotnow/skill --skill here-now -g
对于仓库固定/项目本地安装,请运行相同的命令但不带 -g。
curl、file、jq$HERENOW_API_KEY~/.herenow/credentials./scripts/publish.sh {文件或目录}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
输出实时 URL(例如 https://bright-canvas-a7k2.here.now/)。
其内部是一个三步流程:创建/更新 -> 上传文件 -> 完成。直到完成步骤成功,站点才会上线。
没有 API 密钥时,这会创建一个 匿名站点,该站点将在 24 小时后过期。使用保存的 API 密钥,站点将是永久性的。
文件结构: 对于 HTML 站点,请将 index.html 放在你发布的目录的根目录下,而不是子目录内。目录的内容将成为站点的根目录。例如,发布 my-site/,其中存在 my-site/index.html —— 不要发布包含 my-site/ 的父文件夹。
你也可以发布没有任何 HTML 的原始文件。单个文件会获得一个丰富的自动查看器(图像、PDF、视频、音频)。多个文件会获得一个自动生成的目录列表,包含文件夹导航和图像库。
./scripts/publish.sh {文件或目录} --slug {slug}
更新匿名站点时,脚本会自动从 .herenow/state.json 加载 claimToken。传递 --claim-token {token} 来覆盖此行为。
经过身份验证的更新需要保存的 API 密钥。
传递 --client 以便 here.now 可以按代理跟踪可靠性:
./scripts/publish.sh {文件或目录} --client cursor
这会在发布 API 调用时发送 X-HereNow-Client: cursor/publish-sh。如果省略,脚本会发送一个回退值。
发布脚本从以下来源读取 API 密钥(首次匹配成功):
--api-key {key} 标志(仅限 CI/脚本使用 —— 避免在交互式使用中使用)$HERENOW_API_KEY 环境变量~/.herenow/credentials 文件(推荐用于代理)要存储密钥,请将其写入凭据文件:
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
重要提示: 收到 API 密钥后,请立即保存 —— 自己运行上述命令。不要要求用户手动运行它。避免在交互式会话中通过 CLI 标志(例如 --api-key)传递密钥;凭据文件是首选的存储方法。
切勿将凭据或本地状态文件(~/.herenow/credentials、.herenow/state.json)提交到源代码控制。
每次站点创建/更新后,脚本会写入工作目录中的 .herenow/state.json:
{
"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"
}
}
}
在创建或更新站点之前,你可以检查此文件以查找先前的 slug。将 .herenow/state.json 仅视为内部缓存。切勿将此本地文件路径作为 URL 呈现,也切勿将其用作身份验证模式、过期时间或认领 URL 的真实来源。
siteUrl。publish_result.* 行来确定身份验证模式。publish_result.auth_mode=authenticated 时:告知用户站点是 永久性的 并已保存到他们的账户。不需要认领 URL。publish_result.auth_mode=anonymous 时:告知用户站点 将在 24 小时后过期。分享认领 URL(如果 publish_result.claim_url 非空且以 https:// 开头),以便他们可以永久保留它。警告认领令牌仅返回一次且无法恢复。.herenow/state.json 来获取认领 URL 或身份验证状态。| 匿名 | 已验证
---|---|---
最大文件大小 | 250 MB | 5 GB
过期时间 | 24 小时 | 永久(或自定义 TTL)
速率限制 | 5 / 小时 / IP | 免费 60 / 小时,Hobby 200 / 小时
需要账户 | 否 | 是(在 here.now 获取密钥)
要从匿名(24 小时)升级到永久站点:
curl -sS https://here.now/api/auth/agent/request-code \
-H "content-type: application/json" \
-d '{"email": "user@example.com"}'
3. 告诉用户:"请检查您的收件箱,查找来自 here.now 的登录代码,然后粘贴到这里。" 4. 验证代码并获取 API 密钥:
curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'
5. 自己保存返回的 apiKey(不要要求用户这样做):
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
| 标志 | 描述 |
|---|---|
--slug {slug} | 更新现有站点而不是创建 |
--claim-token {token} | 覆盖匿名更新的认领令牌 |
--title {text} | 查看器标题(非 HTML 站点) |
--description {text} | 查看器描述 |
--ttl {seconds} | 设置过期时间(仅已验证) |
--client {name} | 用于归属的代理名称(例如 cursor) |
--base-url {url} | API 基础 URL(默认:https://here.now) |
--allow-nonherenow-base-url | 允许向非默认的 --base-url 发送身份验证信息 |
--api-key {key} | API 密钥覆盖(推荐使用凭据文件) |
curl -sS -X POST https://here.now/api/v1/publish/{slug}/duplicate \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'
在新 slug 下创建站点的完整副本。所有文件都在服务器端复制 —— 无需上传。新站点立即上线。需要对源站点进行身份验证并拥有所有权。
可选地覆盖查看器元数据(与源进行浅合并):
curl -sS -X POST https://here.now/api/v1/publish/{slug}/duplicate \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"viewer": {"title": "My Copy"}}'
关于删除、元数据补丁(包括密码保护)、复制、认领、列表和其他操作,请参阅 references/REFERENCE.md。
句柄是 here.now 上用户拥有的子域名命名空间(例如 yourname.here.now),它将路径路由到你的站点。认领句柄需要付费计划(Hobby 或更高)。
/api/v1/handle使用你自己的域名(例如 example.com)并从中提供站点服务。自定义域名:免费版 1 个,Hobby 版最多 5 个。
/api/v1/domains 和 /api/v1/domains/:domaincurl -sS https://here.now/api/v1/domains \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'
响应包括 is_apex、DNS 说明以及(对于根域名)一个包含 TXT 记录详细信息的 ownership_verification 对象。
按域名类型进行 DNS 设置:
docs.example.com):添加一个指向 fallback.here.now 的 CNAME 记录。example.com):
fallback.here.now 的 ALIAS 记录。(你的 DNS 提供商可能称之为 ANAME 或 CNAME 扁平化。)ownership_verification 字段的 name 和 value 添加一个 TXT 记录。DNS 验证通过后,SSL 会自动配置。
curl -sS https://here.now/api/v1/domains/example.com \
-H "Authorization: Bearer {API_KEY}"
状态在 DNS 验证且 SSL 激活之前为 pending,之后变为 active。对于根域名,响应包括带有 TXT 记录详细信息的 ownership_verification,如果存在问题,可能还包括 verification_errors。
curl -sS https://here.now/api/v1/domains \
-H "Authorization: Bearer {API_KEY}"
curl -sS -X DELETE https://here.now/api/v1/domains/example.com \
-H "Authorization: Bearer {API_KEY}"
移除该域名及其下的所有链接。
链接将站点连接到你的句柄或自定义域名上的某个位置。相同的端点适用于两者 —— 省略 domain 参数以定位你的句柄,或包含它以定位自定义域名。
/api/v1/links 和 /api/v1/links/:location__root__链接到你的句柄:
curl -sS https://here.now/api/v1/links \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"location": "docs", "slug": "bright-canvas-a7k2"}'
链接到自定义域名:
curl -sS https://here.now/api/v1/links \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"location": "", "slug": "bright-canvas-a7k2", "domain": "example.com"}'
空的 location 使其成为主页(例如 https://example.com/)。使用 "location": "docs" 对应 https://example.com/docs/。
每周安装量
2.9K
仓库
GitHub 星标数
12
首次出现
2026 年 2 月 20 日
安全审计
安装于
codex2.8K
opencode2.8K
gemini-cli2.8K
cursor2.8K
kimi-cli2.8K
github-copilot2.8K
Skill version: 1.8.3
Create a live URL from any file or folder. Static hosting only.
To install or update (recommended): npx skills add heredotnow/skill --skill here-now -g
For repo-pinned/project-local installs, run the same command without -g.
curl, file, jq$HERENOW_API_KEY~/.herenow/credentials./scripts/publish.sh {file-or-dir}
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.
./scripts/publish.sh {file-or-dir} --slug {slug}
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.
Pass --client so here.now can track reliability by agent:
./scripts/publish.sh {file-or-dir} --client cursor
This sends X-HereNow-Client: cursor/publish-sh on publish API calls. If omitted, the script sends a fallback value.
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.
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.
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.| Anonymous | Authenticated
---|---|---
Max file size | 250 MB | 5 GB
Expiry | 24 hours | Permanent (or custom TTL)
Rate limit | 5 / hour / IP | 60 / hour free, 200 / hour hobby
Account needed | No | Yes (get key at here.now)
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"}'
3. Tell the user: "Check your inbox for a sign-in code from here.now and paste it here." 4. Verify the code and get the API key:
curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'
5. Save the returned apiKey yourself (do not ask the user to do this):
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
| 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} |
curl -sS -X POST https://here.now/api/v1/publish/{slug}/duplicate \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'
Creates a full copy of the site under a new slug. All files are copied server-side — no upload needed. The new site is immediately live. Requires authentication and ownership of the source site.
Optionally override viewer metadata (shallow-merged with the source):
curl -sS -X POST https://here.now/api/v1/publish/{slug}/duplicate \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"viewer": {"title": "My Copy"}}'
For delete, metadata patch (including password protection), duplicate, claim, list, and other operations, see references/REFERENCE.md.
Handles are user-owned subdomain namespaces on here.now (for example, yourname.here.now) that route paths to your sites. Claiming a handle requires a paid plan (Hobby or above).
/api/v1/handleBring your own domain (e.g. example.com) and serve sites from it. Custom domains: 1 on Free, up to 5 on Hobby.
/api/v1/domains and /api/v1/domains/:domaincurl -sS https://here.now/api/v1/domains \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'
The response includes is_apex, DNS instructions, and (for apex domains) an ownership_verification object with TXT record details.
DNS setup by domain type:
docs.example.com): Add a CNAME record pointing to fallback.here.now.example.com):
fallback.here.now. (Your DNS provider may call this ANAME or CNAME flattening.)name and value from the ownership_verification field in the response.SSL is provisioned automatically once DNS is verified.
curl -sS https://here.now/api/v1/domains/example.com \
-H "Authorization: Bearer {API_KEY}"
Status is pending until DNS is verified and SSL is active, then becomes active. For apex domains, the response includes ownership_verification with the TXT record details and may include verification_errors if there are issues.
curl -sS https://here.now/api/v1/domains \
-H "Authorization: Bearer {API_KEY}"
curl -sS -X DELETE https://here.now/api/v1/domains/example.com \
-H "Authorization: Bearer {API_KEY}"
Removes the domain and all links under it.
Links connect a site to a location on your handle or a custom domain. The same endpoints work for both — omit the domain parameter to target your handle, or include it to target a custom domain.
/api/v1/links and /api/v1/links/:location__root__Link to your handle:
curl -sS https://here.now/api/v1/links \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"location": "docs", "slug": "bright-canvas-a7k2"}'
Link to a custom domain:
curl -sS https://here.now/api/v1/links \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"location": "", "slug": "bright-canvas-a7k2", "domain": "example.com"}'
An empty location makes it the homepage (e.g. https://example.com/). Use "location": "docs" for https://example.com/docs/.
Full docs: https://here.now/docs
Weekly Installs
2.9K
Repository
GitHub Stars
12
First Seen
Feb 20, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykFail
Installed on
codex2.8K
opencode2.8K
gemini-cli2.8K
cursor2.8K
kimi-cli2.8K
github-copilot2.8K
Vercel Web界面规范检查工具 - 自动检测代码是否符合Web设计指南
202,600 周安装
Council多模型共识委员会:AI智能体并行评审验证、头脑风暴与研究工具
1,500 周安装
Jakarta Bean Validation 单元测试指南:JUnit 5 测试自定义验证器与内置约束
1,500 周安装
React Three Fiber 交互指南:3D 网页交互事件与光线投射实现
1,500 周安装
Django安全最佳实践指南 - 防范常见漏洞,配置生产环境安全设置
1,700 周安装
shadcn/ui 组件安装与自定义指南:React 主题化UI组件库完整教程
1,600 周安装
Uncodixify 指南:避免 AI 风格 UI,打造人类设计的专业界面 | 反 Codex 设计
1,700 周安装
Agent name for attribution (e.g. cursor) |
--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) |