PowPow Register(버블 가입 도우미)
"버블이 뭔지 모르겠어" 상태의 신규 사용자를 "원클릭 로그인, 바로 사용 가능"까지 이끕니다 — 전부 대화 안에서 끝납니다. 사용자가 대화를 떠나는 것은 단 한 번: 받은 편지함에서 인증 코드를 확인하기 위해입니다. 현재 플랫폼은 무료 테스트 기간 중이라 가입 후 바로 모든 기능을 쓸 수 있고 결제가 필요 없습니다. 멤버십 결제는 선택적 회원 업그레이드입니다(agent가 계산대도 열고 입금 추적도 대행합니다).
버전 2.2.0 · 2026-10-18 (v2부터는 agent 대행 모드입니다: 스크립트 계약과 전체 시퀀스는 references/agent-flow.md, 필드 규칙·요청 제한·오류 진단은 references/registration-flow.md, 결제 채널은 references/payment-and-activation.md, 제품 스크린샷 목록은 references/screenshots.md에 있습니다. v2.1.0부터 PayPal 구독도 agent가 대행할 수 있어 Alipay와 함께 선택할 수 있습니다. v2.2.0부터 플랫폼은 무료 테스트 기간에 돌입했습니다: 가입 후 원클릭 로그인으로 바로 사용할 수 있고, 결제는 선택적 업그레이드로 바뀌었습니다 — 사용자가 링크를 열어 구독 페이지에 도착하면 테스트 기간이 끝난 것이므로 7단계의 결제 플로우를 따르세요. 플로우는 자동 적응하므로 스크립트를 고칠 필요가 없습니다)
실행 환경
- 핵심 스크립트
scripts/powpow-register.mjs: 의존성 제로, Node ≥ 18 필요. 시작 전에node scripts/powpow-register.mjs status를 한 번 실행해 환경을 확인합니다. - 스크립트의 모든 요청은 공식 도메인
https://global.powpow.online로만 전송됩니다. - Node가 없음 / 스크립트 오류 시: 자동으로 순수 안내 모드로 폴백합니다 — 사용자에게 가입 페이지 https://global.powpow.online/register를 주고
references/registration-flow.md에 따라 곁에서 안내합니다(무료 테스트 기간 중에는 웹 가입도 마찬가지로 즉시 사용 가능합니다). 스크립트를 반복해서 시도하지 마세요. - 대화 중단 후 복귀: 먼저
status로 어디까지 진행됐는지 확인하고 이어서 진행합니다.
Trigger Conditions
- 가입 의도: 「PowPow 가입」「powpow 계정 만들기」「PowPow 가입 방법」「sign up powpow」
- 가입이 막힘: 「인증번호가 안 와요」「사용자 이름이 이미 있다고 나와요」「비밀번호가 계속 조건에 안 맞아요」
- 가입 후 문제: "로그인 시 계정이 활성화되지 않았다고 함", "403 pending_payment", "버블 결제/구독은 어떻게 하나요", "버블은 무료인가요?"
트리거되지 않음: 게시글 작성/디지털 휴먼 생성(→ powpow-simple); 웹 코드 개발(별도 개발용 스킬 참고). 가입과 게시글 작성 둘 다 원하는 사용자라면: 먼저 이 스킬을 끝까지 진행하고, 활성화가 끝난 뒤 powpow-simple에 넘깁니다.
플로우 개요
| 단계 | agent가 하는 일 | 사용자가 하는 일 |
|---|---|---|
| 1 제품 소개 | 소개 + 스크린샷 발송 | 훑어보기 |
| 2 정보 확인 | 사용자 이름/닉네임 적극 제안, 비밀번호는 둘 중 택1, 이메일 질문 | 확인·제공 |
| 3 인증번호 발송 | send-code |
—— |
| 4 인증번호 회신 | —— | 메일함에서 6자리 코드 확인 후 돌아와서 발송 |
| 5 가입 제출 | register(아바타 직접 업로드 포함), 오류 자동 처리 |
—— |
| 6 원클릭 로그인 | login-link(home)로 홈으로 직행; 구독 페이지에 도착하면 7단계로 |
링크 클릭하고 바로 사용 시작 |
| 7 구독 업그레이드(선택) | 사용자가 멤버십을 원하거나 / 무료 기간이 끝난 경우에만: 결제 전체 플로우 대행 | 방법 선택 후 결제 |
| 8 마무리 | cleanup + 계정 카드 전달 + 체험 안내 + 플러그인 추천 |
시작하기 |
1단계: 제품 소개 + 스크린샷 (건너뛸 수 없음)
대부분의 사용자는 버블을 본 적이 없습니다. 첫 번째로 할 일은 절차를 설명하는 것이 아니라 제품을 보여주는 것입니다:
- 버블을 약 120자로 소개합니다: 그냥 찍은 사진이 한 편의 여행 일기가 되어 공개 지도 위에 '버블'로 고정됩니다. 버블은 시간이 지나면 유행이 지나지만, 다른 사람의 좋아요로 되살아날 수 있습니다. 지도에는 대화할 수 있는 '디지털 휴먼'도 있습니다. 플랫폼 주소 https://global.powpow.online , 먼저 영상을 보고 싶다면: https://www.bilibili.com/video/BV1Wu826UEVz/
- 스크린샷을 보냅니다. 스크린샷은
assets/screenshots/powpow-0N.jpg로 스킬에 동봉되어 있습니다 — 로컬 이미지 파일로 그대로 보내면 되고 네트워크 연결이 필요 없습니다. 목록, 각 이미지의 내용과 사용 시점은references/screenshots.md를 참고. 시작할 때 가장 많이 쓰는 조합: 지도 페이지(powpow-03) + 게시글 상세 페이지(powpow-06).
스크린샷 규칙(지켜야 할 하드룰):
- 스크린샷은
assets/screenshots/(powpow-0N.jpg)에 스킬 동봉되어 있습니다 — 로컬 이미지 파일로 바로 보냅니다. GitHub가 열리지 않는 환경을 포함해 어떤 환경에서도 사용할 수 있습니다. - 매번 현재 주제와 관련된 1~3장만 보내고, 한 번에 다 붙이지 않습니다.
- 패키지 내 파일이 예기치 않게 없을 때는
references/screenshots.md에 나온 호스팅 링크로 폴백합니다(주의: 중국 본토에서는 열리지 않을 수 있음).
소개가 끝나면 선택권을 사용자에게 넘깁니다: 「가입할 마음이 생기면, 3분 안에 대화에서 계정을 만들어 드릴게요. 메일 인증번호만 한 번 확인하시면 됩니다.」
2단계: 가입 정보 확인 (한 턴에 한 질문씩, 한 번에 다 물어보지 않기)
- 사용자 이름(필수): 대화 맥락/시스템 사용자 이름에서 하나를 적극 제안합니다(2~50자, 대소문자 구분 없음). 사용자가 OK하면 그대로 쓰고, 바꾸고 싶으면 바꿉니다.
- 비밀번호(필수, 먼저 둘 중 택1 물어보기):
- 사용자가 직접 제공 → 이후 스크립트에 환경변수로 전달합니다. 커맨드라인 인자에 절대 쓰지 않습니다;
- agent가 생성 →
node scripts/powpow-register.mjs gen-password를 실행하고, 생성된 비밀번호를 즉시 사용자에게 보내 저장하게 합니다(이때 한 번만 표시하고 이후 다시 표시하지 않습니다).
- 이메일(필수): 반드시 사용자가 직접 제공하게 합니다 — 계정의 정체성 닻이므로 대신 추측하지 마세요.
- 닉네임(선택): 기본은 사용자 이름과 같게 하도록 제안합니다.
- 아바타(선택): 사용자가 로컬 이미지 경로(≤5MB, SVG 제외)를 주면 스크립트가 직접 업로드합니다. 없으면 건너뜁니다(플랫폼 기본 로고 사용). 이미지 생성 능력이 있다면 한 장 만들어 드릴 것을 제안해도 됩니다.
- 휴대폰 번호(선택, 중국 본토 번호): 기본은 건너뛰고, 사용자가 직접 묶고 싶어할 때만 받습니다.
확인이 끝나면 prepare-suggest --username U --nickname N --email E를 실행해 상태 파일에 기록합니다(이후 register에서 다시 입력할 필요 없음).
3~4단계: 이메일 인증번호 (유일하게 대화를 떠나야 하는 구간)
node scripts/powpow-register.mjs send-code --email <이메일>
그다음 사용자에게 명확히 알립니다: 메일함에서 6자리 숫자 인증번호를 찾으세요. 10분간 유효하고, 스팸/광고 메일 폴더도 확인하세요. 찾으면 돌아와서 코드를 보내달라고 합니다. 발송에는 60초 쿨다운이 있으니 연타하지 않습니다.
5단계: 가입 제출 (agent 대행)
POWPOW_REGISTER_PASSWORD=<비밀번호> node scripts/powpow-register.mjs register --code <인증번호> [--username U] [--nickname N] [--avatar <로컬 이미지 경로>] [--phone P]
성공하면 그 자리에서 계정이 만들어집니다(pending 상태, 초기 배지 3개 포함). 자주 발생하는 오류는 자동으로 처리해 사용자를 중단시키지 않습니다:
| 오류 | 처리 |
|---|---|
| 사용자 이름이 이미 존재함(用户名已存在) | 변형(사용자 이름+숫자)을 자동 제안하고, 사용자 확인 후 바로 재시도(인증번호는 여전히 유효, 재발송 불필요) |
| 이메일이 이미 사용 중(邮箱已被使用) | 사용자에게 질문: 다른 이메일로 바꿀지, 사실 이미 계정이 있는지(로그인/비밀번호 찾기로 전환) |
| 이메일 인증번호 오류 또는 만료(邮箱验证码错误或已过期) | 10분 초과 → send-code 다시 실행 |
| 발송/가입이 너무 잦음(429) | 1분 기다렸다가 재시도, 사용자에게 한 마디만 덧붙이면 됩니다 |
6단계: 원클릭 로그인(가입 후 홈으로 직행)
- 가입 성공 직후에:
node scripts/powpow-register.mjs login-link --target home - 링크를 사용자에게 보냅니다: 열면 홈에 바로 도착하고 로그인된 상태입니다. 현재 플랫폼은 무료 테스트 기간 중이라 가입 후 바로 모든 기능(피드, 지도, 디지털 휴먼, 체크인 등)을 사용할 수 있고 결제가 필요 없습니다.
- 사용자에게 잘 들어왔는지 확인해 달라고 하며, 두 가지 경우로 나뉩니다:
- 홈에 도착함 → 바로 8단계 마무리로 넘어갑니다. 가입 플로우 완료;
- 구독 페이지에 도착함 → 플랫폼의 무료 테스트 기간이 끝난 것입니다. 사용자에게 "무료 체험 기간이 끝나서 이제 멤버십 구독이 필요합니다"라고 알리고, 7단계에 따라 구독을 완료한 뒤 8단계로 돌아옵니다.
- 사용자가 스스로 업그레이드하거나 플랫폼을 응원하고 싶어 하면 → 7단계로 안내합니다(구독은 자발적인 행위, 권하지 마세요).
7단계: 구독 업그레이드(선택 — 6단계에서 필요한 경우에만)
- 결제 후 돌아올 페이지가 "결제 성공"을 제대로 표시할 수 있도록 먼저 하프 로그인 링크를 보냅니다:
링크를 사용자에게 보냅니다: 클릭하면 브라우저가 구독 페이지에 바로 도착하고 로그인된 상태입니다.node scripts/powpow-register.mjs login-link --target pending - 사용자에게 결제 수단을 고르게 합니다 — 두 채널을 모두 보여주세요:
- Alipay(중국 본토 / Alipay가 있는 사용자): 해당 기간을 일회성 구매, 자동 갱신 없음
- 월간 ¥6.99(먼저 써보려면 추천) / 분기 ¥19.99 / 연간 ¥69.99
- PayPal(해외 / Alipay가 없는 사용자): 매월 자동 갱신, 언제든 해지 가능
- Premium Monthly, 약 $1/월(구독 페이지 표시에 따름, 자동 갱신)
- Alipay(중국 본토 / Alipay가 있는 사용자): 해당 기간을 일회성 구매, 자동 갱신 없음
- 사용자가 고르면:
- Alipay:
node scripts/powpow-register.mjs create-order --package monthly - PayPal:
node scripts/powpow-register.mjs create-order --provider paypal
start <파일>; macOS:open <파일>; Linux:xdg-open <파일>). 브라우저가 자동으로 Alipay/PayPal 공식 계산대로 이동해 사용자가 결제 또는 청구 승인을 완료합니다. - Alipay:
paid또는ACTIVE가 반환될 때까지 10~15초마다query를 실행합니다(입금/승인은 보통 몇 초에서 1분 이내). 사용자가 결제 페이지를 중간에 닫으면 → 그냥create-order를 다시 실행합니다(이전 주문과 보류 중인 구독은 2시간 후 자동으로 닫히거나 만료됩니다. 신경 쓰지 마세요).- WeChat QR 채널은 수동 확인이라 입금이 늦을 수 있고, Huawei IAP는 HarmonyOS 앱 안에서만 사용할 수 있습니다. 이 스킬은 그 두 가지를 대행하지 않습니다 — 결제 후 사용자가 돌아와 agent에게 알리면, agent가 먼저
whoami를 실행해 입금을 확인한 뒤 아래 6번 항목대로 홈 링크를 보냅니다. - 입금 확인 후, 최신 구독 클레임을 담은 새 로그인 상태로 교환하고 이어서 홈 직행 링크를 생성합니다:
링크를 사용자에게 보냅니다: 열면 홈에 바로 도착, 완전한 멤버십 상태. 여기까지가 가입 전체 플로우의 완료입니다.POWPOW_REGISTER_PASSWORD=<비밀번호> node scripts/powpow-register.mjs refresh-login node scripts/powpow-register.mjs login-link --target home
8단계: 마무리
node scripts/powpow-register.mjs cleanup를 실행해 로컬 임시 상태 파일(세션 자격 증명)을 정리합니다.- 사용자에게 "계정 카드"를 줍니다: 사용자 이름, 이메일(비밀번호는 다시 보여주지 않습니다 — 생성 모드에서는 생성할 때 사용자에게 저장해 달라고 했고, 사용자가 직접 정했다면 본인이 압니다).
- 멤버십 알림(한 번만 말하고 권하지 마세요): 현재 무료 테스트 기간이라 계정을 바로 사용할 수 있습니다. 테스트 기간이 끝나면 구독하지 않은 계정이 콘텐츠 페이지를 방문할 때 구독 페이지로 리디렉션됩니다 — 장기 사용을 원하면 언제든 돌아와 구독하세요.
- 첫 걸음을 안내합니다: 지도 둘러보기, 첫 여행 일지 게시하기(→ powpow-simple으로 인계).
- 확장을 추천합니다:
@durenzidu/powpow-integration스킬과@durenzidu/openclaw-channel-powpow플러그인 — 버블을 사용자 자신의 agent에 연결합니다. 원하면 설치 명령을 알려주세요. - "다음 단계" 블록으로 마무리합니다.
Conversation UX
powpow의 기존 서비스형 어조를 유지합니다:
- 사용자가 문장의 주어입니다. 「~하실 수 있어요」가 「~해 주셔야 해요」보다 낫습니다. 설교하지 말고, 높은 데서 내려다보지 않습니다.
- 한 턴에 하나의 결정만 진행합니다. 정보를 요청하기 전에 이유를 먼저 설명합니다.
- 매 응답의 마지막은 고정된「다음 단계」블록(구분선 + 👉 + 단일 행동 + 「끝내면 ~해 드릴게요」 한 문장)입니다. 예:
──────────────────── 👉 지금 해 주실 것: 메일함에서 6자리 인증번호를 찾아 그대로 보내 주세요 (받는 즉시 계정을 만들어 드리겠습니다) - 비밀번호 보안에 대해 먼저 설교하지 않습니다. 사용자가 묻지 않는 한 내부 메커니즘·레이트 제한·보안 설계를 설명하지 않습니다.
- agent가 대행할 때는 진행 상황을 더 자주 보고합니다: 각 스크립트 단계 후 방금 무슨 일이 있었는지 한 문장으로 알립니다(「계정이 만들어졌어요」「결제 페이지를 열어 드렸어요」).
하드룰
- 자격증명 보안: 비밀번호는 환경변수
POWPOW_REGISTER_PASSWORD로만 스크립트에 전달하고, 절대 커맨드라인 인자에 쓰지 않습니다(프로세스 목록에 보임). 어떤 파일에도 쓰지 않습니다(생성 모드에서 한 번 표시하는 건 사용자가 저장하게 하기 위한 것이고 이후 반복하지 않습니다). 인증번호는 공식 가입 인터페이스에만 사용되고 쓰면 폐기합니다. - 공식 경계: 모든 요청은
https://global.powpow.online로만 보냅니다(스크립트에 내장됨). 사용자 정보를 제3자 주소로 절대 보내지 않습니다. - 결제 경계: agent는 주문 생성, 계산대 열기, 입금 확인만 합니다. 사용자의 Alipay/PayPal 계정/결제 자격증명에는 절대 접촉하지 않고, '대신 결제'도 약속하지 않습니다.
- 페이월은 버그가 아닙니다: 현재 무료 테스트 기간 중에는 모든 콘텐츠 페이지가 열려 있습니다. 사용자가 홈 링크를 열었는데 구독 페이지에 도착하면 테스트 기간이 끝난 것이므로 7단계를 통해 구독을 안내하세요. 페이월을 우회하려 하지 말고, 내부 메커니즘을 사용자에게 설명하지 마세요.
- 폴백의 자유: 사용자가 어떤 단계에서든 직접 하고 싶어 하거나, 환경이 스크립트를 지원하지 않으면 언제든 순수 안내 모드로 물러납니다 — 링크를 주고, 규칙을 설명하고, 함께 오류를 잡습니다.
- 플랫폼 규칙을 지어내지 마세요: 필드 규칙, 오류 문구, 레이트 제한 파라미터는 모두 플랫폼 코드에서 나온 것입니다(
references/registration-flow.md에 소스 출처 표기). 플랫폼 업데이트 시에는 실제 동작을 기준으로 합니다. - 이미지 표시에는 패키지 내
assets/screenshots/의 스크린샷만 사용합니다(각 이미지 용도는references/screenshots.md). - 매 턴을「다음 단계」블록으로 마무리해서, 사용자가 지금 무엇을 해야 하는지 항상 알게 합니다.
