Skip to content

tami1A84/nsite-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nsite-cli

nsite-cli は、NIP-5A / nsite 静的Webサイトを 作成・ローカル確認・ビルド・Blossomアップロード・Nostr公開 するための小さなGo製CLIです。

Vimユーザーが vim とCLIだけで小さな静的サイト/ミニアプリを作り、ローカルで確認し、そのままNIP-5A形式で公開できる体験を目指しています。

mattnさんの algia を参考に、以下の方針で作っています。

  • Go製の単一バイナリ
  • ~/.config/nsite-cli/config.json に設定を置く
  • JSONでリレー、秘密鍵、Blossom server、nsite hostを設定
  • サブコマンド中心のシンプルなCLI
  • Nostr / Blossom / NIP-5A の細かい処理をCLIで隠蔽

Caution

privatekey に本番アカウントの nsec を直接入れる場合は十分注意してください。テスト中は専用の開発用鍵を使うことを推奨します。


インストール / ビルド

git clone https://github.com/tami1A84/nsite-cli.git
cd nsite-cli
make build

または:

go build -o nsite-cli ./cmd/nsite-cli

設定ファイル

設定ファイルの場所:

~/.config/nsite-cli/config.json

雛形を作成:

./nsite-cli config init

例:

{
  "relays": {
    "wss://relay-jp.nostr.wirednet.jp": {
      "read": true,
      "write": true,
      "search": false
    }
  },
  "privatekey": "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "blossom": {
    "servers": [
      "https://blossom.example.com"
    ]
  },
  "nsite": {
    "host": "nsite.example.com"
  }
}

簡易形式も利用できます。

{
  "relays": {},
  "privatekey": "nsec...",
  "blossomServers": ["https://blossom.example.com"],
  "nsite": {
    "host": "nsite.example.com"
  }
}

configコマンド

設定ファイルのパスを確認:

./nsite-cli config path

nsite hostを設定:

./nsite-cli config set nsite.host nsite.example.com

確認:

./nsite-cli config get nsite.host

削除:

./nsite-cli config unset nsite.host

Blossom serverを設定:

./nsite-cli config set blossom.servers https://blossom.primal.net

複数指定:

./nsite-cli config set blossom.servers https://blossom.primal.net,https://example.com

秘密鍵を設定:

./nsite-cli config set privatekey nsec1...

基本的な使い方

プロジェクト作成:

./nsite-cli init vim-cheat --d vimcheat
cd vim-cheat

ローカル確認:

../nsite-cli dev

デフォルトでは以下で起動します。

http://localhost:3128

NIP-5A manifest previewを生成:

../nsite-cli build

出力:

.nsite/manifest-preview.json

公開:

../nsite-cli publish

確認を省略する場合:

../nsite-cli publish -y

コマンド一覧

init      新しいnsiteプロジェクトを作成
dev       public/ をローカルHTTPサーバーで配信
build     ファイルのSHA-256を計算し、NIP-5A manifest previewを生成
publish   ファイルをBlossomへアップロードし、kind 15128 / 35128をNostrリレーへpublish
inspect   event id / nevent からNIP-5Aイベントを確認
doctor    config、プロジェクト、リレー、Blossom取得可否を確認
config    config.jsonの作成・参照・更新

NIP-5A対応

nsite-cli は以下のNIP-5Aイベントを生成します。

  • root site: kind: 15128
  • named site: kind: 35128

named siteでは d tagを使います。

["d", "vimcheat"]

静的ファイルは path tagとしてmanifestに入ります。

["path", "/index.html", "<sha256>"]

Blossom serverは server tagとして入ります。

["server", "https://blossom.example.com"]

canonical URL / pubkeyB36

NIP-5A named siteのcanonical host labelは以下です。

<pubkeyB36><dTag>

pubkeyB36 は、32-byte raw pubkeyをbase36に変換し、50文字にゼロ埋めした値です。

publishinspect では以下を表示します。

canonical:
  pubkeyB36: ...
  host label: <pubkeyB36><dTag>
  url: https://<pubkeyB36><dTag>.<nsite.host>/

nsite.host が未設定の場合は、以下で設定できます。

./nsite-cli config set nsite.host nsite.example.com

inspect

公開済みイベントを確認:

./nsite-cli inspect <event-id-or-nevent>

raw JSONを表示:

./nsite-cli inspect <event-id-or-nevent> --json

一時的にhostを指定:

./nsite-cli inspect <event-id-or-nevent> --host nsite.example.com

doctor

./nsite-cli doctor

確認内容:

  • config path
  • privatekey が有効な nsec
  • read/write relay
  • Blossom server
  • nsite.json
  • manifest生成
  • relay接続
  • Blossom上で各blobを取得できるか

ネットワーク確認を飛ばす場合:

./nsite-cli doctor --online=false

プロジェクト構成

nsite-cli/
  cmd/nsite-cli/        CLI entrypoint
  internal/config/      config.json読み書き
  internal/project/     nsite.jsonとプロジェクト雛形
  internal/nip5a/       NIP-5A manifest生成
  internal/blossom/     Blossom upload/check
  docs/                 設計書・計画
  examples/             config例

ドキュメント


English

nsite-cli is a small Go CLI for creating, testing, building, and publishing NIP-5A / nsite static websites.

It is intentionally modeled after mattn's algia: simple JSON config under ~/.config, small subcommands, and Nostr-first publishing.

Quick start

git clone https://github.com/tami1A84/nsite-cli.git
cd nsite-cli
make build
./nsite-cli config init
./nsite-cli init vim-cheat --d vimcheat
cd vim-cheat
../nsite-cli dev
../nsite-cli build
../nsite-cli publish

Config

Create ~/.config/nsite-cli/config.json:

{
  "relays": {
    "wss://relay-jp.nostr.wirednet.jp": {
      "read": true,
      "write": true,
      "search": false
    }
  },
  "privatekey": "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "blossom": {
    "servers": [
      "https://blossom.example.com"
    ]
  },
  "nsite": {
    "host": "nsite.example.com"
  }
}

Shortcut form is also accepted:

{
  "relays": {},
  "privatekey": "nsec...",
  "blossomServers": ["https://blossom.example.com"],
  "nsite": {
    "host": "nsite.example.com"
  }
}

Commands

  • init: create a minimal static app project
  • dev: serve project locally
  • build: hash files and generate a NIP-5A manifest preview
  • publish: upload files to Blossom and publish kind 15128 or 35128
  • inspect: inspect a NIP-5A event by event id or nevent
  • doctor: check config, project, relays, and Blossom availability
  • config: create, read, and update config values

See docs/DESIGN.md and docs/PLAN.md.

About

nsite-cli は、NIP-5A / nsite 静的Webサイトを 作成・ローカル確認・ビルド・Blossomアップロード・Nostr公開 するための小さなGo製CLIです。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages