ShareOut Skill
ShareOut은 파일을 지속적 데이터, 실시간 협업, 파일 저장소, 통합 및 자동화 기능을 갖춘 공유 가능한 웹 아티팩트로 변환합니다. HTML 앱과 CSV, Markdown, JSON, TXT 뷰어를 지원합니다.
이것은 공식 스킬입니다. 모든 ShareOut 작업에 대해 먼저 로드하세요.
버전 확인 — 필수 첫 단계
다른 작업을 수행하기 전에 최신 스킬을 보유하고 있는지 확인하세요. 이 파일의 프론트매터 version이 현재 보유한 버전입니다(현재 2.21.0).
GET https://shareout.site/v1/skill/version→{ "version": "...", "updated_at": "..." }.- 반환된
version이 이 파일의 프론트매터version보다 최신이면, 에이전트가 오래된 것입니다:GET https://shareout.site/v1/skill(전체 스킬 폴더의 zip)을 다운로드하고, 압축을 풀고, 이전 복사본을 폐기한 후, 추출된 파일로 계속 진행하세요. - 일치하면 진행하세요.
이 확인을 건너뛰지 마세요. 오래된 스킬로 작업하면 잘못된 엔드포인트와 동작이 발생합니다.
계획 모델
ShareOut에는 두 가지 계획이 있습니다:
| 계획 | 스킬 사용 방법 |
|---|---|
| 개인 | 기본 스킬만 사용하세요. 사용자 자신의 아티팩트를 빌드, 게시, 업데이트, 자동화 및 관리합니다. |
| 팀 | 먼저 기본 스킬을 사용한 다음, 워크스페이스 관리 또는 팀 전용 기능을 위해 Teams 오버레이를 로드하세요. |
Teams는 추가 기능입니다. 기본 스킬 대신 Teams 오버레이를 사용하지 마세요.
에이전트 로딩 프로토콜
- 이 파일로 시작합니다.
- 사용자가 팀, 워크스페이스, 멤버, 내부 워크스페이스 공유, 서브도메인, 워크스페이스 하우스 스타일, 워크스페이스 스케줄 또는 관리자 제어에 대해 언급하면, 아직 명확하지 않은 경우 Teams 요금제인지 물어보세요.
- 사용자가 Teams 요금제가 아닌 경우 Personal 모드를 유지하고 Teams 전용 지침을 로드하거나 적용하지 마세요.
- 사용자가 Teams 요금제인 경우 team/SKILL.md을 로드하세요. 워크스페이스 slug/id와 토큰을 사용할 수 있는 경우
GET /v1/skill?workspace={slugOrId}를 가져오세요. zip에는 하우스 규칙이 포함된 추가workspace-context.md가 포함되어 있습니다. - INDEX.md를 사용하여 필요에 따라 세부 파일을 로드하세요.
첫 번째 질문
구현을 권장하기 전에 다음을 파악하세요:
- 무엇을 만들고 있나요? 대시보드, 폼, 보고서, 도구, 문서, 데이터 그리드, 프레젠테이션, 자동화.
- 누가 사용하나요? 소유자만, 초대된 사람, Teams 워크스페이스, 또는 공개.
- 어떤 데이터가 필요하나요? 없음, 간단한 상태, 구조화된 레코드, 파일, 실시간 외부 데이터, 실시간 협업.
- 게시 후 어떤 일이 일어나야 하나요? 링크 공유, 데이터 수집, 알림 전송, 예약 전달, 메트릭 알림, 수신 이메일 수신 및 처리, 또는 뷰어가 AI와 채팅.
모드 라우터
데이터 선택
가장 작은 저장소를 선택하세요:
간단한 상태: 테마, 필터, 마지막으로 연 항목 -> sdk.json
구조화된 레코드: 작업, 제출, 주문 -> sdk.table()
실시간 편집: 문서, 보드, 멀티플레이어 UI -> sdk.realtime()
파일: 이미지, PDF, 첨부 파일 -> sdk.blobs
실시간 외부 시스템: REST, BigQuery, Mixpanel, 웨어하우스 -> sdk.connection / live-data
데이터 선택을 계정 요금제와 혼동하지 마세요. sdk.json, sdk.table(), sdk.realtime()은 데이터 저장소이며, 결제 요금제가 아닙니다.
SDK 로딩
<head>
<link rel="stylesheet" href="https://shareout.site/sdk/shareout.css">
<script src="https://shareout.site/sdk/shareout-ui.js" defer></script>
<script src="https://shareout.site/sdk/shareout.js"></script>
</head>
<script>
(async () => {
const sdk = await ShareOut.create();
})();
</script>
규칙:
ShareOut.create()를 호출하기 전에https://shareout.site/sdk/shareout.js를 로드하세요.new ShareOut()보다await ShareOut.create()를 선호하세요. 그러면 포함된 Bearer 토큰이 준비됩니다.- 게시된 HTML은
{hex}.shareoutcdn.site의 샌드박스 iframe에서 실행됩니다. SDK 메서드를 사용하고,/v1/data/...에fetch를 사용하지 마세요. sdk/live-data.md를 참조하세요. https://shareout.site/sdk/shareout.css를 링크하고 사용자 정의 CSS를 작성하기 전에.so-클래스를 사용하세요. modules/ui/overview.md를 참조하세요.cdn.jsdelivr.netShareOut SDK URL을 사용하지 마세요.
HTML 아티팩트 규칙
HTML 아티팩트는 ShareOut의 구조적 마커를 포함하든 포함하지 않든 작동합니다. 게시가 차단되지 않습니다. 그러나 아티팩트가 더 많이 선언할수록 비주얼 편집기가 더 많은 작업을 수행할 수 있습니다 (개요 탐색, 인라인 편집, 행 추가/제거). 기본적으로 편집기 준비 상태를 목표로 하세요. 의도적으로 일회성 정적 페이지인 경우에만 건너뛰세요.
편집기 준비 상태 체크리스트 (편집기가 찾는 것):
- 문서
head에 유효한 JSON이 포함된script type="shareout/manifest"태그. - 사용된 모든
sdk.json키와sdk.table()이름이 매니페스트sources에 선언됨. - 동적 콘텐츠에는
data-shareout-binding이 있고, 각 바인딩은 선언된 소스를 참조함. - 페이지는
data-shareout-page를 사용하고 (편집기 개요를 구동합니다); 반복되는 콘텐츠는data-shareout-template을 사용함. - 대화형 대상이 해결됨:
data-shareout-link/data-shareout-action은 실제 페이지/섹션/모달/탭을 가리킴; 모달에는 열기 트리거가 있음; 폼에는 제출 버튼이 있음. sources에default샘플 데이터 선언 —json,tables, 및connections(BigQuery/Snowflake/Sheets와 같은 라이브 커넥터:sources.connections.<name>.default는 샘플 행의 배열입니다). 비주얼 편집기는 라이브 가져오기나 쿼리 없이 데이터를 미리 봅니다 (sdk.connection(...).query()를 포함한 모든 SDK 읽기를 이러한 기본값 또는 빈 값에서 해결함). 따라서await sdk.table(...).exec()/ 커넥터 쿼리 뒤에 UI를 게이트하는 아티팩트도 렌더링되고 편집 가능하게 유지됩니다.default가 없는 소스는 빈 상태로 미리 봅니다.
HTML 아티팩트를 게시할 때마다 조언 editor_readiness 프로필이 반환됩니다 (api/artifacts.md 참조). 이 프로필은 각 항목을 등급화하고 각 격차가 비활성화하는 항목의 이름을 지정합니다. 사용자에게 한 줄 요약을 공유하지만 지침으로 취급하고 게이트로 취급하지 마세요. 사용자는 원하는 것을 정확히 게시할 수 있습니다.
전체 사양: core/html-spec/overview.md.
디자인 감각
편집기 준비 상태는 구조에 관한 것이지 모양에 관한 것이 아닙니다. 모양은 별개의 의도적인 결정입니다. 그리고 AI가 구축한 페이지의 기본값은 "템플릿화되고 일반적인" 것입니다. 시각적인 것을 구축하기 전에 modules/ui/taste.md를 읽으세요: 전문적으로 디자인된 것처럼 보이고 자동 생성된 것처럼 보이지 않는 아티팩트를 제공하는 방법이 설명되어 있습니다. 짧은 버전:
- 디자인 시스템 사용 (
.so-클래스 + 토큰) — 브랜드 폰트, 따뜻한 밝은 팔레트, 조화로운 간격/그림자를 제공하므로 무료로 좋은 감각을 물려받습니다. modules/ui/overview.md를 참조하세요. - 감각은 절제입니다: 하나의 강조 색상, 하나의 폰트 시스템, 화면당 하나의 기본 작업, 넉넉한 여백, 동기는 필요한 경우에만.
- AI 슬롭 징후 피하기: 보라색/네온 광채, 세 개의 동일한 카드 행, 눈썹 스팸, 가짜 완벽한 숫자, 마케팅 클리셰, 누락된 빈/오류 상태. 전체 금지 목록과 출시 전 체크리스트는 modules/ui/taste.md에 있습니다.
아티팩트 유형
ShareOut은 MIME 유형 또는 파일 확장자에서 유형을 자동 감지합니다:
| 유형 | 확장자 | 용도 |
|---|---|---|
html | .html, .htm | 전체 SDK 앱, 대시보드, 도구, 프레젠테이션 |
csv | .csv | 정렬/필터 가능한 데이터 그리드 |
markdown | .md, .markdown | 렌더링된 HTML 및 TOC가 포함된 문서 |
json | .json | 접을 수 있는 트리 뷰어 |
txt | .txt | 일반 텍스트/로그 뷰어 |
세부 정보: api/artifact-types.md.
첫 실행 — 토큰 받기
모든 인증된 작업에는 토큰이 필요합니다. ~/.shareout/credentials가 아직 없으면 사용자에게 계정이 없는 것입니다. 게시 또는 기타 인증된 호출 전에 계정을 부트스트랩하세요:
POST https://shareout.site/v1/auth/create-account(유일한 인증되지 않은 엔드포인트, 본문 없음) →{ "token": "so_…", "user_id": "usr_…" }.token을~/.shareout/credentials에{ "token": "so_…" }(chmod 600)로 저장하세요.- 이후 모든 요청은
Authorization: Bearer so_…를 사용합니다.
계정 생성은 IP당 속도 제한이 있습니다 (code: RATE_LIMIT_EXCEEDED, 429). 계정은 익명이며 헤드리스입니다. 게시하는 데 이메일이 필요하지 않습니다.
그런 다음 사용자에게 Gmail/Google에 연결할지 물어보세요. 부트스트랩 계정에는 이메일이 없으므로 저장된 토큰을 통해서만 사용할 수 있습니다. 이메일을 연결하면 https://shareout.site 웹 UI에 로그인할 수 있습니다 (홈 대시보드, 비주얼 편집기, 셀프 서비스 API 토큰). 두 가지 경로를 모두 제공하세요:
- Google: 브라우저에서
GET https://shareout.site/v1/auth/link-google(Bearer 토큰)을 열어 Google 계정을 연결합니다. - 이메일 코드:
POST /v1/auth/link-email/start{ "email" }→POST /v1/auth/link-email/verify{ "email", "code" }(6자리 코드, 10분 만료).
거부하면 토큰 전용 흐름이 계속 작동합니다. 전체 온보딩 및 연결 참조는 auth.md를 참조하세요.
게시
ShareOut은 Cloudflare로 보호됩니다. Python requests는 1010 블록을 트리거할 수 있습니다. 원하는 방식으로 페이로드를 빌드한 다음 curl로 파이프하세요:
TOKEN=$(python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.shareout/credentials')))['token'])")
python3 build_payload.py | curl -sS -X POST 'https://shareout.site/v1/publish' \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
--data-binary @-
전체 API: api/overview.md.
Teams 경계
개인 아티팩트는 여전히 비공개, 협업자와 공유, 공개 또는 미등록 상태일 수 있습니다. Teams 문서는 Teams 요금제 워크스페이스 기능에 대해서만 로드하세요:
- 워크스페이스 멤버 및 역할.
- 내부 워크스페이스 가시성 (
visibility: "workspace"). - 이메일/도메인별 워크스페이스 멤버십 정책.
- 워크스페이스 서브도메인.
- 하우스 스타일을 위한 워크스페이스 컨텍스트 파일.
- 워크스페이스 수준 스케줄, 자동화, 기능 플래그 및 관리자 보기.
중요한 용어 구분:
| 용어 | 의미 |
|---|---|
access_policy | 행 수준 아티팩트 데이터 필터링: 각 뷰어는 허용된 행만 봅니다. core/access-policy.md 참조. |
| 워크스페이스 멤버십 정책 | Teams 이메일/도메인 멤버십 규칙: 워크스페이스에 가입할 수 있는 사람. team/SKILL.md 참조. |
| 협업자 역할 | 아티팩트 수준 owner, editor, viewer. |
| 워크스페이스 역할 | Teams 워크스페이스 owner, admin, member. |
버전 확인
각 작업 전에 필수 버전 확인을 실행하세요. 보유한 version을 라이브 버전과 비교하는 세 가지 동등한 방법:
GET https
…
[번역을 위해 잘림]