# HRUM(흐름) > HRUM(흐름) — 운영: 플로트 주식회사(FLOAT Co., Ltd.). 기본 주소 https://hrum.ai (사이트·문서) · https://api.hrum.ai (API) · https://console.hrum.ai (콘솔: 가입·API 키·결제) (기존 api.float.do·console.float.do 도 그대로 동작) > 사주 분석·AI 리딩·기억하는 LLM(RIDM Memory)을 하나의 API로 제공하는 한국 B2B SaaS. 만든 앱은 RIDM Apps 호스팅으로 공개하고, 코드 없이 사주·운세 블록을 골라 앱을 조립하는 편집기 「바로」도 있다(미리보기 단계). 이용자 결제(흐름 결제)와 판매 대금 정산도 된다. 종량제 과금, 가입 시 무료 크레딧 제공. 국내 특허 등록(제10-3009272호), 과기정통부 GPU 지원사업 선정, Hugging Face 공개 모델 보유. ## 바로가기 (이 문서에 나오는 링크 전부) - [HRUM 사이트](https://hrum.ai) - [HRUM 콘솔](https://console.hrum.ai) - [개발자 시작 가이드](https://hrum.ai/getting-started.html) - [사주 API 소개](https://hrum.ai/saju-api.html) - [만세력 API 소개](https://hrum.ai/manseryeok-api.html) - [궁합 API 소개](https://hrum.ai/compat-api.html) - [사주 풀이 API 소개](https://hrum.ai/saju-reading-api.html) - [오늘의 운세 API 소개](https://hrum.ai/today-api.html) - [자미두수 API 소개](https://hrum.ai/ziwei-api.html) - [점성술 API 소개](https://hrum.ai/astrology-api.html) - [평생 사주 API 소개](https://hrum.ai/lifetime-api.html) - [꿈해몽 API 소개](https://hrum.ai/dream-api.html) - [타로 API 소개](https://hrum.ai/tarot-api.html) - [운 흐름 API 소개](https://hrum.ai/saju-flow-api.html) - [앱 호스팅 소개](https://hrum.ai/app-hosting.html) - [배포 가이드](https://hrum.ai/hosting-docs.html) - [도메인 찾기](https://hrum.ai/domain-search.html) - [조립형 앱 만들기(바로) 소개](https://hrum.ai/baro.html) - [API 가이드](https://hrum.ai/docs.html) - [에러 코드](https://hrum.ai/docs.html#errors) - [AI로 콘솔 관리하기](https://hrum.ai/docs.html#console-ai) - [HRUM MCP 패키지](https://console.hrum.ai/mcp/hrum-mcp-0.3.1.tgz) - [AI 사주 리딩 포함 항목](https://hrum.ai/docs.html#reading-modules) - [AI 사주 리딩 — AI 하나만 따로](https://hrum.ai/docs.html#reading-only) - [타로 API](https://hrum.ai/docs.html#tarot-api) - [hrum.ai/tarot/cards/v2/SOURCES.md](https://hrum.ai/tarot/cards/v2/SOURCES.md) - [타로 Waite 근거 kb](https://hrum.ai/docs.html#tarot-kb) - [점성술 토탈 API](https://hrum.ai/docs.html#astrology-api) - [운 흐름 API](https://hrum.ai/docs.html#saju-flow-api) - [사주↔MBTI 비교 API](https://hrum.ai/docs.html#saju-mbti-api) - [꿈해몽 고전 근거](https://hrum.ai/docs.html#dream-kb) - [관상·손금 측정](https://hrum.ai/docs.html#face-palm-measure-api) - [hrum.ai/samples/face-palm/](https://hrum.ai/samples/face-palm/) - [자미두수 명반 API](https://hrum.ai/docs.html#ziwei-api) - [평생사주 API](https://hrum.ai/docs.html#lifetime-api) - [궁합 API](https://hrum.ai/docs.html#compat-api) - [이미지 생성 — 비동기 응답 (선택)](https://hrum.ai/docs.html#image-generations-async) - [요금](https://hrum.ai/pricing.html) - [플레이그라운드](https://hrum.ai/playground.html) - [상태 페이지](https://hrum.ai/status.html) - [console.hrum.ai/baro-app-editor.html](https://console.hrum.ai/baro-app-editor.html) - [AI앱 — 기억하는 캐릭터 채팅](https://hrum.ai/aiEbook/) - [배포 가이드 — 환경변수](https://hrum.ai/hosting-docs.html#env) - [AI로 비밀키 넣기](https://hrum.ai/hosting-docs.html#env-ai) - [부록 F](https://hrum.ai/hostingEbook/appendix-f.html) - [책 고르기](https://hrum.ai/ebook/) - [통합 운세 AI 솔루션](https://hrum.ai/sajuEbook/) - [전체본 (/sajuEbook.html)](https://hrum.ai/sajuEbook.html) - [hrum.ai/get-book-code.mjs](https://hrum.ai/get-book-code.mjs) - [사주만 판](https://hrum.ai/sajuEbook/saju/) - [전체본 (/sajuEbook/saju/book.html)](https://hrum.ai/sajuEbook/saju/book.html) - [hrum.ai/sajuEbook/saju/get-book-code.mjs](https://hrum.ai/sajuEbook/saju/get-book-code.mjs) - [자미두수만 판](https://hrum.ai/sajuEbook/ziwei/) - [전체본 (/sajuEbook/ziwei/book.html)](https://hrum.ai/sajuEbook/ziwei/book.html) - [hrum.ai/sajuEbook/ziwei/get-book-code.mjs](https://hrum.ai/sajuEbook/ziwei/get-book-code.mjs) - [점성술만 판](https://hrum.ai/sajuEbook/astro/) - [전체본 (/sajuEbook/astro/book.html)](https://hrum.ai/sajuEbook/astro/book.html) - [hrum.ai/sajuEbook/astro/get-book-code.mjs](https://hrum.ai/sajuEbook/astro/get-book-code.mjs) - [타로만 판](https://hrum.ai/sajuEbook/tarot/) - [전체본 (/sajuEbook/tarot/book.html)](https://hrum.ai/sajuEbook/tarot/book.html) - [hrum.ai/sajuEbook/tarot/get-book-code.mjs](https://hrum.ai/sajuEbook/tarot/get-book-code.mjs) - [꿈해몽만 판](https://hrum.ai/sajuEbook/dream/) - [전체본 (/sajuEbook/dream/book.html)](https://hrum.ai/sajuEbook/dream/book.html) - [hrum.ai/sajuEbook/dream/get-book-code.mjs](https://hrum.ai/sajuEbook/dream/get-book-code.mjs) - [전체본 (/aiEbook.html)](https://hrum.ai/aiEbook.html) - [캐릭터 채팅 책 코드 받기 스크립트 (get-book-code.mjs)](https://hrum.ai/aiEbook/get-book-code.mjs) - [그냥 앱 — 호스팅+DB 회원제 웹앱](https://hrum.ai/hostingEbook/) - [전체본 (/hostingEbook.html)](https://hrum.ai/hostingEbook.html) - [회원제 웹앱 책 코드 받기 스크립트 (get-book-code.mjs)](https://hrum.ai/hostingEbook/get-book-code.mjs) - [앱인토스 미니앱 — 오늘의 운세](https://hrum.ai/tossEbook/) - [전체본 (/tossEbook.html)](https://hrum.ai/tossEbook.html) - [토스 미니앱 책 코드 받기 스크립트 (get-book-code.mjs)](https://hrum.ai/tossEbook/get-book-code.mjs) - [inta.float.do](https://inta.float.do) ## 비용 아끼기 (꼭 읽기) - 모든 성공한 요청은 각각 과금된다. 같은 생년월일시·같은 옵션의 계산 결과(만세력·자미두수·궁합·점성술·평생 사주 등)는 다시 불러도 같으므로, 앱을 만들 때 첫 응답을 DB에 저장하고(요청 본문 해시를 키로) 다음부터는 저장한 값을 쓸 것. 같은 입력으로 API를 다시 부르지 말 것. - 오늘의 사주·운 흐름처럼 날짜에 따라 바뀌는 결과는 날짜(한국 시각)도 키에 넣어 하루 단위로 다시 쓴다. AI 리딩은 같은 질문이라도 문장이 달라질 수 있으니, 보여 준 답은 저장해 두고 다시 보여 줄 때는 저장본을 쓴다. ## 상품 & 문서 - [개발자 시작 가이드](https://hrum.ai/getting-started.html): 콘솔 가입·이메일 인증 → API 키 발급(발급 직후 한 번만 표시) → 만세력 첫 호출(curl·Python requests·Node fetch, 헤더 `X-Partner-Api-Key`) → 응답 `{success, data}` → 크레딧 과금 → 에러 코드별 처리와 재시도 - [사주 API 소개](https://hrum.ai/saju-api.html): 계산형(만세력·자미두수·궁합·점성술 토탈·운 흐름·오늘의 사주·꿈해몽·타로)과 풀이형(평생 사주·AI 사주 리딩·사주 리포트) 엔드포인트 한눈에 보기 - [만세력 API 소개](https://hrum.ai/manseryeok-api.html): POST /manseryeok — 원국 4주·원국 분석(용신·격국·신강약)·대운·세운·사주 정체성, 출생 시각 미상 처리, 요청·응답 예시, 가격 - [궁합 API 소개](https://hrum.ai/compat-api.html): POST /compat — 사주 궁합·관계표·별자리 궁합·띠 궁합·종합 점수, 옵션(details·flow·MBTI), 요청·응답 예시, 가격 - [사주 풀이 API 소개](https://hrum.ai/saju-reading-api.html): POST /reading·/reading/memory·/reading/report — AI 사주 리딩·이어서 상담·리포트, 함께 넣는 항목(자미두수·점성술·꿈해몽·타로), 요청·응답 예시, 토큰 가격 - [오늘의 운세 API 소개](https://hrum.ai/today-api.html): POST /today(상품명 오늘의 사주) — 일진×일간 관계·좋은 시간·피할 시간·행운 색·활동 적합도, 날짜·날씨 옵션, 요청·응답 예시, 가격 - [자미두수 API 소개](https://hrum.ai/ziwei-api.html): POST /ziwei-chart — 12궁 명반·14주성·생년사화·대한·유년, 풀이 문단 옵션, 출생 시각 필수, 요청·응답 예시, 가격 - [점성술 API 소개](https://hrum.ai/astrology-api.html): POST /astrology(점성술 토탈) — 10개 천체·하우스·애스펙트·품위·풀이 문단, 트랜싯·진행·시너스트리, 요청·응답 예시, 가격 - [평생 사주 API 소개](https://hrum.ai/lifetime-api.html): POST /lifetime — 7개 주제 풀이 문단, 주제 하나만, 별자리·자미두수 층, 요청·응답 예시, 가격 - [꿈해몽 API 소개](https://hrum.ai/dream-api.html): POST /dream — 꿈 이야기에서 찾은 상징 낱말(풀이 문장 없음), 요청·응답 예시, 가격(찾은 상징이 없으면 과금 없음) - [타로 API 소개](https://hrum.ai/tarot-api.html): POST /tarot — 78장 덱 카드 뽑기·스프레드·seed 재현·카드 이미지, 요청·응답 예시, 가격 - [운 흐름 API 소개](https://hrum.ai/saju-flow-api.html): POST /saju-flow — 대운·세운·월운 누적선(`line`)·글자별 몫(`share`)·5신 이름·형충회합·합 풀림·궁합 겹쳐 보기 입력, 범위·월운·출생지 옵션, 요청·응답 예시, 가격 - [앱 호스팅 소개](https://hrum.ai/app-hosting.html): RIDM Apps — GitHub 연결로 빌드·배포, `<이름>.ridm.ai` 공개, 앱마다 전용 PostgreSQL DB, 무료 플랜부터 (상세는 [배포 가이드](https://hrum.ai/hosting-docs.html)) - [도메인 찾기](https://hrum.ai/domain-search.html): 로그인 없이 원하는 주소(도메인)가 비어 있는지와 실시간 가격을 확인. 고른 주소는 콘솔에서 크레딧으로 구매하고 RIDM Apps 앱에 연결 비용 없이 연결(등록된 도메인은 환불 불가) - [조립형 앱 만들기(바로) 소개](https://hrum.ai/baro.html): 코드 없이 사주·운세 블록을 골라 순서·문구·테마를 정하면 app.json 이 만들어지고, 배포 꾸러미(zip)를 받아 RIDM Apps에 공개. 지금 되는 것과 준비 중인 것, 자주 묻는 질문 (아래 「바로」 절) - [API 가이드](https://hrum.ai/docs.html): Quickstart, RIDM Memory API, AI 사주 리딩·리포트·만세력·평생사주·자미두수·오늘의 사주·꿈해몽·점성술 토탈·궁합·성격유형·이미지 생성 API — curl/Python/JavaScript 예제 포함 - [에러 코드](https://hrum.ai/docs.html#errors): 모든 API 공통 에러 표 + API마다 그 API에서만 나오는 코드 표. 검사 순서 = 보안 규칙(403, 본문 HTML, error 1010 — 막힌 기본 User-Agent, 예: Python `urllib`. API 키 검사 전이라 401이 아님) → 서비스 보호 상한(429, code 없음) → API 키(401) → 기능 미개방(404 `*_not_enabled`) → 요청 제한(429 `RATE_LIMIT_EXCEEDED`, `Retry-After`) → 본문 검사(400, 표에 없는 필드도 400) → 잔액(402 `INSUFFICIENT_BALANCE`. 만세력·점성술·운 흐름처럼 호출 전 잔액 검사가 없는 API는 code 없는 402). DB 연결 장애는 503 `SERVICE_DEGRADED`(`Retry-After: 30`). 오류 본문 `{success:false, statusCode, code?, message, timestamp}` — 분기는 statusCode·code로, message 문구에 의존하지 말 것 - [AI로 콘솔 관리하기](https://hrum.ai/docs.html#console-ai): AI 코딩 도구가 콘솔을 대신 관리하는 API `/api/v1/partners/v1/console-ai/*`. 인증 = 콘솔 관리 토큰(`Authorization: Bearer hrum_cm_…`, 30일, 기본 권한 조회만 — 쓰기 권한 `keys`·`credit`·`hosting`·`seller`·`hosting_ops` 는 발급 동의 화면에서 사람이 하나씩 체크 — `hosting_ops`(AI 운영 토큰)만은 작업마다 동의 없이 /console-ai/hosting/apps/{id}/… 를 부름, 아래 「앱 환경변수·비밀키 넣기」, 콘솔 API 키 화면에서 언제든 취소, 계정당 10개). 조회: GET /me·/token·/status(시작 체크리스트)·/keys·/credit·/credit/transactions·/usage·/hosting·/seller·/payouts. 쓰기는 권한 + 사람 동의가 둘 다 필요: ① POST /consents `{action, payload}` → `{code, consentUrl, expiresAt, action, display}` ② 사용자가 링크를 열어 「AI가 요청함」과 요청 원문(금액·대상)을 보고 「동의」 ③ GET /consents/{code} 로 approved 확인 ④ 쓰기 본문에 같은 payload + `consentCode`. 동의 코드는 1회용·10분·요청 해시 고정(바꾸면 409 `CONSENT_MISMATCH`). action ↔ 경로: key_issue POST /keys · key_rotate POST /keys/{id}/rotate · key_revoke POST /keys/{id}/revoke · credit_topup_link POST /credit/topup-link `{planKey}` · credit_refund_preview POST /credit/refund-preview · hosting_apply POST /hosting/apply `{planKey, subdomain, recurringConsent?}` · hosting_cancel POST /hosting/apps/{id}/cancel · seller_apply_link POST /seller/apply-link. 첫 토큰은 인증 없이 `token_issue` 로 요청하고 응답 `pollSecret` 을 `X-Consent-Poll-Secret` 헤더로 보내 승인 뒤 첫 조회에서 한 번만 토큰을 받음. 에러 `code`: MGMT_TOKEN_INVALID(401)·MGMT_SCOPE_DENIED(403, `scope`)·CONSENT_REQUIRED(400)·CONSENT_PENDING(409)·CONSENT_DENIED(403)·CONSENT_EXPIRED(410)·CONSENT_USED(409)·CONSENT_MISMATCH(409)·CONSENT_NOT_FOUND(404)·INVALID_CONSENT_PAYLOAD·UNKNOWN_FIELD(400)·CONSENT_RATE_LIMITED(429)·MGMT_TOKEN_LIMIT(409). 카드번호·셀러 본인정보는 AI 경로로 받지 않음(토스 결제창·콘솔 화면에서 사람이 직접 입력, 정해진 항목 밖 필드는 400 `UNKNOWN_FIELD`). MCP: `claude mcp add hrum -- npx -y https://console.hrum.ai/mcp/hrum-mcp-0.3.1.tgz` — 도구 hrum_ai_connect·hrum_ai_connect_status·hrum_status·hrum_keys_list·hrum_credit·hrum_credit_history·hrum_usage·hrum_hosting_status·hrum_seller_status·hrum_payouts_list·hrum_consent_request·hrum_consent_status·hrum_key_issue·hrum_key_rotate·hrum_key_revoke·hrum_topup_link·hrum_refund_preview·hrum_hosting_apply·hrum_hosting_cancel·hrum_seller_apply_link (토큰·API 키·poll secret 은 모델에 안 보이고 설정 폴더·`.env.local` 에만 저장) - [AI 사주 리딩 포함 항목](https://hrum.ai/docs.html#reading-modules): 사주 AI 한 상품에 점성술(`birth` 있으면 기본), 자미두수(출생 시각까지 있으면 기본), 꿈해몽(`dream` 꿈 내용을 보내면), 타로(`tarot: {count|spread}` 를 보내면, 뽑힌 카드·이미지 주소가 응답 `tarot`)이 다 들어감. `/reading`·`/reading/memory` 에서 `exclude: ["ziwei"|"astro"|"dream"|"tarot"]` 로 빼면 그 항목의 근거와 고정 요금이 빠짐. 가격 = 토큰 가격 + 포함 항목별 고정 요금(각 항목의 단독 계산형 엔드포인트 1회 가격), 응답에 `modulesUsed`·`moduleFees`. 오늘 일진은 따로 넣지 않아도 모든 풀이에 기본 반영(추가 요금 없음, 예전 `exclude: ["today"]` 는 무시). 각 항목은 /ziwei-chart·/astrology(점성술 토탈)·/dream·/tarot 로 따로도 씀 - [AI 사주 리딩 — AI 하나만 따로](https://hrum.ai/docs.html#reading-only): 사주 AI 안의 사주·자미두수·점성술·타로·꿈해몽 AI 중 하나만 부르려면 `/reading` 에 `only: "saju"|"ziwei"|"astro"|"tarot"|"dream"`. 가격 = 토큰 가격(질문 + 그 AI의 근거 블록만) + 그 항목 고정 요금 1개(`saju` 는 0). `tarot`(옵션 필요)·`dream`(꿈 내용 필요)은 `birth` 불필요, `ziwei` 는 출생 시각 필요. `exclude` 와 함께 보내면 400. 응답에 `only`·`modulesUsed`·`moduleFees`(타로는 `tarot`) - [타로 API](https://hrum.ai/docs.html#tarot-api): POST /tarot — `count`(1~10) 또는 `spread`(single·past-present-future·choice·celtic-condensed·future-prediction) 중 하나로 78장 덱에서 카드를 뽑아 정·역방향·키워드·뜻·카드 이미지 URL(WebP, 영구 캐시 — 그림은 1909 Rider-Waite(Pamela Colman Smith, 퍼블릭 도메인) 원판 스캔, 출처 원장 https://hrum.ai/tarot/cards/v2/SOURCES.md)을 돌려줌. LLM 없음, 호출당 고정 요금(장수 무관), `seed` 로 재현, `lang` ko·en·ja·th. 타로만 쓰거나, 결과를 LLM API로 해석하거나, 사주 AI(`tarot`)와 조합 - [타로 Waite 근거 kb](https://hrum.ai/docs.html#tarot-kb): /tarot 응답에 `kb` 추가 — 카드마다 Waite 『The Pictorial Key to the Tarot』(1910, PD) 정·역방향 뜻의 규칙 ID(`R-TAROT-*`)·원문 인용(quote·location·foundAt)·status(Waite가 안 적은 자리는 `disputed`). `method: "celtic-cross"`(Waite 켈트식 10장, 자리별 근거 `positionRule`). 요금 그대로. 열리기 전엔 `method` 를 보내면 404 `tarot_kb_not_enabled` - [점성술 토탈 API](https://hrum.ai/docs.html#astrology-api): POST /astrology — 한 번 호출로 점성술 계산 전부(만세력처럼 하나로). 기본 `natal`: 출생 입력(/natal-chart 와 같음)으로 태양~명왕성·교점·앵글(시각+좌표 있을 때만 — 규칙 키는 Asc·MC, DSC/IC 는 값으로만)·하우스(`houseSystems` 생략 시 `["placidus"]`, 극권 출생지는 포르피리로 대신하고 `fallbackFrom: "placidus"` 표시)·애스펙트(`orbs` leo1928 기본|heindel1919, `minorAspects` 기본 false)·품위·규칙 키 `features`(각 키에 `orb`·`outOfSign` 속성, 시각 정밀도 `meta:time_known|time_hour_level|time_unknown`, 시각 미상이면 달이 낀 출생 각에 `uncertain`). `timing: {orbDegrees(필수 0.5~10), at?, progressions?(기본 true), yearLength?(기본 tropical, tropical|julian)}` 를 보내면 트랜싯(`tSa_nSu_cj`)·2차 진행(`pSu_nJu_tr`)이 `timing` 에, `partner: {출생 입력}` 을 보내면 두 사람 사이 각(`aVe_bMa_cj` — 상대 시각+좌표가 있으면 상대 Asc·MC 도 계산해 넣음, 앵글은 합·충 6°)·고전 6쌍 별자리 관계(`astro_syn` `Su_Mo_se`, 상위 2개)·모든 점 쌍 별자리 관계(`syn_sign` `aAsc_bAsc_ss`)가 `synastry` 에 추가. HRUM 이 미리 써 둔 풀이 문단 `readings`(품위·애스펙트 — 서술이 있는 키만, 나머지는 건너뜀, `lang` 없는 문단은 ko)도 항상 들어 있음(추가 요금 없음, 서술을 못 읽으면 차트는 그대로 주고 `readings` 빈 배열 + `readingsUnavailable: true`). 만세력과 같은 1회 ₩50(블록을 추가해도 동일), LLM 없음. 네이탈 차트(/natal-chart)는 판매 종료 — 점성술은 이 상품 하나로. 천체마다 signName·degreeInSign(0~30°)·house(체계별 번호)가 붙어 한 번 호출로 차트를 다 그릴 수 있음. 마이너 품위·리셉션·행운점·하우스 주인·진행 앵글은 제공 안 함 - [운 흐름 API](https://hrum.ai/docs.html#saju-flow-api): POST /saju-flow — 한 사람 출생 입력(`birthDate`·`birthTime`·`calendar`·`gender`·`range`·`monthsOfYear`, 출생지 `birthLatitude`·`birthLongitude`·`country`·`birthTimePrecision`은 만세력과 같은 필드)으로 대운·세운·월운 그래프용 숫자("운 글자를 얹은 일간 쪽 점수" 누적선 `line` + 글자별 몫 `share`) · 5신 이름 · 운↔원국 형충회합 목록(규칙 ID 포함) · 합 풀림(`hapPulim[].reasonCode` 7종 enum + `params`로 화면 문구를 만들고, `reasonFallback` 엔진 한국어 문장은 모르는 코드일 때만) · 대운수 `startAge`(출생일 한국 0시 기준, R-SAJU-UN-038) · `engineVersion` `saju-flow-6`, `kbVersion` `2026.10.11-7` · 궁합 겹쳐 보기 입력(`compatInputs`). `monthsOfYear` 생략 = 지금(KST)이 속한 사주 연도, 연도 지정 = 그 사주 연도(입춘~다음 입춘 전), `null` = 월운 없음. LLM 없음, 좋고 나쁨을 재지 않는 값. 위치를 보내면 만세력과 같은 진태양시 보정 원국 위에 그리고, 안 보내면 만세력 기본 처리(지금은 보정 없음)를 따르며 응답 `assumedLocation`으로 알려 줌(위치를 보냈으면 `null`). 1회 ₩50(만세력과 같음), 실패는 과금 없음 - [사주↔MBTI 비교 API](https://hrum.ai/docs.html#saju-mbti-api): POST /saju-mbti — 출생 입력(만세력과 같은 필드) + `mbti`(4글자 "INFJ" 또는 축별 0~100 `{E_I,S_N,T_F,J_P}`, 100=E·S·T·J)로 원국(출생시간 모르면 3주)과 MBTI 4축마다 사주 쪽 경향(`sajuLean`, 걸린 규칙 ID `R-MBTI-*`)·입력과의 비교(`comparison`: same「사주와 같은 방향」·different「사주와 다른 면을 키운 것」·neutral). 맞다/틀리다·궁합 판정 없음, 현대 해석이며 규칙은 현대 문헌과 대조한 문헌판(`interim: false`, `kbStatus` `literature`, `kbVersion` `2026.10.16-2`). LLM 없음, 1회 ₩10(사주 정체성과 같음), 실패는 과금 없음 - [꿈해몽 고전 근거](https://hrum.ai/docs.html#dream-kb): POST /dream 응답에 `kbMatches` — 꿈 내용에 나온 대상과 맞는 해몽 KB 규칙(R-DREAM, 돈황본 『周公解夢書』 P.3908·『古今圖書集成』 夢部 원문 기록). 항목마다 `ruleId`·`polarity`(positive|negative|neutral)·`statement`(원문이 그렇게 적었다는 기록, 예언 아님)·`quote`(원문 한 줄·출처·위치). 흉한 기록은 `includeNegative: true` 일 때만. 같은 입력이면 같은 결과. 열리기 전에는 응답에 없음, 요금은 열 때 안내. /dream `items` 는 HRUM 자체 꿈 상징 어휘집(일상 명사와 동의어·활용형, 뜻·길흉 없음)에서 찾은 상징 낱말 — 항목마다 `keywords` 하나 + `score`(두드러진 순), `mode` 는 `glossary`|`none`. 풀이 문장 없음 - [관상·손금 측정](https://hrum.ai/docs.html#face-palm-measure-api): POST /face-measure · /palm-measure — 사진 대신 MediaPipe 좌표(얼굴 478점 `face_landmarker` / 손 21점 `hand_landmarker` + 손금 선 폴리라인 `creases`)를 보내면 측정 키(비율·각도·구역, `face-norm-1`/`palm-norm-1`)와 그 값에 맞는 관상·손금 KB 규칙 `kbMatches`(R-FACE·R-PALM, 원문 기록·`polarity`·`quote`)를 돌려줌. LLM 없음, 같은 좌표면 같은 결과. 원문이 수치·비교를 직접 주는 규칙만(우리 임계값 규칙은 PoC 전이라 제외). 흉한 기록은 `includeNegative: true` 일 때만(꿈해몽과 같은 이름). 모델 버전은 허용 목록(밖이면 400 `MEASURE_MODEL_VERSION_MISMATCH`). 고개 10° 넘음·얼굴 너무 작음은 400, 눈 감음·웃음 등은 해당 키만 null+사유. 발제선 `hairline`은 선택(없으면 null `hairline_missing`, 추정 안 함). 손금 선 조각은 파트너가 이어서 보냄(서버는 안 이음, `label` 또는 `autoLabel`). 좌표는 로그·DB에 남기지 않음. 사진은 받지 않음. 측정 키가 하나 이상일 때만 과금(손등 사진 `back_of_hand`면 손금은 ₩0, 빠진 키 수는 `missingSections`) — 관상·손금 각 ₩30/호출(부가세 별도, 부가세 포함 ₩33). 모델 버전·좌표 개수(478/21)·정규화가 다르면 400, 아직 열리지 않았으면 404 `face_measure_not_enabled`/`palm_measure_not_enabled`. 문서에 없는 필드는 400. 좌표 추출 참조 코드: https://hrum.ai/samples/face-palm/ (출시 전에는 비공개) - [자미두수 명반 API](https://hrum.ai/docs.html#ziwei-api): POST /ziwei-chart — 생년월일시로 12궁 명반(주성·보좌성 밝기·생년사화·오행국·명궁/신궁·대한·유년). 응답 `features` = 명반 사실을 자미 규칙 키 문자열로(`star:紫微@命`·`hua:祿=太陽@子女`·`cs:命=胎`·`limit:小限@辰` 등, 잡성·장생12·소한·운한 사화·명주·신주 포함, 세 별 co/meet·잡성 관계 키는 빠짐 — 두 쌍·별 위치로 판정). 자미 규칙 근거 카드(해석 DB)에서 공개 원문으로 확인되지 않은 인용(`match: "PARTIAL"`이면서 원문 위치 `foundAt`이 없는 것)은 `quote`·`location` 없이 `citation: "pending"`(출처 확인 중)으로 내려감, 규칙 문장·`sourceId`·EXACT 인용·원문 위치가 확인된 PARTIAL 인용은 그대로 - [평생사주 API](https://hrum.ai/docs.html#lifetime-api): POST /lifetime — 생년월일(시)로 7개 주제(성격·재물·일·연애·건강·대인관계·조언) 풀이 문단. `layers: ["astro","ziwei"]` 로 별자리(태양·달·상승궁)·자미두수 층 추가(층당 +₩20). 자미두수 층 = 명궁 주성 문단(`ziwei_ming`) + 주제별 궁 주성 문단(`ziwei_palace`: 재물=재백궁·일=관록궁·연애=부처궁·건강=질액궁, key 예 `cr_tj`), 출생 시각 없으면 빠짐(₩0). 출생 입력은 만세력과 같음(`calendar`·`isLeapMonth`·`birthLatitude`/`birthLongitude`·`country`·`zaSiRule`·`birthTimePrecision`, 전부 선택). 좌표는 사주 문단·층 모두 진태양시 보정에 쓰임(2026-10-11부터). INTA 앱과 같은 문단이 필요하면 `country: "KR"` - [궁합 API](https://hrum.ai/docs.html#compat-api): POST /compat — 두 사람 생년월일(시)로 사주 궁합(일주·8글자·권위자 분석)·속궁합 기호표·별자리 궁합·띠 궁합·종합 점수(`headerBreakdown`). 사람마다 선택 입력 `personXCalendar`(`lunar`)·`personXIsLeapMonth`·`personXCountry`·`personXZaSiRule`·`personXBirthTimePrecision`·좌표(만세력 API와 같은 규칙, 2026-10-11). 진태양시 보정은 좌표나 국가를 보낼 때만 — INTA 앱과 같은 결과는 `personXCountry: "KR"` + `exact`. 안 보내면 이전과 같은 응답. 2026-10-16(`engineVersion` `compat-2`)부터 관계표 `relations`(자리 `positions`·언어 무관 키 `kind` 14종 yukhap·banhap·samhap·banghap·chung·hyung·hae·pa·wonjin·stemHap·stemChung·napeumSaeng·napeumBihwa·napeumGeuk·`tier` gather/clash/heavyClash/listOnly·근거 `ruleIds`·`chars`, 판정어 없음)와 `p2Score`(0~100 = round(71.6+5×Σ)를 0~100으로 자름, 71.6 = 관계 없을 때의 중립점(실회원 원전 축 평균, 2026-10-16), 1단위 = 5점, 생시 유무와 무관, 원전 아닌 표시 척도 가정 — KB R-SAJU-COMPAT-113)(예: 1990-09-04 14:30 남 × 1992-02-20 10:15 여 → 월지·일지 申寅충, 일간 壬丙충, 연주 납음 생, 巳午未 방합 → Σ −3 → `p2Score` 57, 연애 `headerBreakdown.average` 62)가 붙고 `headerBreakdown.classic` = `p2Score`. 같은 날부터 결혼 목적(`marriage_stability`) 종합 점수의 `classic` 가중치 0.25 → 0.05(나머지 sixAxis 0.19·authority 0.3167·full8 0.3167·natal 0.1267). `classic1995`는 지원 종료 예정(안: 2026-11-16 공지, 2026-12-31까지 유지, 2027-01-01부터 null). INTA 앱 화면의 대표 점수(큰 숫자) = `headerBreakdown.average`(`saju.score.total`은 흐름 고유 점수라 다름). 2026-10-27부터 화면과 같은 6축 `saju.iljuAxes`(일주 궁합표 그대로, `saju.axes`와 계산이 다름)가 항상 붙음. 기존 필드 값·`engineVersion`은 그대로. 호출당 ₩20(옵션 포함) - [이미지 생성 — 비동기 응답 (선택)](https://hrum.ai/docs.html#image-generations-async): POST /images/generations 에 `Prefer: respond-async` 헤더를 보낸 요청만, 60초 안에 끝나지 않으면 202 + `{id: "imgjob_…", object: "image.job", status: "pending", pollUrl, retryAfter}`(`Location`·`Retry-After` 헤더), 생성은 최대 240초 계속. 헤더가 없으면 예전 동기 동작 그대로(80초, 504). GET /partners/v1/jobs/{id} 로 조회 → `succeeded`(`result` = 동기 200 본문) | `failed`(`error` = 동기 오류 본문, 과금 없음). 조회는 일일 한도 제외·API 키당 2초 1회(초과 429 `IMAGE_JOB_POLL_RATE_LIMITED`). 결과가 나온 순간 1회만 과금, 24시간 보관, 16MB 초과 결과는 `IMAGE_JOB_RESULT_TOO_LARGE`(과금 없음), 다른 파트너 ID는 404 `IMAGE_JOB_NOT_FOUND` - [요금](https://hrum.ai/pricing.html): 만세력 ₩50/호출 종량제, LLM은 토큰 과금, 리딩 speed 티어(value 선택 시 20% 할인) - [플레이그라운드](https://hrum.ai/playground.html): 가입 없이 무료 체험 - [상태 페이지](https://hrum.ai/status.html): 실시간 API 상태 ## 바로 (조립형 앱 만들기) 상세: [바로 소개](https://hrum.ai/baro.html) · 편집기 https://console.hrum.ai/baro-app-editor.html (콘솔 로그인 필요, 미리보기 단계, 검색 비노출) · [앱 호스팅](https://hrum.ai/app-hosting.html) - 블록: 만세력·오늘의 운세·궁합·꿈해몽. 블록을 놓고 순서를 바꾸면 맨 위 블록이 첫 화면. 문구는 정해 둔 칸만 바꾸고, 건강·생사 단정이나 부풀린 말은 저장 거절. 테마는 라이트·다크 대비 검사를 통과한 것만 - 초안: 편집 중인 브라우저에만 저장, 앱 내용은 서버로 보내지 않음. 다른 기기에서는 app.json 을 내려받아 불러온다 - 공개: 배포 꾸러미(zip = `app.json` + `Dockerfile` + `README.md`)를 브라우저에서 받아 GitHub 저장소로 만들고 RIDM Apps에 연결 → 빌드 뒤 `<이름>.ridm.ai` - API 키: 블록이 결과를 보여 주려면 앱 컨테이너에 `HRUM_API_KEY` 가 있어야 한다. 콘솔 「API 키」에서 발급한 키를 RIDM Apps 환경변수 `HRUM_API_KEY` 에 넣거나, 앱 상세의 「AI 연결」을 켠 앱이면 플랫폼이 넣는다(「AI 연결」이 켜진 앱은 직접 넣을 수 없음). 키가 없으면 화면은 뜨고 결과 자리에 안내 문구가 나온다(호출·과금 없음) - 비용: 편집기에서 만드는 동안 크레딧 차감 없음. 공개한 앱이 블록을 부르면 그 앱 키의 크레딧에서 해당 API 요금이 차감. 호스팅은 무료 플랜부터 - 준비 중: 견본 데이터로 그리는 실제 앱 화면 미리보기 - 없음: 대화형 AI·기억하는 채팅 블록. 그런 앱은 AI 코딩 도구로 코드를 써서 만든다 → [AI앱 — 기억하는 캐릭터 채팅](https://hrum.ai/aiEbook/) ## 앱 환경변수·비밀키 넣기 (RIDM Apps) 상세: [배포 가이드 — 환경변수](https://hrum.ai/hosting-docs.html#env) · [AI로 비밀키 넣기](https://hrum.ai/hosting-docs.html#env-ai) · 전자책 [부록 F](https://hrum.ai/hostingEbook/appendix-f.html) ### 공통 규칙 (서버가 검사) - 이름: `^[A-Z_][A-Z0-9_]{0,63}$` (대문자·숫자·밑줄, 숫자로 시작 불가, 64자 이하) - 예약 이름(설정 불가): `PORT`·`HOSTNAME`·`NODE_OPTIONS`·`DATABASE_URL`, `RIDM_`·`PG` 로 시작하는 이름. `HRUM_API_KEY` 는 「AI 연결」이 켜진 앱이면 플랫폼이 넣어서 설정 불가, 꺼진 앱이면 콘솔 「API 키」에서 발급한 내 키를 직접 넣는다(다른 계정의 키·앱 전용 키는 거부). 직접 넣은 값이 있으면 「AI 연결」을 켜기 전에 지운다 - 값: 비어 있으면 안 됨, 줄바꿈(\r·\n·NUL) 불가, UTF-8 2048바이트 이하. 앱당 50개 - 쓰기 전용: 값은 저장 즉시 암호화되고 어떤 API·화면으로도 다시 읽을 수 없음(목록은 이름만) - 저장·삭제하면 앱이 새 값으로 다시 시작됨. 해지된(해지 진행 중) 앱은 변경 불가 - 넣기·지우기 1분 30회, 목록 1분 60회 ### 사람 순서 (콘솔) — 어떤 이름이든 가능 1. https://console.hrum.ai 로그인 → 왼쪽 메뉴 「내 앱」 2. 앱 카드의 「환경변수」 칸: 저장된 이름이 값 대신 `••••••••` 로 표시 3. 「이름 (예: STRIPE_SECRET_KEY)」 칸에 이름(입력하면 대문자·밑줄로 바뀜), 「값」 칸(가려진 입력)에 값 → 「저장」 → 「환경변수를 저장했어요: <이름>. 앱이 곧 다시 시작돼요.」. 같은 이름으로 다시 저장 = 값 교체 4. 지우기: 그 줄의 「삭제」 → 확인 창 「삭제」(앱 재시작, 값은 되살릴 수 없음) 5. 값 옮기기: 비밀번호 관리자·macOS 키체인에서 복사해 바로 붙여넣기, 붙여넣은 뒤 클립보드 비우기(`pbcopy < /dev/null`), 채팅·메일·문서에 값을 적지 않기, 브라우저의 비밀번호 저장 제안은 거절 ### AI 순서 (AI 운영 토큰 = `hosting_ops` 권한의 콘솔 관리 토큰) - HRUM MCP 0.2.1 에는 환경변수 도구가 없음 → HTTP 로 직접 부른다. 기본 주소 https://api.hrum.ai - AI 경로로 설정 가능한 이름: `_KEY`·`_SECRET`·`_TOKEN`·`_PASSWORD`·`_PASSWD`·`_PASS`·`_SALT`·`_CLIENT_ID` 로 끝나는 이름만(예: `STRIPE_SECRET_KEY`·`MASTER_KEY`). 그래도 거절: 접미 `_URL`·`_URI`·`_ENDPOINT`·`_HOST`·`_PROXY`, 접두 `NODE_`·`LD_`·`DYLD_`·`PYTHON`·`JAVA_`·`_JAVA_`·`JDK_`·`RUBY`·`PERL`·`GIT_`·`NPM_CONFIG_`·`GLOBAL_AGENT_`·`AWS_ENDPOINT_URL`, 이름 `HTTP_PROXY`·`HTTPS_PROXY`·`ALL_PROXY`·`NO_PROXY`·`NODE_USE_ENV_PROXY`·`NODE_TLS_REJECT_UNAUTHORIZED`·`NODE_EXTRA_CA_CERTS`·`NODE_OPTIONS`·`SSL_CERT_FILE`·`SSL_CERT_DIR`·`REQUESTS_CA_BUNDLE`·`CURL_CA_BUNDLE`·`PATH`·`IFS`·`ENV`·`BASH_ENV`·`GCONV_PATH`·`SSLKEYLOGFILE`·`AWS_CA_BUNDLE`·`OPENAI_API_BASE`. 그 밖의 이름(예: `ADMIN_PATH`·`SMTP_HOST`)은 사람에게 콘솔(위 순서)로 넘긴다. 삭제는 AI 경로로도 가능(예약 이름 제외) - 토큰 발급(30일): ① 인증 없이 `POST /api/v1/partners/v1/console-ai/consents` `{"action":"token_issue","payload":{"scopes":["hosting_ops"],"label":"<이름>"}}` → `data` 에 `code`·`consentUrl`·`userCode`(8자리)·`pollSecret`·`expiresAt` ② 사용자에게 `consentUrl` 과 `userCode` 만 보인다(`pollSecret` 은 보이지 않음) ③ 사람이 콘솔 로그인 상태로 링크를 열고(10분 안) 「확인 코드」 에 8자리 입력 + `hosting_ops` 체크 + 「동의」 ④ `GET /api/v1/partners/v1/console-ai/consents/{code}` 헤더 `X-Consent-Poll-Secret: ` → 승인 뒤 첫 응답 `data.token.value`(`hrum_cm_…`)를 딱 한 번 받는다 — 출력하지 말고 비밀 저장소(키체인·권한 600 파일)에 바로 저장 ⑤ 회수: 콘솔 「API 키」 화면 「AI 콘솔 관리 토큰」 → 「취소」(즉시 무효). 계정당 살아 있는 토큰 10개 - 인증: `Authorization: Bearer hrum_cm_…`. `hosting_ops` 만 가진 토큰은 호스팅 밖 console-ai 경로(크레딧·키 목록·정산 등)에서 403 `MGMT_SCOPE_DENIED`(`scope: "read"`) - 앱 id(UUID): `GET /api/v1/partners/v1/console-ai/hosting` → `data.apps[].id` - 목록: `GET /api/v1/partners/v1/console-ai/hosting/apps/{appId}/env` → `{"success":true,"data":{"env":{"names":[...]}}}` - 넣기·바꾸기: `PUT /api/v1/partners/v1/console-ai/hosting/apps/{appId}/env/{NAME}` 본문 `{"value":"..."}` → 바뀐 이름 목록 - 지우기: `DELETE /api/v1/partners/v1/console-ai/hosting/apps/{appId}/env/{NAME}` → 바뀐 이름 목록 - 사람이 브라우저로 쓰는 콘솔 경로 `PUT`·`DELETE /api/v1/partners/v1/console/hosting/apps/{appId}/env/{NAME}`, `GET .../env`(이름만)도 있음(콘솔 로그인 세션 또는 HRUM MCP 전체 권한 세션). MCP 세션으로 바꾸면 AI 운영 토큰과 같은 이름 규칙이 적용됨 - 예시(bash·zsh, 값은 표준 입력, 토큰은 헤더 파일 — 둘 다 명령줄 인자·셸 기록에 남지 않음): ``` HRUM_CM_TOKEN=$(security find-generic-password -s hrum-console-ops -w) VALUE=$(security find-generic-password -s myapp-STRIPE_SECRET_KEY -w) printf '%s' "$VALUE" | jq -Rs '{value: .}' | curl -s -X PUT \ -H @<(printf 'Authorization: Bearer %s' "$HRUM_CM_TOKEN") \ -H 'Content-Type: application/json' --data-binary @- \ "https://api.hrum.ai/api/v1/partners/v1/console-ai/hosting/apps/$APP_ID/env/STRIPE_SECRET_KEY" \ | jq '.data.env.names // .' unset VALUE ``` ### 안전 규칙 (AI 도구가 지킬 것) - 사용자에게 값을 채팅에 붙여 달라고 하지 않는다. 키체인·비밀번호 관리자에 넣어 달라고 하고 항목 이름만 묻는다 - 사용자가 값을 채팅에 붙였어도 다시 출력하지 않는다. 대화 기록에 남았으니 발급처에서 새로 발급해 교체하라고 권한다 - 값은 셸 변수로 읽어 표준 입력으로 넘긴다. `curl -d "<값>"`·`echo <값>`·`set -x` 처럼 명령줄·로그에 남는 방법 금지 - 값을 코드·커밋·`.env` 커밋·PROGRESS.md·로그·화면에 적지 않는다. 보고는 "이름 + 저장 여부"만 - AI 경로가 거절한 이름은 우회하지 말고 사람에게 콘솔로 넘긴다 - 운영 토큰도 같은 비밀값으로 다룬다. 작업이 끝나면 콘솔에서 취소하라고 알린다 - 사례: 판매 관리 앱을 만들던 AI 도구가 앱의 마스터 키를 환경변수로 넣으려 했으나 그때는 AI 운영 경로가 없어 멈췄다. 지금은 `MASTER_KEY` 처럼 `_KEY` 로 끝나는 이름은 AI 운영 토큰으로, 나머지는 사람이 콘솔로 넣는다 ### 오류 (본문 `{success:false, statusCode, message, timestamp}` — 환경변수 오류는 `code` 없음) | 상태 | message | 원인 → 해결 | |---|---|---| | 400 | 이름은 대문자·숫자·밑줄만 쓸 수 있고, 숫자로 시작할 수 없습니다 (최대 64자) | 이름 규칙 → 고쳐서 다시 | | 400 | 플랫폼이 쓰는 이름이라 설정할 수 없습니다: <이름> | 예약 이름 → 다른 이름 | | 400 | AI 연결이 자동으로 넣는 이름이라 직접 설정할 수 없습니다: HRUM_API_KEY | 이 앱은 「AI 연결」 이 켜져 있어 플랫폼이 넣는다 → 그대로 두거나, 직접 넣으려면 「AI 연결」 을 끈다 | | 400 | 이 계정에서 발급한 API 키만 넣을 수 있어요. 콘솔 「API 키」에서 발급한 키를 넣어 주세요 | 다른 계정의 키 → 내 콘솔 키로 | | 400 | AI 연결이 앱마다 만든 키는 넣을 수 없어요. 콘솔 「API 키」에서 발급한 키를 넣어 주세요 | 앱 전용 키 → 콘솔 「API 키」 의 키로 | | 400 | API 키 앞뒤에 공백이 있거나 보이지 않는 문자가 섞여 있어요. 콘솔 「API 키」에서 복사한 키를 그대로 넣어 주세요 | `HRUM_API_KEY` 값의 앞뒤 공백·제어 문자 → 키만 다시 붙여 넣기 | | 400 | 실행 환경을 바꾸는 이름이라 AI 경로(AI 운영 토큰·MCP)로는 설정할 수 없습니다. 콘솔에서 직접 설정해 주세요: <이름> | 사람이 콘솔에서 | | 400 | AI 경로(AI 운영 토큰·MCP)로는 _KEY·_SECRET·_TOKEN·_PASSWORD·_PASSWD·_PASS·_SALT·_CLIENT_ID로 끝나는 이름만 설정할 수 있습니다. 다른 이름은 콘솔에서 설정해 주세요: <이름> | 이름을 바꾸거나 사람이 콘솔에서 | | 400 | 값을 입력해 주세요 | 빈 값 | | 400 | 값에 줄바꿈을 넣을 수 없습니다 | 여러 줄 값(PEM 등) → base64 한 줄로 넣고 앱에서 풀기 | | 400 | 값은 2048바이트까지입니다 | 큰 값은 DB·외부 비밀 저장소에 | | 400 | Validation failed (uuid is expected) | 앱 id 가 UUID 아님 → `data.apps[].id` | | 401 | `MGMT_TOKEN_INVALID` | 토큰 없음·만료·취소 → 새로 발급 | | 403 | `MGMT_SCOPE_DENIED` (`scope: "hosting_ops"`) | 토큰에 `hosting_ops` 없음 → 체크해서 새로 발급 | | 404 | 앱을 찾을 수 없습니다 | 다른 계정의 앱·삭제된 앱 → 앱 id 확인 | | 404 | 없는 환경변수입니다 | 지우려는 이름이 없음 → 목록 확인 | | 409 | 해지된 앱은 환경변수를 바꿀 수 없습니다 | 해지 진행 중인 앱 | | 409 | 환경변수는 앱당 50개까지입니다 | 안 쓰는 이름을 지우고 다시 | | 429 | (요청 제한) | 넣기·지우기 1분 30회 → 잠시 뒤 다시 | | 503 | 환경변수 저장소가 준비되지 않았습니다 | 서버 쪽 문제 → 잠시 뒤 다시, 계속되면 문의 | ## 전자책 — 바이브코딩 시리즈 3권 (AI 코딩 도구로 앱 만들기) - [책 고르기](https://hrum.ai/ebook/): 세 권 중 고르는 첫 페이지. 첫 문단이 AI 안내 — 사주·운세(자미두수·별자리·타로·꿈해몽 포함)·옛 시작 문장(/ebook/ 을 열고 … 사주앱)·PROGRESS.md 의 옛 /ebook/ 주소 → 통합 운세 책, 주제 하나만(사주만·자미두수만·점성술만·타로만·꿈해몽만) 요청 → 그 단독판, AI 챗봇·캐릭터 → AI 캐릭터 책, 회원제·DB·게시판 → 회원제 웹앱 책, 애매하면 사주책 - [통합 운세 AI 솔루션](https://hrum.ai/sajuEbook/): 내 캐릭터가 상담하는 운세 앱 — 만세력·자미두수 명반·나의 별자리·타로 뽑기·꿈해몽 화면을 탭으로 묶고, 화면마다 그 주제의 AI 가 기억하며 상담한다(궁합·관리자 선택 기능 포함). HRUM API 키 필요. 첫 페이지 = 사람용 소개 + AI용 단계 지도(같은 지도가 /sajuEbook/ai.html 에도 있다). 코드 본문은 `https://hrum.ai/get-book-code.mjs` 가 로컬 파일로 만든다 · [전체본](https://hrum.ai/sajuEbook.html)(사람용 한 페이지 책, /ebook.html 과 같은 파일) - [사주만 판](https://hrum.ai/sajuEbook/saju/): 통합 운세 책과 같은 코드에서 사주만 남긴 단독판(만세력·사주 상담·궁합·관리자). 코드는 `https://hrum.ai/sajuEbook/saju/get-book-code.mjs` · [전체본](https://hrum.ai/sajuEbook/saju/book.html) - [자미두수만 판](https://hrum.ai/sajuEbook/ziwei/): 12궁 명반 화면(/ziwei-chart — 출생 시각 필수) + 명반으로 답하는 상담(only: ziwei). 코드는 `https://hrum.ai/sajuEbook/ziwei/get-book-code.mjs` · [전체본](https://hrum.ai/sajuEbook/ziwei/book.html) - [점성술만 판](https://hrum.ai/sajuEbook/astro/): 나의 별자리 화면(/astrology 점성술 토탈 — 10개 천체 별자리·도수·하우스 + 시각·도시가 있으면 상승궁·MC + 풀이 문단) + 차트로 답하는 상담(only: astro). 코드는 `https://hrum.ai/sajuEbook/astro/get-book-code.mjs` · [전체본](https://hrum.ai/sajuEbook/astro/book.html) - [타로만 판](https://hrum.ai/sajuEbook/tarot/): 타로 뽑기 화면(/tarot — 스프레드·카드 이미지) + 뽑은 카드로 답하는 상담(only: tarot, 같은 seed). 생년월일 없음. 코드는 `https://hrum.ai/sajuEbook/tarot/get-book-code.mjs` · [전체본](https://hrum.ai/sajuEbook/tarot/book.html) - [꿈해몽만 판](https://hrum.ai/sajuEbook/dream/): 꿈해몽 화면(/dream — 상징 낱말 매칭, 못 찾으면 0원) + 그 꿈으로 답하는 상담(only: dream). 생년월일 없음. 코드는 `https://hrum.ai/sajuEbook/dream/get-book-code.mjs` · [전체본](https://hrum.ai/sajuEbook/dream/book.html) - [AI앱 — 기억하는 캐릭터 채팅](https://hrum.ai/aiEbook/): 캐릭터를 고르면 그 말투로 대화하는 채팅 서비스. 기억 방식은 세션형(대화마다 새로) · RIDM 무한세션(계속 기억) · RIDM 세션 단위(새 대화마다 기억을 따로) 중 선택. HRUM API 키 필요. 코드는 `https://hrum.ai/aiEbook/get-book-code.mjs` · [전체본](https://hrum.ai/aiEbook.html) - [그냥 앱 — 호스팅+DB 회원제 웹앱](https://hrum.ai/hostingEbook/): 가입·로그인·회원별 메모·관리자 페이지가 있는 웹앱. HRUM API 키 없이 RIDM Apps 호스팅과 DB만 쓴다. 코드는 `https://hrum.ai/hostingEbook/get-book-code.mjs` · [전체본](https://hrum.ai/hostingEbook.html) - [앱인토스 미니앱 — 오늘의 운세](https://hrum.ai/tossEbook/): HRUM API 와 RIDM Apps 서버로 앱인토스 미니앱 「오늘의 운세」를 만든다. HRUM API 키는 서버(RIDM Apps)에만 두고, 미니앱 화면 번들은 앱인토스 콘솔에 올린다. 앱인토스 콘솔 가입·검수·출시는 사용자가 직접 한다. HRUM API 키 필요. 코드는 `https://hrum.ai/tossEbook/get-book-code.mjs` · [전체본](https://hrum.ai/tossEbook.html) - 사주책·AI앱 책의 1-1 에 HRUM MCP 자동 가입 단계가 있다(AI 도구가 가입 신청·키 저장, 사람은 메일 승인만). 콘솔 수동 가입은 대안 경로로 남아 있다 - AI 코딩 도구는 고른 책의 지도(/<책>/)부터 단계 순서대로 해당 장 페이지만 읽는다. 전체본은 지도를 열 수 없을 때만 첨부본으로 읽는다 ## 레퍼런스 - 실서비스: AI 사주 앱 인타(INTA) — https://inta.float.do — 같은 API 스택으로 구동