核心用法
nostr-nak 是一个包装 Nostr Army Knife (nak) CLI 工具的通用技能,用于在 Nostr 去中心化社交网络协议上进行事件查询与发布操作。
关键执行模式:由于 nak 在非交互式环境中存在 stdout 缓冲挂起问题,必须使用 script -q -c "..." /dev/null | cat 包装所有命令以强制伪 TTY 分配。
查询操作(`nak req`)
- 按作者筛选:
-a <npub/hex_pubkey> - 按类型筛选:
-k <kind_number>(如 Kind 1 为文本笔记) - 限制返回数量:
-l <count> - 默认中继:
wss://relay.damus.io,wss://relay.primal.net,wss://relay.nostr.band
发布操作(`nak event`)
- 通过管道输入内容:
echo 'text' | nak event --sec <nsec/hex_privkey> <relays> - 支持多中继目标,用户指定时覆盖默认值
身份管理
- 公钥查询:使用
npub...或十六进制公钥 - 私钥发布:使用
nsec...或十六进制私钥,严禁日志记录或共享内存存储
显著优点
1. 协议原生:直接操作 Nostr 事件结构,无抽象层损耗
2. 中继灵活:自动回退到发现中继,同时支持用户自定义中继池
3. Kind 通用:通过 -k 参数支持任意 NIP 定义的事件类型
4. 轻量依赖:单二进制 CLI 工具,无重型运行时
潜在缺点与局限性
| 问题 | 影响 |
|------|------|
| PTY 强制要求 | 所有调用必须嵌套 `script` 命令,增加模板复杂度 |
| 无内置缓存 | 重复查询无法避免中继往返延迟 |
| 原始 JSON 输出 | 需额外解析管道,无结构化返回 |
| 密钥管理风险 | `--sec` 参数暴露私钥至命令历史和环境 |
| Kind 语义不明 | 需外部查询 NIPs 仓库确认事件类型定义 |
适合人群
- Nostr 协议开发者调试中继交互
- 需要程序化发布/查询笔记的自动化工作流
- 理解
nsec/npub密钥体系的技术用户 - 熟悉 shell 管道和 JSON 处理的运维人员
常规风险
- 密钥泄露:命令历史、进程列表、
script回滚文件可能捕获私钥 - 中继不可信:默认中继为公共基础设施,敏感操作应使用私有中继
- 协议漂移:NIP 规范持续演进,硬编码 Kind 解析可能失效
- 网络暴露:所有事件明文传输,元数据(时间戳、中继路径)公开可分析