here-now について
here-now は、エージェントがウェブサイトやファイルを公開 URL に公開するためのスキルです。個人・チームでの公開、アクセス制御、バージョン管理に対応します。
主な機能
- 01ファイルやフォルダーを公開 URL に公開
- 02パスワード・招待制のアクセス制御
- 03共有ワークスペースへの公開
- 04カスタムドメインと独自 URL
- 05不変のサイトバージョンと復元
活用シーン
- 01ローカルフォルダーからサイトを公開
- 02公開 URL でファイルを共有
- 03チームのワークスペースにサイトを公開
- 04以前のサイトバージョンを復元
MCP 対応
このスキルは here.now のスクリプトまたは公開 API を使った公開をエージェントに案内します。MCP 対応については記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ heredotnow/ skill --skill here-nowインストール後、Claude Code で/here-nowを入力して読み込まれたか確認します。
同梱ファイルscripts/drive.shscripts/publish.sh
詳細
here.now
スキルバージョン:1.33.0
here.now を使うと、エージェントはウェブサイトやファイルを数秒で公開し、ライブ URL を取得できます。
基本となるのは Site です。ファイルまたはフォルダーを公開すると、{slug}.here.now またはカスタムドメインでライブ URL を取得できます。すべての Site にはアクセス制御があり、公開リンク(デフォルト)、パスワード、または招待されたユーザーのみの制限付きアクセスから選べます。
here.now には ワークスペース もあります。Site がチームに属し、{label}.{workspace}.here.now で公開される共有チームアカウントです(下記の「ワークスペースへの公開」を参照)。
有料プランの個人アカウントでは、バニティ URL を有効にできます。ユーザー名が {name}.here.now になり、それ以降に公開するすべての Site(あなたを通じて公開するものも含む)は、タイトルに基づく読みやすい {site-name}.{name}.here.now アドレスでも公開されます。ユーザーがすべての Site を自分の名前で公開したい場合は、PUT /api/v1/vanity-urls/subdomain に {"subdomain": "name"} を指定すると有効になります。選択した 1 つのホスト名で 1 つの Site を公開する場合はカスタムドメインを、チームが所有する Site の場合はワークスペースを使います。最終処理のレスポンスには primaryUrl と urls[](優先度順)が含まれます。primaryUrl が siteUrl と異なる場合は、primaryUrl を案内してください。https://here.now/docs#vanity-urls を参照してください。
インストールまたは更新する場合(推奨):npx skills add heredotnow/skill --skill here-now -g
リポジトリに固定するインストールまたはプロジェクトローカルへのインストールでは、同じコマンドを -g なしで実行してください。
最新のドキュメント
here.now の機能、特徴、ワークフローに関する質問に回答する前に、必ず最新のドキュメントを読んでください。
次の場合にドキュメントを読んでください。
- 会話で最初に here.now についてやり取りするとき
- ユーザーから操作方法を尋ねられたとき
- ユーザーから可能なこと、サポートされていること、推奨されることを尋ねられたとき
- 機能がサポートされていないと伝える前
最新のドキュメントの確認が必要なトピック(ローカルのスキルテキストだけに頼らないでください):
- Site のアクセス制御(パスワードと制限付きアクセス)
- ワークスペース(チームアカウント、メンバーシップ、ラベル URL)
- フォルダー(ユーザーのダッシュボードの整理。https://here.now/docs#folders を参照)
- Drive と Drive の共有
- カスタムドメイン
- バニティ URL(
{site-name}.{name}.here.now。https://here.now/docs#vanity-urls を参照) - ドメインの購入(まず検索して見積もりを提示し、購入を実行する前に価格と更新価格を伝え、ユーザーから明示的な同意を得てください。購入は取り消せません。https://here.now/docs#buy-domain を参照)
- Site Data
- 公開プロフィール
- プロキシルートとサービス変数
- 制限とクォータ
- SPA ルーティング
- 所有者の Site 検索
- Site 分析
- Site のバージョン履歴、プレビュー、ロールバック
- エラー処理と修復
- 機能の提供状況
ドキュメントの内容とライブ API の挙動が一致しない場合は、ライブ API の挙動を信頼してください。
https://here.now/docs をコマンドラインで取得すると(curl、WebFetch など)、完全な HTML ドキュメントではなく、Markdown の要約が返されます。そこには公開が安定しているすべてのエンドポイントが 1 行の説明付きで掲載されていますが、このスキルに記載されたセクションアンカー(/docs#access-control など)は HTML 版でのみ参照でき、具体的な使用例もそちらにあります。リクエスト/レスポンスのスキーマとパラメーターをすべて確認するには、https://here.now/openapi.json を取得してください。Markdown の要約だけで操作がサポートされていないと判断せず、先に OpenAPI 仕様を確認してください。
ドキュメントの取得に失敗するかタイムアウトした場合は、ローカルのスキルとライブ API/スクリプトの出力を参照してください。実行中の操作では、ライブ API の挙動を優先してください。
要件
- 必須バイナリ:
curl、file、jq - 必須ネットワークアクセス:
https://here.now(API)およびhttps://*.r2.cloudflarestorage.com(ファイルはストレージに直接 PUT でアップロードされます。正確なホストはアップロード URL ごとに指定されています)。サンドボックス内または送信先許可リストのあるプロキシ経由で使用する場合は、両方のホストを許可してください。here.nowだけを許可すると、作成リクエストは成功しますが、アップロードはすべて失敗し、最終処理でファイルの不足が報告されます。 - 任意の環境変数:
$HERENOW_API_KEY - 任意の Drive トークン変数:
$HERENOW_DRIVE_TOKEN - 任意の認証情報ファイル:
~/.herenow/credentials - 同梱ヘルパー:
- Site の公開用:
./scripts/publish.sh - プライベートな Drive ストレージ用:
./scripts/drive.sh
- Site の公開用:
ヘルパースクリプトがインストールされていない場合
環境によっては、バンドルされた scripts/ ディレクトリがない状態でこのドキュメントが提供されます(たとえば、$HERENOW_API_KEY のみを提供するホステッドプラットフォームのインテグレーションなど)。その場合は、まずバンドル全体をインストールするか、
npx skills add heredotnow/skill --skill here-now -g
API を直接呼び出してください。このドキュメントに記載されたすべてのスクリプトのワークフローは、公開 API のラッパーです。公開は3段階のフローです。files 配列([{path, size}])を指定して POST /api/v1/publish を呼び出すと、署名付きアップロード先が返されます。各ファイルのバイト列を、返された URL に PUT で送信し、その後、返された finalizeUrl に POST を送信します。finalize が成功するまで、サイトは公開されません。リクエスト/レスポンスの例を含む詳しい手順:https://here.now/docs#create(続いて #upload、#finalize)、機械可読なスキーマ:https://here.now/openapi.json。
サイトを作成する
./scripts/publish.sh {file-or-dir}
公開 URL を出力します(例:https://bright-canvas-a7k2.here.now/)。
内部では、作成/更新 -> ファイルのアップロード -> finalize という3段階のフローです。finalize が成功するまで、サイトは公開されません。
API キーがない場合、24時間で期限切れとなる匿名サイトが作成されます。 保存済みの API キーがある場合、サイトは永続します。
ファイル構成: HTML サイトの場合、公開するディレクトリのルートに index.html を置き、サブディレクトリの中には置かないでください。ディレクトリの内容がサイトのルートになります。たとえば、my-site/index.html がある my-site/ を公開してください。my-site/ を含む親フォルダーを公開しないでください。
HTML を含まない生ファイルも公開できます。単一ファイルの場合は、画像、PDF、動画、音声に対応した高機能な自動ビューアーが表示されます。複数のファイルの場合は、フォルダーを移動できる自動生成のディレクトリ一覧と画像ギャラリーが表示されます。
WebAssembly ビルド(Emscripten、Rust、Godot、Unity、Pyodide、WebLLM など)は、任意のフォルダーと同じように公開できます。スクリプトにビルド出力ディレクトリを指定すれば実行でき、.wasm は適切に配信され、圧縮されます。ビルドでスレッドを使用する場合(SharedArrayBuffer:Emscripten の -pthread、Thread Support を有効にした Godot、Unity のマルチスレッド機能)は、--cross-origin-isolation を渡してください。シングルスレッドのビルドでは不要です。publish_result.warning= の行に WebAssembly に関する記載がある場合、Site に .wasm はありますが、この設定はオフです。詳細とトレードオフ:https://here.now/docs#wasm
既存のサイトを更新する
./scripts/publish.sh {file-or-dir} --slug {slug}
匿名サイトを更新する場合、スクリプトは .herenow/state.json から claimToken を自動的に読み込みます。上書きするには --claim-token {token} を渡してください。
認証済みの更新には、保存済みの API キーが必要です。
古いベースバージョンの保護。 ローカルファイルを公開してから、ライブサイトが変更されている可能性があります。オーナーは別のツール(別のエージェント、here.now Editor、チームメイト)から編集できます。スクリプトは公開のたびにライブの versionId を .herenow/state.json に記録し、同じディレクトリから同じスラッグを次回更新する際に、それを baseVersionId として送信します。ライブサイトがそのバージョンより先に進んでいる場合、更新は code: "version_conflict" とともに拒否され、ライブのバージョンと、それを作成したものが示されます。その場合は、メッセージをユーザーに伝え、(a)GET /api/v1/publish/{slug}/files(各ファイルの url を含む一覧)と GET /api/v1/publish/{slug}/files/{path}(ファイルのバイトデータ。オーナーの API キーを使用し、訪問者用パスワードなしでパスワード保護されたサイトやアクセス制限付きサイトにも対応)でライブファイルを読み込み、ローカルファイルに反映して再公開するか、(b)--overwrite を付けて再実行し、ライブバージョンをそのまま置き換える方法を提案してください。最近更新していない認証済みサイトのローカルファイルを編集する前に、まず変更の有無を確認してください。GET /api/v1/publish/{slug} は currentVersionId に加え、currentVersionSource と currentVersionCreatedAt(何がいつ変更したか。例:editor)を返します。ID が状態ファイルの versionId と異なる場合は、編集前にライブファイルを読み込んでください。公開済みバージョンが共有される正本です。保護されたサイトでは公開 URL が制限されているため、所有するサイトの読み取りに公開 URL を取得してはいけません。また、ユーザー自身のサイトを読み取るために訪問者用パスワードを尋ねてはいけません。匿名サイトではこれらのエンドポイントを呼び出せないため、保存済みの状態とサーバー側の適用に依存します。baseVersionId を省略する(または --overwrite を使う)と、チェックなしで全体が置き換えられます。これは、生の API 呼び出し元に対する現在のデフォルト動作です。
公開のたびに、変更不可能なバージョンが記録されます。ユーザーがサイトの以前のバージョンを見たい、公開を取り消したい、またはロールバックしたいと言った場合は、GET /api/v1/publish/{slug}/versions で履歴を一覧表示し、POST /api/v1/publish/{slug}/versions/{versionId}/restore ですぐに復元してください(復元しても現在のアクセスモード、パスワード、ドメインは維持されます)。バージョンへのアクセスは、個人向け、ワークスペース向けを問わず、すべてのプランに含まれています。バイト単位で同一の内容を再公開した場合、新しいバージョンは作成されず、finalize から unchanged: true が返されます。https://here.now/docs#versions を参照してください。
サインイン済みのユーザーには公開プロフィールもあります。エージェントは、プロフィールに表示するサイトの選択や非表示化、API を通じたプロフィール設定の管理をユーザーに支援できます。API のドキュメントは https://here.now/docs#profile にあります。
ワークスペースに公開する
ワークスペースはチームで共有するアカウントです。ワークスペースに公開したサイトは、公開したメンバーではなくチームの所有物となり、{label}.{workspace}.here.now という覚えやすい URL が付与されます。
./scripts/publish.sh {file-or-dir} --workspace {subdomain}
保存済みの API キーと、ワークスペースへの所属が必要です。GET /api/v1/accounts で、ユーザーのワークスペース(および有効なサブドメイン)を一覧表示できます。ワークスペースのサイトはデフォルトでメンバーのみがアクセスできる設定となり、スクリプトはチームの URL を publish_result.account_url として報告します。
それ以外(ワークスペースの作成、招待と自動参加、ワークスペースのドメインと変数、ラベルの変更)については、最新のドキュメントを参照してください。
→ https://here.now/docs#workspaces
サイトのアクセス制御
サイトでは、一度に1つのアクセスモードを使用します。
- anyone_with_link(デフォルト):URLを知っていれば誰でも閲覧できます。
- password:訪問者は共有パスワードを入力する必要があります。
- restricted:招待されたユーザーのみが対象です。オーナーが許可した確認済みのメールアドレスまたはメールドメインだけが閲覧できます。
ワークスペース所有のサイトは、デフォルトで account_members(訪問者はサインインし、ワークスペースのメンバーである必要があります)に設定され、公開、パスワード付き公開、restricted もサポートされます。ワークスペースのサイトで restricted を指定すると、ワークスペースメンバーにサイトごとのゲスト許可リストを加えたアクセスになります。メンバーは常にアクセスでき、許可リストに登録されたメールアドレスやドメインは、そのサイトだけを閲覧できる外部ゲストです。ゲストがワークスペースメンバーになることはありませんが、そのゲスト自身のダッシュボードには共有サイトとして表示されます。ワークスペースで restricted を使用するには、ゲストのメールアドレスまたはドメインを少なくとも1つ指定する必要があります。許可リストが空の場合は400エラーで拒否されます(メンバーのみのアクセスには account_members を使用してください)。https://here.now/docs#workspace-access を参照してください。
GET/PATCH /api/v1/publish/{slug}/access でアクセスを管理します(パスワードはメタデータエンドポイントで設定します)。制限付きアクセスには、取得済みのサイトが必要です。PATCHでは許可リスト全体が置き換えられるため、読み取り、マージしてから書き込んでください。アクセス制御を扱う前に、現在のドキュメントをお読みください。
→ https://here.now/docs#access-control
フォルダー(ユーザーのダッシュボードを整理する)
サインイン済みのユーザーは、here.now ダッシュボードでサイトをフォルダーにまとめることができます。フォルダーはサイトのアドレスではなくアカウントに関する情報です。階層はなく、サイトごとに1つのフォルダーに所属し、ワークスペースのすべてのメンバーで共有され、訪問者には表示されません。サイトをフォルダーに入れても、URLやアクセス権は変わりません。
ユーザーがサイトのフォルダー、プロジェクト、クライアント名を指定した場合(「これを Reports フォルダーに公開して」「Acme の下に入れて」など)、公開時にそのフォルダーに格納します。
./scripts/publish.sh {file-or-dir} --folder "Reports"
--folder にはフォルダー名またはIDを指定します。名前は大文字と小文字を区別せずに照合され、まだ存在しない場合は作成されるため、初回から使用できます。スクリプトは結果を publish_result.folder として報告します。APIキーが必要です(匿名サイトには格納先のアカウントがありません)。また、--slug(既存のサイトを移動)や --workspace(ワークスペースのフォルダー)と併用できます。
スクリプトを使わない場合、同じフィールドを POST /api/v1/publish、PUT /api/v1/publish/{slug}、PATCH /api/v1/publish/{slug}/metadata で folder として指定します(新しいバージョンを公開せずにサイトをフォルダーに格納する方法です。「folder": null」にすると、サイトをルートに戻します)。GET /api/v1/folders はアカウントのフォルダー一覧を返し、GET /api/v1/publishes?folder={name-or-id}は指定したフォルダー内のサイト一覧を返します。名前の変更と削除にはPATCH/DELETE /api/v1/folders/{id}` を使用します(フォルダーを削除すると、そのフォルダーに格納されていたサイトはルートに戻ります。ほかのものは削除されません)。アカウントごとに最大50個のフォルダーを作成でき、名前は最大60文字です。
ユーザーが格納を依頼していないフォルダーを作成したり、サイトを格納したりしないでください。 フォルダー構成はユーザー自身のものです。各フォルダーはダッシュボードにタイルとして表示されます。https://here.now/docs#folders を参照してください。
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 がある場合はそれに従い、書き込み時には ETag を保持してください。pathPrefix が null の場合は、Drive 全体へのアクセスを意味します。このスキルを利用できる場合は ./scripts/drive.sh を優先してください。利用できない場合は、記載されている API 操作を直接呼び出してください。
クライアントの識別情報
--client には、実行しているエージェント製品またはハーネスの名前を指定します。cursor、claude-code、codex、grok-bot、openclaw、gemini などです。
./scripts/publish.sh {file-or-dir} --client claude-code
公開 API の呼び出し時に X-HereNow-Client: claude-code/publish-sh が送信されます。省略すると、スクリプトは代替値を送信します。
プラットフォームの名前を使い、そこで与えられた名前は使わないでください。Grok Bot 内で「research-bot」という名前のボットを実行している場合、正しい値は research-bot ではなく grok-bot です。ボット名、ペルソナ、サブエージェント、プロジェクト名、スレッド名では、プラットフォームを識別できません。インスタンス名も記録する場合は、スラッシュの後に追加してください。
./scripts/publish.sh {file-or-dir} --client grok-bot/research-bot
ハーネスを使わずに単独で実行するエージェントのみ、自身の製品名を使用してください。
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 時間)から永続サイトにアップグレードするには、次の手順に従ってください。
- ユーザーにメールアドレスを尋ねます。
- 1 回限りのサインインコードをリクエストします。
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": "4fQ9tK2mXb7cW1pZ",
"claimUrl": "https://here.now/c/4fQ9tK2mXb7cW1pZ",
"expiresAt": "2026-02-18T01:00:00.000Z"
}
}
}
サイトを作成または更新する前に、このファイルを確認して以前のスラッグを調べてもかまいません。
.herenow/state.json は内部キャッシュとしてのみ扱ってください。
このローカルファイルのパスを URL として提示しないでください。また、認証モード、有効期限、請求 URL の正しい情報源として使用しないでください。
ユーザーに伝える内容
公開済みサイトの場合:
- 必ず現在のスクリプト実行で得られた
siteUrlを共有してください。 - サイト URL は、その行にほかの文字を含めず、単独の行に記載してください。末尾に句読点、ダッシュ、ステータスなどを付けないでください(チャットクライアントは空白までをすべて URL として自動リンクし、続く文字列が URL に連結されてしまいます)。「永続的で、アカウントに保存済み」などのステータスの詳細は次の行に記載してください。
- 認証モードを判断するには、スクリプトの stderr に出力された
publish_result.*の行を読み、内容に従ってください。 publish_result.warning=の行は致命的ではありません。サイトは公開されていますが、対応が必要な問題があります(無効な.herenow/proxy.json、または--cross-origin-isolationを指定せずに公開された.wasmビルドなど)。問題に対処するか、ユーザーに伝えてください。publish_result.account_urlが空でない場合(ワークスペースへの公開時)は、siteUrlと併せて主要なチーム URL として共有してください。publish_result.primary_urlが空でない場合は、最初に共有してください。siteUrlも引き続き有効です。publish_result.folderが空でない場合は、サイトがダッシュボード内のそのフォルダーに保存されていることを伝えてください。publish_result.auth_mode=authenticatedの場合:サイトは永続的で、ユーザーのアカウントに保存されていることを伝えてください。クレーム URL は不要です。publish_result.auth_mode=anonymousの場合:サイトは24 時間後に期限切れになることを伝えてください。サイトを永続的に保存できるよう、クレーム URL(publish_result.claim_urlが空でなく、https://で始まる場合)を共有してください。クリック可能なリンクとして、バイト単位で一字一句そのままコピーしてください。短縮、伏せ字化、要約、または一部を...に置き換えてはいけません。変更されたクレームリンクは機能しません。クレームトークンは一度だけ返され、復元できないことを警告してください。- クレーム URL や認証ステータスを確認するために
.herenow/state.jsonを調べるよう、ユーザーに伝えてはいけません。
Drive の場合:
- Drive のファイルを公開 URL として説明しないでください。
- スコープ付きトークンで共有されていない限り、Drive の内容は非公開であることを伝えてください。
- 別のエージェントとアクセスを共有する場合は、
pathPrefixを狭く設定し、有効期間を短くしたスコープ付きトークンを優先してください。
publish.sh のオプション
| フラグ | 説明 |
|---|---|
--slug {slug} | 新規作成の代わりに既存のサイトを更新します |
--workspace {subdomain} | 所属しているワークスペース(チームアカウント)に公開します |
--claim-token {token} | 匿名での更新時にクレームトークンを上書きします |
--overwrite | 古いベースの確認をスキップして、公開中のバージョンを置き換えます |
--title {text} | ビューアーのタイトル(HTML 以外のサイト) |
--description {text} | ビューアーの説明 |
--folder {name-or-id} | サイトをダッシュボードのフォルダーに保存します(存在しない場合は名前で作成します。認証済みの場合のみ) |
--ttl {seconds} | 有効期限を設定します(認証済みの場合のみ) |
--client {name} | 帰属表示用のエージェントハーネス — 実行環境のプラットフォーム(例:cursor、grok-bot)であり、ボット/ペルソナの名前ではありません。必要に応じて grok-bot/research-bot のように追記できます |
--base-url {url} | API のベース URL(デフォルト:https://here.now) |
--allow-nonherenow-base-url | デフォルト以外の --base-url への認証情報の送信を許可します |
--api-key {key} | API キーを上書きします(認証情報ファイルの使用を推奨) |
--spa | SPA ルーティングを有効にします(不明なパスには index.html を配信します) |
--cross-origin-isolation | COOP/COEP ヘッダーを送信し、スレッド化された WebAssembly(SharedArrayBuffer)を実行できるようにします。https://here.now/docs#wasm を参照してください |
publish.sh 以外の操作
Drive の操作には ./scripts/drive.sh または Drive API を使用してください。アカウントやサイトのより広範な管理(サイトデータ、検索、分析、プロフィール、削除、メタデータ、アクセス制御、ドメイン、変数、プロキシルート、複製など)については、最新のドキュメントを参照してください。
ドキュメント全文:https://here.now/docs