核心用法
nostr-nak 是对 Nostr Army Knife (nak) CLI 工具的通用封装,用于在 Nostr 去中心化社交网络协议上执行事件查询与发布操作。关键特性如下:
PTY 强制要求:nak 在非交互式环境中因 stdout 缓冲会挂起,必须使用 script -q -c "nak ..." /dev/null | cat 包装命令以强制伪终端。
中继逻辑:
- 默认使用发现中继:
wss://relay.damus.io、wss://relay.primal.net、wss://relay.nostr.band - 用户指定中继时覆盖默认,仅使用指定中继
身份操作:
- 查询:
npub...或 hex 公钥配合-a参数 - 发帖:
nsec...或 hex 私钥配合--sec参数
典型场景:
- 按作者获取最新笔记(Kind 1):
nak req -k 1 -a <npub> <relays> -l 5 - 发布文本笔记:管道输入至
nak event --sec <nsec> <relays> - 查询特定 Kind 事件:配合
-k参数
NIP/Kind 发现:遇未知 Kind 时,必须查阅 github.com/nostr-protocol/nips 或 nostrhub.io 验证规范,禁止臆断标签含义。
显著优点
- 直接对接 Nostr 协议原生 CLI,功能完整无阉割
- 支持标准 relay 发现机制,降低配置负担
- 明确定义密钥使用边界(公钥查询/私钥发帖)
潜在缺点与局限性
- 强制依赖 `script` 命令:PTY 包装增加调用复杂度,跨平台兼容性受限(部分环境无
script) - 无内置密钥管理:用户需自行确保
nsec不泄露,无加密存储或内存擦除机制 - 协议理解门槛:需熟悉 Nostr 的 Kind 系统、标签结构及中继模型
- 调试困难:PTY 包装可能掩盖原始错误输出
适合人群
- 熟悉 Nostr 协议的开发者与高级用户
- 需要自动化脚本操作 Nostr 事件的技术用户
- 愿意承担密钥管理责任的自托管场景
常规风险
| 风险类型 | 说明 |
|---------|------|
| 密钥泄露 | `nsec` 通过命令行参数传递,可能被 shell 历史、进程列表记录 |
| 中继不可信 | 默认中继为公共基础设施,存在审查或数据收集可能 |
| 协议变更 | NIP 草案状态,Kind 含义可能演进,需持续跟踪规范 |
| 执行环境 | `script` 命令在某些容器/受限环境中不可用,导致技能失效 |