콘텐츠로 이동

OpenClaw Nostr 연동: 5분 만에 DM 봇 설정하기

분산형 네트워크에서 봇을 운영하는 건 생각보다 까다로운 일이죠. 특히 보안과 프라이버시를 유지하면서 사용자들과 소통하고 싶을 때 Nostr 같은 프로토콜은 아주 매력적인 선택지예요. OpenClaw를 사용해 Nostr 환경에서 스마트한 DM 봇을 구축하는 방법을 알아볼게요.

상태: 선택 사항 플러그인 (기본적으로 비활성화됨).

Nostr은 소셜 네트워킹을 위한 분산형 프로토콜이에요. 이 채널을 통해 OpenClaw는 NIP-04를 사용하여 암호화된 DM(Direct Message)을 수신하고 응답할 수 있어요.

  • 온보딩(openclaw onboard) 및 openclaw channels add 명령어를 실행하면 선택 가능한 채널 플러그인 목록이 나와요.
  • Nostr를 선택하면 필요에 따라 플러그인을 설치하라는 안내가 표시돼요.

설치 기본값:

  • Dev 채널 + git checkout 가능 시: 로컬 플러그인 경로를 사용해요.
  • Stable/Beta: npm에서 다운로드해요.

프롬프트에서 선택 사항을 언제든지 직접 지정할 수 있어요.

Terminal window
openclaw plugins install @openclaw/nostr

로컬 체크아웃을 사용하는 경우 (개발 워크플로우):

Terminal window
openclaw plugins install --link <path-to-local-nostr-plugin>

플러그인을 설치하거나 활성화한 후에는 Gateway를 다시 시작해 주세요.

Terminal window
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"

NOSTR_PRIVATE_KEY를 설정 파일에 저장하는 대신 환경 변수로 유지하려면 --use-env 옵션을 사용하세요.

  1. Nostr 키 쌍을 생성하세요 (필요한 경우):
Terminal window
# Using nak
nak key generate
  1. 설정에 추가하세요:
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
},
},
}
  1. 키를 export 하세요:
Terminal window
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Gateway를 다시 시작하세요.
KeyTypeDefaultDescription
privateKeystringrequirednsec 또는 hex 형식의 Private key
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']릴레이 URL (WebSocket)
dmPolicystringpairingDM 액세스 정책
allowFromstring[][]허용된 발신자 pubkeys
enabledbooleantrue채널 활성화/비활성화
namestring-표시 이름
profileobject-NIP-01 프로필 메타데이터

프로필 데이터는 NIP-01 kind:0 이벤트로 게시돼요. Control UI(Channels -> Nostr -> Profile)에서 관리하거나 설정 파일에서 직접 설정할 수 있어요.

예시:

{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
profile: {
name: "openclaw",
displayName: "OpenClaw",
about: "Personal assistant DM bot",
picture: "https://example.com/avatar.png",
banner: "https://example.com/banner.png",
website: "https://example.com",
nip05: "openclaw@example.com",
lud16: "openclaw@example.com",
},
},
},
}

참고:

  • 프로필 URL은 반드시 https://를 사용해야 해요.
  • 릴레이에서 가져올 때 필드가 병합되며, 로컬에서 설정한 값이 우선적으로 유지돼요.
  • pairing (기본값): 알 수 없는 발신자에게 페어링 코드를 보내요.
  • allowlist: allowFrom에 있는 pubkey만 DM을 보낼 수 있어요.
  • open: 공개적으로 인바운드 DM을 허용해요 (allowFrom: ["*"] 설정 필요).
  • disabled: 인바운드 DM을 무시해요.

강제 적용 참고 사항:

  • 발신자 정책은 서명 확인 및 NIP-04 복호화 전에 체크돼요.
  • 페어링 응답은 원래 DM 본문을 처리하지 않고 전송돼요.
  • 인바운드 DM은 속도 제한(rate-limit)이 적용되며, 너무 큰 페이로드는 복호화 전에 드롭돼요.
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
dmPolicy: "allowlist",
allowFrom: ["npub1abc...", "npub1xyz..."],
},
},
}

허용되는 형식:

  • Private key: nsec... 또는 64자 hex
  • Pubkeys (allowFrom): npub... 또는 hex

기본값: relay.damus.io 및 nos.lol.

{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
relays: ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"],
},
},
}

팁:

  • 중복성을 위해 2~3개의 릴레이를 사용하세요.
  • 너무 많은 릴레이를 사용하면 지연 시간이 발생하거나 중복 응답이 생길 수 있으니 피하는 게 좋아요.
  • 유료 릴레이를 사용하면 안정성을 높일 수 있어요.
  • 테스트 용도로는 로컬 릴레이(ws://localhost:7777)도 괜찮아요.
NIP상태설명
NIP-01지원됨기본 이벤트 형식 + 프로필 메타데이터
NIP-04지원됨암호화된 DM (kind:4)
NIP-17계획 중Gift-wrapped DM
NIP-44계획 중버전 관리형 암호화
Terminal window
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
relays: ["ws://localhost:7777"],
},
},
}
  1. 로그에서 봇의 pubkey(npub)를 확인하세요.
  2. Nostr 클라이언트(Damus, Amethyst 등)를 여세요.
  3. 봇의 pubkey로 DM을 보내세요.
  4. 응답이 오는지 확인하세요.
  • Private key가 유효한지 확인하세요.
  • 릴레이 URL에 접속 가능한지, wss://(로컬은 ws://)를 사용하는지 확인하세요.
  • enabled가 false로 되어 있지 않은지 확인하세요.
  • Gateway 로그에서 릴레이 연결 오류가 있는지 확인하세요.
  • 릴레이가 쓰기 권한을 허용하는지 확인하세요.
  • 아웃바운드 연결 상태를 확인하세요.
  • 릴레이의 속도 제한(rate limits)을 확인하세요.
  • 여러 릴레이를 사용할 때 발생할 수 있는 현상이에요.
  • 메시지는 이벤트 ID로 중복 제거되며, 첫 번째로 전달된 메시지만 응답을 트리거해요.
  • Private key를 절대 커밋하지 마세요.
  • 키 관리에는 환경 변수를 사용하세요.
  • 프로덕션 봇의 경우 allowlist 사용을 고려하세요.
  • 페어링 및 허용 목록 정책은 복호화 전에 적용되므로, 알 수 없는 발신자가 과도한 암호화 연산을 강제할 수 없어요.
  • 다이렉트 메시지만 지원해요 (그룹 채팅 불가).
  • 미디어 첨부 파일은 지원하지 않아요.
  • NIP-04만 지원해요 (NIP-17 gift-wrap은 계획 중).

AI Setup Assistant

OpenClaw

OpenClaw Expert

아직 막혀 있나요?

이 문서에서 답을 못 찾았다면 OpenClaw Expert에게 바로 물어보세요.