项目:
heredotnow/skill,here.now 服务的公共代理技能。许可证: MIT,如上游
README.md中所声明。上游仓库未提供单独的LICENSE文件,因此此处也未包含。快照: 截至 2026-05-22 日
heredotnow/skill/here-now的冻结副本。维护版本位于上游,从此快照后可能已发生变更。
here.now
技能版本:1.15.5
here.now 让代理可以发布网站并将私有文件存储在云端 Drive 中。
使用 here.now 完成两项任务:
- Sites:在
{slug}.here.now发布网站和文件。 - Drives:在云文件夹中存储私有代理文件。
要安装或更新(推荐):npx skills add heredotnow/skill --skill here-now -g
对于仓库固定/项目本地安装,请在不加 -g 的情况下运行相同命令。
当前文档
在回答关于 here.now 能力、特性或工作流程的问题之前,请阅读当前文档:
请阅读文档:
- 在对话中首次涉及 here.now 时
- 当用户询问如何做某事时
- 当用户询问哪些功能受支持或推荐时
- 在告诉用户某个功能不受支持之前
需要参考当前文档的主题(不要仅依赖本地技能文本):
- Drives 和 Drive 共享
- 自定义域名
- 公开资料
- 代理路由和服务变量
- 子域名句柄和链接
- 限制和配额
- SPA 路由
- 所有者站点搜索
- 错误处理和修复
- 功能可用性
如果文档和实时 API 行为不一致,请以实时 API 行为为准。
如果文档获取失败或超时,请继续使用本地技能和实时 API/脚本输出。对于活跃操作,优先使用实时 API 行为。
前置要求
- 必需的可执行文件:
curl、file、jq - 可选环境变量:
$HERENOW_API_KEY - 可选的 Drive 令牌变量:
$HERENOW_DRIVE_TOKEN - 可选的凭据文件:
~/.herenow/credentials - 捆绑的辅助脚本:
./scripts/publish.sh用于发布站点./scripts/drive.sh用于私有 Drive 存储
创建一个站点
./scripts/publish.sh {文件或目录}
输出实时 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 密钥。
已登录用户还拥有公开资料。代理可以帮助用户在其资料上显示或隐藏站点,并通过 https://here.now/docs#profile 上记录的 API 管理资料设置。
使用 Drive
当用户需要代理文件的私有云存储时,请使用 Drive:文档、上下文、记忆、计划、资产、媒体、研究、代码以及任何无需作为网站发布的应持久保存的内容。
每个已登录账户都有一个名为 My Drive 的默认 Drive。
./scripts/drive.sh default
./scripts/drive.sh ls My Drive
./scripts/drive.sh put My Drive notes/today.md --from ./notes/today.md
./scripts/drive.sh cat My Drive notes/today.md
./scripts/drive.sh share My Drive --perms write --prefix notes/ --ttl 7d
使用作用域 Drive 令牌进行代理间交接。如果您收到一个 herenow_drive 共享块,请使用其 token 作为 Authorization: Bearer <token> 发送到 api_base,并在 pathPrefix 存在时予以遵守,并在写入时保留 ETags。pathPrefix 为 null 表示完整的 Drive 访问权限。如果技能可用,优先使用 ./scripts/drive.sh;否则直接调用列出的 API 操作。
客户端归属
传递 --client 参数,以便 here.now 可以按代理跟踪可靠性:
./scripts/publish.sh {文件或目录} --client cursor
这将在发布 API 调用时发送 X-HereNow-Client: cursor/publish-sh。
如果省略,脚本将发送一个回退值。
API 密钥存储
发布脚本从以下来源读取 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)提交到源代码控制。
获取 API 密钥
要从匿名(24小时)站点升级到永久站点:
- 询问用户的电子邮件地址。
- 请求一次性登录码:
curl -sS https://here.now/api/auth/agent/request-code \
-H "content-type: application/json" \
-d '{"email": "[email protected]"}'
- 告诉用户:“检查您的收件箱,查找来自 here.now 的登录码,并将其粘贴到这里。”
- 验证代码并获取 API 密钥:
curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"[email protected]","code":"ABCD-2345"}'
- 自己保存返回的
apiKey(不要要求用户这样做):
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
状态文件
每次创建/更新站点后,脚本会写入工作目录下的 .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 或认证状态。
对于 Drives:
- 不要将 Drive 文件描述为公共 URL。
- 告诉用户 Drive 内容是私有的,除非通过作用域令牌共享。
- 在与其他代理共享访问权限时,优先使用具有窄
pathPrefix和短 TTL 的作用域令牌。
publish.sh 选项
| 标志 | 描述 |
|---|---|
--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 密钥覆盖(优先使用凭据文件) |
--spa | 启用 SPA 路由(为未知路径提供 index.html) |
超越 publish.sh
对于 Drive 操作,请使用 ./scripts/drive.sh 或 Drive API。对于更广泛的账户和站点管理——搜索、资料、删除、元数据、密码、域名、子域名句柄、链接、变量、代理路由、复制等——请查看当前文档: