레지스트리에 게시
AISCouncil 마켓플레이스는 개방성과 신뢰의 균형을 맞추는 계층화된 배포 모델을 사용합니다. URL로 자유롭게 앱을 배포하거나, 신뢰 배지와 함께 더 넓은 검색을 위해 레지스트리에 등록할 수 있습니다.
배포 등급
| 등급 | 등록 방법 | 검토 | 배지 | 유료 앱 | 추천 |
|---|---|---|---|---|---|
| 직접 설치 | 사용자가 매니페스트 URL 붙여넣기 | 없음 | 없음 | 아니오 | 아니오 |
| 커뮤니티 | registry/packages.json에 PR | 자동화 | "Community" | 예 | 아니오 |
| AI Verified | 커뮤니티 + 유료 AI 스캔 | LLM 보안 감사 | "AI Verified" | 예 | 아니오 |
| Verified | 커뮤니티 + 수동 팀 검토 | 인간 검토 | "Verified" | 예 | 예 |
직접 설치
가장 간단한 배포 방법입니다. 매니페스트와 파일을 어디에나 호스팅하고 매니페스트 URL을 공유합니다. 사용자가 사이드로드 섹션에 붙여넣어 설치합니다.
- 레지스트리 등록 불필요
- 검토 과정 없음
- 신뢰 배지 없음
- 무료 앱만
- 즉시 작동
웹의 네이티브 배포 모델입니다. 자세한 내용은 앱 사이드로딩을 참조하세요.
커뮤니티
표준 레지스트리 등록입니다. registry/packages.json에 앱을 추가하는 풀 리퀘스트를 제출합니다. 자동화된 검증이 통과하면 PR이 병합될 수 있고 "Community" 배지와 함께 앱 스토어에 앱이 나타납니다.
validate.py를 통한 자동화된 검증- 앱 스토어에서 검색 가능
- 무료 및 유료 앱 지원
- 수동 검토 불필요
AI Verified
커뮤니티 앱을 위한 선택적 신뢰 업그레이드입니다. 코드에서 멀웨어, 데이터 유출, 권한 오용, 난독화된 코드, 샌드박스 탈출 시도를 확인하는 LLM 기반 보안 스캔에 비용을 지불합니다.
- 스캔 깊이에 따라 버전당 $19-$99
- 배지는 SHA-256 콘텐츠 해시에 고정
- 코드 변경 시 배지 무효화
- 12개월 후 배지 만료
AI Verified 시스템(/v1/verify/* 엔드포인트)은 향후 릴리스에서 계획되어 있습니다. 여기에 설명된 워크플로우는 해당 엔드포인트가 출시될 때 사용할 수 있습니다.
Verified
가장 높은 신뢰 등급입니다. 플랫폼 유지관리자가 매니페스트, 권한, 진입 HTML, (플러그인의 경우) WASM 바이너리를 수동으로 검토합니다.
- 인간 승인 필요
- "Verified" 배지 획득
- 앱 스토어 상단에 추천 배치
- 민감한 데이터를 처리하는 앱에 권장
무료 앱 게시 (커뮤니티 등급)
1. 앱 파일 호스팅
manifest.json과 index.html(및 모든 에셋)을 공개적으로 접근 가능한 CDN에 업로드합니다. 인기 있는 무료 옵션:
| 호스트 | URL 패턴 | 설정 |
|---|---|---|
| GitHub Pages | yourname.github.io/app-name/ | 저장소 설정 > Pages에서 활성화 |
| Cloudflare Pages | app-name.pages.dev/ | CF 대시보드에서 저장소 연결 |
| Vercel | app-name.vercel.app/ | vercel.com에서 저장소 가져오기 |
| Netlify | app-name.netlify.app/ | netlify.com에서 저장소 가져오기 |
manifest.json에 파일이 호스팅되는 위치를 가리키는 올바른 base_url이 있는지 확인하세요:
{
"name": "word-counter",
"version": "1.0.0",
"abi": 1,
"type": "mini-program",
"entry": "index.html",
"base_url": "https://yourname.github.io/word-counter/"
}
2. 앱 테스트
제출 전에 사이드로딩하여 앱이 작동하는지 확인하세요:
- aiscouncil.net 열기
- 앱 > 사이드로드로 이동
- 매니페스트 URL 붙여넣기
- 설치 및 모든 기능 테스트
3. 저장소 포크
github.com/nicholasgasior/bcz로 이동하여 Fork를 클릭합니다.
4. 패키지 항목 추가
registry/packages.json을 편집하고 packages 배열에 항목을 추가합니다:
{
"name": "word-counter",
"type": "mini-program",
"version": "1.0.0",
"manifest": "https://yourname.github.io/word-counter/manifest.json",
"tier": "community",
"category": "utilities",
"description": "Count words in your chat history by role",
"icon": "https://yourname.github.io/word-counter/icon.png",
"added": "2026-02-19",
"price": 0,
"currency": "USD",
"seller": null
}
5. 검증
검증 스크립트를 실행하여 항목을 확인합니다:
python3 registry/validate.py packages
계속하기 전에 에러를 수정하세요. 일반적인 문제:
| 에러 | 수정 |
|---|---|
| 이름 불일치 | packages.json의 name이 manifest.json의 name과 일치해야 함 |
| 잘못된 버전 | semver 형식 사용: 1.0.0, 1.0 또는 v1.0.0이 아님 |
| 필수 필드 누락 | name, type, version, manifest가 있는지 확인 |
| 잘못된 등급 | community, ai-verified, 또는 verified여야 함 |
6. 풀 리퀘스트 제출
포크에 변경사항을 푸시하고 main 브랜치에 대한 PR을 생성합니다. 포함하세요:
- 앱이 하는 일에 대한 간단한 설명
- 검토자가 테스트할 수 있도록 호스팅된 앱 링크
- 해당하는 경우 스크린샷
자동화된 검증이 통과하면 PR이 병합될 수 있고 앱이 앱 스토어에 나타납니다.
패키지 레지스트리 항목 형식
필수 필드
| 필드 | 타입 | 설명 |
|---|---|---|
name | string | 패키지 이름 (매니페스트 name과 일치해야 함) |
type | string | "plugin", "addon", 또는 "mini-program" |
version | string | Semver (매니페스트 version과 일치해야 함) |
manifest | string | 호스팅된 manifest.json의 전체 URL |
선택적 필드
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
tier | string | "community" | "community", "ai-verified", 또는 "verified" |
category | string | -- | 다음 중 하나: productivity, developer, communication, media, utilities, games, education, finance |
description | string | -- | 스토어 목록 설명 |
icon | string | -- | 아이콘 URL (128x128 PNG 권장) |
added | string | -- | 처음 등록된 ISO 8601 날짜 (예: "2026-02-19") |
price | number | 0 | 센트 단위 가격 (0 = 무료, 499 = $4.99) |
currency | string | "USD" | ISO 4217 통화 코드 |
priceType | string | -- | 일회성 구매의 경우 "one-time" |
geoPrice | object | -- | 지역별 가격 오버라이드 |
seller | object|null | null | Stripe Connect 판매자 정보 (유료 앱에 필수) |
verification | object | -- | AI Verified 배지 데이터 |
유료 앱
가격 설정
가격을 센트 단위로 price 필드에 설정합니다. 예: $4.99 = 499:
{
"name": "pro-editor",
"type": "mini-program",
"version": "2.0.0",
"manifest": "https://cdn.example.com/pro-editor/manifest.json",
"tier": "community",
"price": 499,
"currency": "USD",
"priceType": "one-time",
"seller": {
"name": "DevCo",
"id": "acct_abc123"
}
}
플랫폼 수수료
플랫폼은 유료 판매에 15% 수수료를 받습니다. 판매자는 Stripe Connect 지급을 통해 85%를 받습니다.
| 가격 | 수수료 (15%) | 판매자 수령 |
|---|---|---|
| $0.99 | $0.15 | $0.84 |
| $4.99 | $0.75 | $4.24 |
| $9.99 | $1.50 | $8.49 |
| $19.99 | $3.00 | $16.99 |
지역별 가격
geoPrice 필드를 사용하여 지리적 등급에 따라 다른 가격을 설정할 수 있습니다:
"geoPrice": {
"1": 1500,
"2": 1000,
"3": 700,
"4": 400
}
등급은 구매력 지역에 해당합니다:
- 1등급: 미국, 캐나다, 서유럽, 호주, 일본 ($15.00)
- 2등급: 동유럽, 남미, 중동 ($10.00)
- 3등급: 동남아시아, 중미 ($7.00)
- 4등급: 사하라 이남 아프리카, 남아시아 ($4.00)
플랫폼은 API에서 사용자의 지역을 감지하고 적절한 등급 가격을 적용합니다.
판매자 온보딩
결제를 받으려면 플랫폼에 연결된 Stripe Connect 계정이 필요합니다:
- AISCouncil 앱에서 설정 > 계정 > 개발자로 이동
- Stripe 계정 연결 클릭
- Stripe Connect 온보딩 흐름 완료
- Stripe Connected Account ID (형식:
acct_xxx)가 할당됨 - 레지스트리 항목에
seller객체 추가:
"seller": {
"name": "본인 이름 또는 회사",
"id": "acct_abc123"
}
유료 앱은 유효한 Stripe Connect 계정 ID가 있는 seller 객체가 필수입니다. 검증 스크립트는 판매자 정보 없는 유료 항목을 거부합니다.
AI Verified 배지
AI Verified 시스템은 향후 릴리스에서 계획되어 있습니다. 이 섹션은 의도된 워크플로우를 설명합니다.
AI Verified 배지는 앱의 코드가 LLM에 의해 스캔되었고 일반적인 보안 문제가 없는 것으로 확인되었음을 인증합니다.
스캔 등급
| 등급 | 가격 | 최대 크기 | 배지 텍스트 |
|---|---|---|---|
| Quick | $19 | 100 KB | "AI Scanned" |
| Full | $49 | 500 KB | "AI Verified" |
| Deep | $99 | 2 MB | "AI Verified + Reviewed" |
워크플로우 (계획)
- 먼저 커뮤니티 등급으로 앱 게시
- 스캔 등급과 함께 매니페스트 URL을
POST /v1/verify/submit에 제출 - Stripe 체크아웃으로 스캔 비용 지불
- LLM이 코드 분석:
- 멀웨어 및 백도어
- 데이터 유출 시도
- 권한 오용 (필요 이상 요청)
- 동작을 숨기는 난독화 또는 축소된 코드
- 샌드박스 탈출 시도
GET /v1/verify/status/{jobId}에서 상태 확인- 통과하면
GET /v1/verify/report/{jobId}에서verification객체 검색 - 레지스트리 항목에 verification 객체 추가:
"verification": {
"hash": "sha256:a1b2c3d4...",
"tier": "full",
"date": "2026-02-19",
"expires": "2027-02-19",
"job_id": "ver_xyz789"
}
- 업데이트된 레지스트리 항목으로 PR 제출
- 검증 스크립트가
/v1/verify/badge/{hash}를 통해 배지가 유효한지 확인
배지 규칙
- 배지는 앱의 진입 HTML의 SHA-256 해시에 고정됨
- 코드 변경 시 배지 무효화 (새 해시 = 배지 사라짐)
- 배지는 12개월 후 만료되며 갱신 필요
- 실패한 스캔은 수정할 발견 사항이 포함된 보고서 제공
Verified 배지 (수동 검토)
가장 높은 신뢰 수준을 위해 수동 검증을 요청하세요:
- 레지스트리 항목에
"tier": "verified"설정 - PR 제출
- 플랫폼 유지관리자가 검토:
- 매니페스트 권한 (정당한가?)
- 진입 HTML 및 JavaScript (악성 코드 없는가?)
- 샌드박스 준수 (탈출 시도 없는가?)
- 플러그인의 경우: WASM 바이너리 분석
- 승인되면: 배지 부여, 추천 배치 활성화
- 거부되면: PR에 피드백 제공
Verified 앱은 다음을 얻습니다:
- "Verified" 배지 (녹색 체크마크)
- 앱 스토어 상단에 추천 배치
- 사용자의 더 높은 신뢰
앱 업데이트
게시된 앱을 업데이트하려면:
- 앱 파일의 새 버전을 CDN에 배포
manifest.json의version업데이트registry/packages.json의version업데이트- 버전 범프로 PR 제출
semver 규칙을 따르세요:
- Patch (1.0.0 -> 1.0.1): 버그 수정, 새 기능 없음
- Minor (1.0.0 -> 1.1.0): 새 기능, 하위 호환
- Major (1.0.0 -> 2.0.0): 호환성 깨는 변경
이미 앱을 설치한 사용자는 레지스트리가 새로고침될 때(일일 캐시) 업데이트를 보게 됩니다.
모범 사례
설명 및 아이콘
- 앱이 하는 일을 설명하는 명확하고 간결한 설명 작성 (256자 미만)
- 투명 또는 어두운 배경의 128x128 PNG 아이콘 사용
- SVG 아이콘도 허용되며 모든 크기에서 선명하게 렌더링됨
권한
- 앱이 실제로 사용하는 권한만 요청
- PR 설명에 각 권한이 필요한 이유 설명
- 권한이 적은 앱이 더 많은 설치를 얻음
테스트 체크리스트
PR 제출 전:
- 앱이 에러 없이 설치되고 실행됨
- 모든 기능이 설명대로 작동
- 앱이 권한 거부를 우아하게 처리 (SDK 호출 주변의 try/catch)
- 앱이 다크 모드에서 작동 (플랫폼 기본값)
- 버튼과 인터랙티브 요소가 최소 48px 높이
- 텍스트가 최소 14px
-
ais.close()가 깔끔하게 채팅으로 돌아감 -
python3 registry/validate.py packages통과 -
python3 registry/validate.py manifest path/to/manifest.json통과
카테고리 선택
앱에 가장 적합한 카테고리를 선택하세요:
| 카테고리 | 예시 |
|---|---|
productivity | 작업 관리자, 노트 필기, 프로젝트 도구 |
developer | 코드 에디터, API 테스터, 디버그 도구 |
communication | 채팅 확장, 이메일 통합 |
media | 이미지 에디터, 오디오 도구, 비디오 플레이어 |
utilities | 계산기, 변환기, 시스템 도구 |
games | 인터랙티브 게임, 퍼즐 |
education | 플래시카드, 퀴즈 도구, 학습 보조 |
finance | 예산 추적기, 암호화폐 도구, 인보이싱 |