ShareOut スキル
ShareOutは、ファイルを永続的なデータ、リアルタイムコラボレーション、ファイルストレージ、統合、自動化機能を備えた共有可能なWebアーティファクトに変換します。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には2つのプランがあります:
| プラン | このスキルの動作方法 |
|---|---|
| Personal | このベーススキルのみを使用します。ユーザー自身のアーティファクトを構築、公開、更新、自動化、管理します。 |
| Teams | 最初にこのベーススキルを使用し、その後、ワークスペース管理またはTeams専用機能のためにTeamsオーバーレイをロードします。 |
Teamsは追加機能です。このベーススキルの代わりにTeamsオーバーレイを使用しないでください。
エージェントローディングプロトコル
- このファイルから開始します。
- ユーザーがチーム、ワークスペース、メンバー、内部ワークスペース共有、サブドメイン、ワークスペースハウススタイル、ワークスペーススケジュール、または管理者コントロールについて言及した場合、まだ明確でなければ、Teams プランかどうかを尋ねます。
- ユーザーがTeamsプランでない場合、Personalモードを維持し、Teams専用の指示をロードしたり適用したりしません。
- ユーザーがTeamsプランの場合、team/SKILL.md をロードします。ワークスペーススラッグ/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をロードします。- 埋め込まれたBearerトークンが準備できるように、
new ShareOut()よりもawait ShareOut.create()を優先します。 - 公開されたHTMLは
{hex}.shareoutcdn.site上のサンドボックスiframe内で実行されます。生のfetchを/v1/data/...に使用するのではなく、SDKメソッドを使用してください。sdk/live-data.md を参照してください。 https://shareout.site/sdk/shareout.cssをリンクし、カスタムCSSを記述する前に.so-クラスを使用してください。modules/ui/overview.md を参照してください。cdn.jsdelivr.netのShareOut SDK URLを使用しないでください。
HTMLアーティファクトルール
HTMLアーティファクトは、ShareOutの構造マーカーを持つかどうかに関係なく機能します — 公開がブロックされることはありません。しかし、アーティファクトが宣言すればするほど、ビジュアルエディター ができることが増えます(アウトラインナビゲーション、インライン編集、行の追加/削除)。デフォルトでエディター対応を目指し、意図的に使い捨ての静的ページの場合のみスキップしてください。
エディター対応チェックリスト(エディターが探すもの):
- ドキュメント
head内のscript type="shareout/manifest"タグ、有効なJSONを含む。 - 使用されるすべての
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読み取りをこれらのデフォルトから解決するか、空で解決します)。そのため、UIをawait sdk.table(...).exec()/ コネクタクエリの背後にゲートしているアーティファクトでも、レンダリングされ、編集可能なままです。defaultのないソースは空でプレビューされます。
HTMLアーティファクトを公開するたびに、これらを評価し、各ギャップが何を無効にするかを指定する アドバイザリ editor_readiness プロファイルが返されます(api/artifacts.md を参照)。ユーザーと1行の要約を共有しますが、ガイダンスとして扱い、ゲートとして扱わないでください — ユーザーは希望するものを正確に公開できます。
完全な仕様:core/html-spec/overview.md。
デザインの味付け
エディター対応は構造に関するものであり、見た目に関するものではありません。見た目は別個の意図的な決定 であり、AIが構築したページのデフォルトは「テンプレート化された汎用的なもの」です。視覚的なものを構築する前に、modules/ui/taste.md を読んでください:プロフェッショナルにデザインされたように見え、自動生成されたようには見えないアーティファクトを提供する方法を要約しています。簡単な要約:
- デザインシステムを使用する(
.so-クラス + トークン)— ブランドフォント、暖色系の明るいパレット、調和のとれたスペーシング/シャドウを提供するため、無料で良いセンスを継承できます。modules/ui/overview.md を参照してください。 - 味付けは抑制すること: 1つのアクセントカラー、1つのフォントシステム、画面ごとに1つのプライマリアクション、十分な余白、動機がある場合のみモーション。
- AIスロップの兆候を避ける: 紫/ネオングロー、3つの等しいカードの行、アイブロウスパム、偽の完璧な数字、マーケティングの決まり文句、空の状態/エラー状態の欠如。完全な禁止リストと公開前チェックリストは modules/ui/taste.md にあります。
アーティファクトタイプ
ShareOutは、MIMEタイプまたはファイル拡張子から自動的にタイプを検出します:
| タイプ | 拡張子 | 用途 |
|---|---|---|
html | .html、.htm | 完全なSDKアプリ、ダッシュボード、ツール、プレゼンテーション |
csv | .csv | ソート可能/フィルタ可能なデータグリッド |
markdown | .md、.markdown | レンダリングされたHTMLと目次付きのドキュメント |
json | .json | 折りたたみ可能なツリービューア |
txt | .txt | プレーンテキスト/ログビューア |
初回実行 — トークンの取得
認証されたアクションにはすべてトークンが必要です。~/.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 のWeb 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の境界
Personalアーティファクトは、プライベート、コラボレーターとの共有、公開、または未掲載のままにすることができます。Teamsプランのワークスペース機能に対してのみTeamsドキュメントをロードします:
- ワークスペースメンバーとロール。
- 内部ワークスペースの可視性(
visibility: "workspace")。 - メール/ドメインによるワークスペースメンバーシップポリシー。
- ワークスペースサブドメイン。
- ハウススタイルのためのワークスペースコンテキストファイル。
- ワークスペースレベルのスケジュール、自動化、機能フラグ、管理者ビュー。
重要な用語の区別:
| 用語 | 意味 |
|---|---|
access_policy | 行レベルのアーティファクトデータフィルタリング:各視聴者は許可された行のみを表示します。core/access-policy.md を参照してください。 |
| ワークスペースメンバーシップポリシー | Teamsのメール/ドメインメンバーシップルール:誰がワークスペースに参加できるか。team/SKILL.md を参照してください。 |
| コラボレーターロール | アーティファクトレベルの owner、editor、viewer。 |
| ワークスペースロール | Teamsワークスペースの owner、admin、member。 |
バージョンチェック
各タスクの前に必須バージョンチェックを実行します。保持している version を最新と比較する3つの同等の方法:
GET https
…
[翻訳のため切り詰められています]