Brainiall NLP
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Crawler Summary
Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant. --- name: paywall-ab description: "Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant." user-invocable: true --- paywall-ab — Paywa Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 4/15/2026.
Freshness
Last checked 4/15/2026
Best For
paywall-ab is best for general automation workflows where MCP and OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant. --- name: paywall-ab description: "Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant." user-invocable: true --- paywall-ab — Paywa
Public facts
5
Change events
1
Artifacts
0
Freshness
Apr 15, 2026
Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
MCP, OpenClaw
Freshness
Apr 15, 2026
Vendor
Daisuke134
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 4/15/2026.
Setup snapshot
git clone https://github.com/Daisuke134/paywall-ab-skill.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Daisuke134
Protocol compatibility
MCP, OpenClaw
Adoption signal
1 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
text
~/.openclaw/workspace/paywall-ab/apps.json
json
{
"apps": {
"your_app": {
"rc_project_id": "YOUR_RC_PROJECT_ID",
"mixpanel_project_id": YOUR_MIXPANEL_PROJECT_ID,
"default_offering_id": "YOUR_DEFAULT_OFFERING_ID",
"monthly_product_id": "YOUR_MONTHLY_PRODUCT_ID",
"slack_channel": "YOUR_SLACK_CHANNEL_ID",
"active_experiment": {
"experiment_id": "YOUR_EXPERIMENT_ID",
"variant_a_offering_id": "YOUR_DEFAULT_OFFERING_ID",
"variant_b_offering_id": "YOUR_VARIANT_B_OFFERING_ID",
"start_date": "2026-03-03"
}
}
}
}text
Run paywall-ab skill in check_in mode. app_id: your_app apps_config: ~/.openclaw/workspace/paywall-ab/apps.json
text
mcp__revenuecat__mcp_RC_create_offering:
project_id: "YOUR_RC_PROJECT_ID"
lookup_key: "your_app_variant_{YYYYMMDD}"
display_name: "Anicca Variant {date}"text
mcp__revenuecat__mcp_RC_create_package:
project_id: "YOUR_RC_PROJECT_ID"
offering_id: "<Step1のoffering_id>"
lookup_key: "$rc_monthly"
display_name: "Monthly Plan"
mcp__revenuecat__mcp_RC_attach_products_to_package:
project_id: "YOUR_RC_PROJECT_ID"
package_id: "<package_id>"
products: [{ product_id: "YOUR_MONTHLY_PRODUCT_ID", eligibility_criteria: "all" }]text
mcp__revenuecat__mcp_RC_create_design_system_paywall_generation_job:
project_id: "YOUR_RC_PROJECT_ID"
offering_id: "<Step1のoffering_id>"
design_system: <Anicca デザインシステム JSON(下記参照)>
→ HTTP 202: { id: "pwj...", status: "queued" }Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant. --- name: paywall-ab description: "Anicca Paywall A/B テスト自動クローズドループ。RevenueCat Experiments を使い、Paywall コピーを継続改善する。新規実験セットアップ(Offering作成→Experiment作成→Cron登録)と3日ごと人間確認ループ(チェックイン送信→ユーザー返信待ち→勝者分析→新バリアント生成→Slack承認→RC新実験作成)の両方を担う。Use when: paywall a/b test, paywall experiment, CVR改善, paywall コピー, RevenueCat experiment, paywall-ab, paywall loop, check_in, analyze, create_variant." user-invocable: true --- paywall-ab — Paywa
RevenueCat Experiments を使った Paywall コピーの自動 A/B テストループ。 エージェントがこのスキルを読めば、セットアップから3日ごとの人間確認ループまで全て実行できる。
| モード | トリガー | やること |
|--------|---------|---------|
| setup | 「paywall A/B テストを開始して」 | Offering作成 → AI Paywall生成 → ユーザーにexperiment作成依頼 → experiment_id受取 → Cron登録 → Slack通知 |
| check_in | cron: 実験開始から3日ごと 7:00 JST / 「check_in」 | RC MCP で実験情報取得 → Day N メッセージを Slack に送信 → ユーザー返信を待つ |
| analyze | ユーザーが「A勝ち」or「B勝ち」と返信 | 勝者/敗者の Offering テキスト取得 → LLM 分析(なぜ勝ったか)→ 新コピー3パターン生成 → Slack 送信 |
| create_variant | ユーザーが「はい」or「1」「2」「3」で選択 | Pencil MCP でテキスト差替え → RC 新 Offering 作成 → Slack 承認ゲート → RC 新 Experiment 作成依頼 |
このスキルは複数アプリに対応する。アプリ設定は Mac Mini の apps.json で管理。
~/.openclaw/workspace/paywall-ab/apps.json
{
"apps": {
"your_app": {
"rc_project_id": "YOUR_RC_PROJECT_ID",
"mixpanel_project_id": YOUR_MIXPANEL_PROJECT_ID,
"default_offering_id": "YOUR_DEFAULT_OFFERING_ID",
"monthly_product_id": "YOUR_MONTHLY_PRODUCT_ID",
"slack_channel": "YOUR_SLACK_CHANNEL_ID",
"active_experiment": {
"experiment_id": "YOUR_EXPERIMENT_ID",
"variant_a_offering_id": "YOUR_DEFAULT_OFFERING_ID",
"variant_b_offering_id": "YOUR_VARIANT_B_OFFERING_ID",
"start_date": "2026-03-03"
}
}
}
}
新アプリ追加時: apps.json にエントリを追加 → cronメッセージに app_id: "new_app" を追加するだけ。
Run paywall-ab skill in check_in mode.
app_id: your_app
apps_config: ~/.openclaw/workspace/paywall-ab/apps.json
| 項目 | 確認方法 |
|------|---------|
| apps.json 作成済み | ~/.openclaw/workspace/paywall-ab/apps.json が存在するか |
| RC Offering 作成済み | RC Dashboard → Offerings で確認 |
| RC Experiment 作成済み | RC Dashboard → Experiments → Start 済みか |
| cron 登録済み | ~/.openclaw/cron/jobs.json に paywall-ab エントリがあるか |
| RC Dashboard | https://app.revenuecat.com/projects/YOUR_RC_PROJECT_ID/experiments |
⚠️ セットアップ後: RC Dashboardで実験を作成してexperiment_idを確認 → apps.json の active_experiment.experiment_id を更新
| Key | 必須 | 値の場所 |
|-----|------|---------|
| REVENUECAT_V2_SECRET_KEY | ✅ | ~/.openclaw/.env |
| OPENAI_API_KEY | ✅ | ~/.openclaw/.env |
| SLACK_BOT_TOKEN | ✅ | ~/.openclaw/.env |
| SLACK_APP_TOKEN | ✅ | ~/.openclaw/.env(Socket Mode用) |
| SLACK_METRICS_CHANNEL | ✅ | ~/.openclaw/.env(Slack Channel ID) |
| SLACK_APPROVER_USER_IDS | ✅ | ~/.openclaw/.env(承認ボタンを押せるユーザーIDのカンマ区切り) |
注意: rc_project_id は apps.json で管理(環境変数不要)。
Paywall コピーに嘘を書くことは罪。存在しない機能を訴求してはいけない。
| ファイル | 確認する内容 |
|---------|------------|
| aniccaios/aniccaios/Services/FreePlanService.swift | Free の制限(本数・時刻) |
| aniccaios/aniccaios/Services/LLMNudgeService.swift | Pro の AI 機能の実体 |
| aniccaios/aniccaios/Services/NudgeStatsManager.swift | フィードバック学習の実体 |
| aniccaios/aniccaios/Models/SubscriptionInfo.swift | Free/Pro の差分定義 |
| 機能 | Free | Pro | |------|------|-----| | Nudgeタイプ | ルールベース(事前定義文章) | AI生成(LLMNudgeService) | | 1日の本数 | 3本固定(8:00/12:30/20:00) | サーバー制御・高クォータ | | タイミング | 固定時刻3回 | プロアクティブ配信(その瞬間に必要な時) | | パーソナライズ | 苦しみカテゴリでローテーション | その人の具体的な悩みに特化したAI生成 | | フィードバック学習 | なし | 👍/👎で次のNudgeが改善される |
| 禁止コピー | 理由 | |----------|------| | "30-day insight reports" | コードに存在しない | | "Progress growth graph" | コードに存在しない | | "Nudge frequency & timing customization" | ユーザーが手動設定できる機能はない | | "Streaks / goal completion rate" | 実装されていない | | "Get full access to all features" | 意味がない | | "Early releases" / "Premium support" | アプリが提供していない |
| 訴求軸 | 具体的コピー例 | |--------|-------------| | AI生成の深さ | "AI-written nudges, crafted for your exact struggle" | | フィードバック学習 | "Gets smarter with every reaction you give" | | プロアクティブ配信 | "Reaches you at the moment you need it most" | | 仏教の智慧 | "Rooted in centuries of Buddhist wisdom" | | パーソナライズ | "Knows your specific pain — not generic advice" |
現行 default Offering: YOUR_DEFAULT_OFFERING_ID (anicca) ← Variant A に使う
月額 product ID: YOUR_MONTHLY_PRODUCT_ID (com.yourapp.monthly、7日トライアル付き)
mcp__revenuecat__mcp_RC_create_offering:
project_id: "YOUR_RC_PROJECT_ID"
lookup_key: "your_app_variant_{YYYYMMDD}"
display_name: "Anicca Variant {date}"
mcp__revenuecat__mcp_RC_create_package:
project_id: "YOUR_RC_PROJECT_ID"
offering_id: "<Step1のoffering_id>"
lookup_key: "$rc_monthly"
display_name: "Monthly Plan"
mcp__revenuecat__mcp_RC_attach_products_to_package:
project_id: "YOUR_RC_PROJECT_ID"
package_id: "<package_id>"
products: [{ product_id: "YOUR_MONTHLY_PRODUCT_ID", eligibility_criteria: "all" }]
mcp__revenuecat__mcp_RC_create_design_system_paywall_generation_job:
project_id: "YOUR_RC_PROJECT_ID"
offering_id: "<Step1のoffering_id>"
design_system: <Anicca デザインシステム JSON(下記参照)>
→ HTTP 202: { id: "pwj...", status: "queued" }
⚠️ 409エラーが出た場合 → そのOfferingに既にpaywallが存在する。新しいOfferingを作成すること。
60秒待機後に確認:
GET https://api.revenuecat.com/v2/projects/YOUR_RC_PROJECT_ID/paywalls
→ offering_id が一致するエントリが出たら完了。paywall_id を記録する。
RC API v2 に Experiment 作成エンドポイントは存在しない(確認済み: 404 resource_missing)。Dashboard のみ。
エージェントは Slack #metrics に以下を投稿して ユーザーの操作を待つ:
🔧 Paywall A/B テスト準備完了
新しい Paywall が RC に生成されました。
以下の手順で Experiment を作成して、experiment_id をエージェントに教えてください。
1. https://app.revenuecat.com/projects/YOUR_PROJECT_SHORT_ID/experiments → New Experiment
2. Variant A: YOUR_DEFAULT_OFFERING_ID (anicca — 現行 default)
3. Variant B: {new_offering_id} ({lookup_key})
4. Traffic split: 50/50 → Start
5. URL に表示される experiment_id (prexpXXXXXXXX) を Claude Code に送ってください
Paywall プレビュー:
https://app.revenuecat.com/projects/YOUR_RC_PROJECT_ID/paywalls/{paywall_id}
ユーザーから prexpXXXXXXXX を受け取ったら即座に実行:
# SSH: ssh YOUR_AGENT_USER@YOUR_MAC_MINI_IP
# ⚠️ ファイル全体上書き禁止。python3 で部分追加のみ。
python3 -c "
import json
with open(__import__('pathlib').Path('~/.openclaw/cron/jobs.json').expanduser(), 'r') as f:
data = json.load(f)
# 既存チェック(重複防止)
if any(j['id'] == 'paywall-ab' for j in data['jobs']):
print('ALREADY EXISTS — skip')
exit(0)
data['jobs'].append({
'id': 'paywall-ab',
'agentId': 'anicca',
'jobId': 'paywall-ab',
'name': 'paywall-ab',
'schedule': {'kind': 'cron', 'expr': '0 7 */3 * *', 'tz': 'Asia/Tokyo'},
'sessionTarget': 'isolated',
'wakeMode': 'now',
'payload': {
'kind': 'agentTurn',
'message': 'Run paywall-ab skill in check_in mode. app_id: your_app. apps_config: ~/.openclaw/workspace/paywall-ab/apps.json'
},
'delivery': {'mode': 'none'},
'enabled': True,
'state': {}
})
with open(__import__('pathlib').Path('~/.openclaw/cron/jobs.json').expanduser(), 'w') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print('DONE')
"
📊 Paywall A/B テスト開始 🚀
実験ID: {experiment_id}
開始日: {today}
Variant A (現行): YOUR_DEFAULT_OFFERING_ID (anicca)
Variant B (新AI生成): {new_offering_id}
Traffic split: 50/50
📅 初回チェック: {3日後} 7:00 JST
3日ごと 7:00 JST にチェックインします。
1. apps.json を読む → active_experiment の experiment_id, start_date を取得
2. 経過日数を計算: day_n = (today - start_date).days
3. mcp__revenuecat__mcp_RC_list_offerings で Variant A / B の詳細を取得
→ 各 Offering の display_name を取得
⚠️ RC Experiments API は conversion data を返さない(404)。CVR はユーザーが RC Dashboard で確認する。
⚠️ cron 0 7 */3 * * は「月内の日付が3の倍数の日」に実行される(開始日起点ではない)。
このため、check_in 実行時に必ず以下のガードチェックを行う:
from pathlib import Path
import json, datetime
apps = json.loads(Path('~/.openclaw/workspace/paywall-ab/apps.json').expanduser().read_text())
start_date = datetime.date.fromisoformat(apps['apps'][app_id]['active_experiment']['start_date'])
days_elapsed = (datetime.date.today() - start_date).days
if days_elapsed < 3 or days_elapsed % 3 != 0:
# まだ3日経過していない or 実行タイミングがズレている → スキップ
print(f'SKIP: only {days_elapsed} days elapsed since start')
exit(0)
以下のテンプレートで Slack に投稿する:
📊 Paywall 実験 Day {N}
実験ID: {experiment_id}
━━━━━━━━━━━━━━━━━━━━
Variant A(現行): {offering_a_name}
タイトル: {title_a}
CTA: {cta_a}
Variant B(テスト中): {offering_b_name}
タイトル: {title_b}
CTA: {cta_b}
━━━━━━━━━━━━━━━━━━━━
📌 RC Dashboard で CVR を確認してください:
https://app.revenuecat.com/projects/YOUR_RC_PROJECT_ID/experiments/{experiment_id}
結果を教えてください:
• 「A勝ち」
• 「B勝ち」
• 「まだ早い」(3日後にまた確認)
⚠️ メッセージ送信後は返信を待つ(reactive モード)。急かさない。タイムアウトなし。
| 返信内容 | アクション |
|---------|-----------|
| 「まだ早い」 | 何もしない。次の cron(3日後)で同じメッセージを送る |
| 「A勝ち」 | → analyze モードを winner="A" で実行 |
| 「B勝ち」 | → analyze モードを winner="B" で実行 |
入力: winner = "A" or "B"
mcp__revenuecat__mcp_RC_list_offerings(project_id: "YOUR_RC_PROJECT_ID")
→ Variant A と B の Offering ID に対応する paywall_id を取得
mcp__revenuecat__mcp_RC_get_app_store_config(project_id: "YOUR_RC_PROJECT_ID")
または offering の paywall からテキストを取得
→ 勝者のタイトル・bullets・CTA
→ 敗者のタイトル・bullets・CTA
以下のプロンプトで分析を実行する:
あなたは Paywall コピーアナリストです。
## 実験結果
勝者 ({winner}): {winner_offering_name}
タイトル: {winner_title}
bullets: {winner_bullets}
CTA: {winner_cta}
敗者: {loser_offering_name}
タイトル: {loser_title}
bullets: {loser_bullets}
CTA: {loser_cta}
## ユーザーペルソナ
25〜35歳、6〜7年同じ悪習慣が抜けられない、習慣アプリ10個全部3日で諦めた。
自己信頼ゼロ。「どうせ無理」が前提。
## 分析してください(3点)
1. なぜ勝者のコピーが響いたのか(具体的な言語的要因)
2. 敗者のどの要素が弱かったか
3. 次のバリアントで改善すべき1点
以下のプロンプトで生成する:
あなたは Paywall コピーライターです。
## アプリ
Anicca(習慣化・行動変容、7日間無料トライアル → $9.99/月)
## 絶対ルール
❌ 訴求禁止(コードに存在しない):
- "30-day insight reports", "growth graph", "streaks", "frequency customization"
- "nudge", "reminder", "notification", "daily reminders"
✅ 訴求すべき実機能:
- AI生成: その人の悩みに特化したAI生成(Free はルールベース)
- 適応学習: 👍/👎で次が改善される
- プロアクティブ: 固定時刻ではなくサーバー起点
- 仏教の智慧: 何世紀にもわたる仏教の智慧
## 今回の分析
勝者の有効要因: {analysis_key_point}
次の改善点: {improvement_point}
## 3パターンを生成してください
それぞれ異なる訴求軸で。勝者の良い要素を保持しつつ、改善点を適用する。
フォーマット: タイトル(5語以内) + bullets×3(各20文字以内) + CTA固定
出力:
[
{ "pattern": 1, "axis": "訴求軸の説明", "title": "...", "bullets": ["...", "...", "..."], "cta": "Try Free For 1 Week" },
{ "pattern": 2, "axis": "訴求軸の説明", "title": "...", "bullets": ["...", "...", "..."], "cta": "Try Free For 1 Week" },
{ "pattern": 3, "axis": "訴求軸の説明", "title": "...", "bullets": ["...", "...", "..."], "cta": "Try Free For 1 Week" }
]
禁止ワード(含まれていたら再生成): insight, graph, streak, nudge, reminder, notification, daily, frequency, customize
🏆 勝者分析完了
勝者: Variant {winner} ({winner_offering_name})
━━━━━━━━━━━━━━━━━━━━
📊 なぜ勝ったか:
{analysis_point_1}
{analysis_point_2}
{analysis_point_3}
━━━━━━━━━━━━━━━━━━━━
📝 次のバリアント候補(3パターン):
【パターン 1】訴求軸: {axis_1}
タイトル: "{title_1}"
• {bullet_1_1}
• {bullet_1_2}
• {bullet_1_3}
【パターン 2】訴求軸: {axis_2}
タイトル: "{title_2}"
• {bullet_2_1}
• {bullet_2_2}
• {bullet_2_3}
【パターン 3】訴求軸: {axis_3}
タイトル: "{title_3}"
• {bullet_3_1}
• {bullet_3_2}
• {bullet_3_3}
━━━━━━━━━━━━━━━━━━━━
どのパターンで新しい実験を始めますか?
「1」「2」「3」で教えてください(「なし」で保留)
⚠️ 返信を待つ。急かさない。タイムアウトなし。
| 返信 | アクション |
|------|-----------|
| 「1」「2」「3」 | → create_variant モードを pattern=N で実行 |
| 「なし」「保留」 | 何もしない。終了 |
ビジュアル(色・アイコン・レイアウト)は変えない。テキストのみ差し替え。
入力: pattern = 1 or 2 or 3(ユーザーが選んだパターン)
選択されたコピー: { title, bullets, cta }
1. mcp__pencil__open_document で既存ペイウォールを開く
対象: Anicca ペイウォールの .pen ファイル
パス: ~/.openclaw/workspace/paywall-ab/paywall.pen(存在しない場合は作成不要 → Step 2へ)
2. mcp__pencil__batch_get でテキストノードを取得
3. mcp__pencil__batch_design でタイトル・bullets・CTA のみ差し替え
- U("title_node_id", { text: new_title })
- U("bullet_1_id", { text: new_bullet_1 })
- 等
4. mcp__pencil__get_screenshot でプレビュー確認
⚠️ Pencil の .pen ファイルが存在しない場合は RC AI 自動生成(MODE 1 Step 3)を使用する。
MODE 1 の Step 1〜3 を実行する:
your_app_variant_{YYYYMMDD})~/.openclaw/skills/slack-approval/SKILL.md 参照)⚠️ タイムアウトなし。ユーザーが押すまで永久に待機する。急かさない。
→ ~/.openclaw/skills/slack-approval/SKILL.md を読んで requestApproval() を実行する
const result = await requestApproval({
channel: 'YOUR_SLACK_CHANNEL_ID',
title: '📝 新 Paywall バリアント確認',
detail: `パターン${pattern}(訴求軸: ${axis})\n\nタイトル: ${title}\nbullets:\n • ${bullets[0]}\n • ${bullets[1]}\n • ${bullets[2]}\nCTA: ${cta}\n\nこの内容で新 Offering を作成し、実験を開始しますか?`
});
| 返答 | アクション |
|------|-----------|
| approved | → Step 4(Dais に Experiment 作成依頼)へ |
| denied | → analyze モードの Step 3(コピー再生成)に戻る(最大3回) |
RC API v2 に Experiment 作成エンドポイントは存在しない。Dashboard のみ。
Slack #metrics に投稿して ユーザーの操作を待つ:
🔧 新 Paywall バリアント準備完了
パターン{N}のペイウォールが RC に生成されました。
以下の手順で新しい Experiment を作成して、experiment_id をエージェントに教えてください。
1. https://app.revenuecat.com/projects/YOUR_PROJECT_SHORT_ID/experiments → New Experiment
2. Variant A: {前回の勝者 offering_id}(昇格済み default)
3. Variant B: {new_offering_id} ({lookup_key})
4. Traffic split: 50/50 → Start
5. URL に表示される experiment_id (prexpXXXXXXXX) を Claude Code に送ってください
Paywall プレビュー:
https://app.revenuecat.com/projects/YOUR_RC_PROJECT_ID/paywalls/{paywall_id}
ユーザーから prexpXXXXXXXX を受け取ったら即座に実行:
# SSH: ssh YOUR_AGENT_USER@YOUR_MAC_MINI_IP
# apps.json の active_experiment を更新(部分更新のみ)
python3 -c "
import json, datetime
with open(__import__('pathlib').Path('~/.openclaw/workspace/paywall-ab/apps.json').expanduser(), 'r') as f:
data = json.load(f)
data['apps'][app_id]['active_experiment'] = { # app_id = cronメッセージで渡された値
'experiment_id': '{NEW_EXPERIMENT_ID}',
'variant_a_offering_id': '{WINNER_OFFERING_ID}',
'variant_b_offering_id': '{NEW_OFFERING_ID}',
'start_date': datetime.date.today().isoformat()
}
with open(__import__('pathlib').Path('~/.openclaw/workspace/paywall-ab/apps.json').expanduser(), 'w') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print('DONE')
"
⚠️ cron 0 7 */3 * * は開始日起点の厳密3日間隔ではないため、check_in 実行時に Step 1 のガードチェックで差分を確認する。
🚀 新 Paywall 実験開始!
実験ID: {new_experiment_id}
開始日: {today}
Variant A (昇格): {winner_offering_name}(前回の勝者)
Variant B (新パターン{N}): {new_offering_name}
Traffic split: 50/50
訴求軸: {axis}
タイトル: "{new_title}"
• {bullet_1}
• {bullet_2}
• {bullet_3}
📅 次の check_in: {3日後} 7:00 JST
{
"app_context": {
"app_name": "Anicca",
"category": "Health & Fitness / Lifestyle",
"one_line_description": "AI-powered nudges rooted in Buddhist wisdom to help you change your behavior."
},
"brand_identity": {
"brand_mission": "Reduce suffering through Buddhist wisdom.",
"brand_personality_archetype": "Sage — wise, calm, compassionate",
"core_values": ["compassion", "impermanence", "wisdom", "presence"]
},
"target_audience": {
"primary_user_persona": "25–35yo who has struggled with the same bad habit for 6–7 years. Tried 10+ habit apps, all failed.",
"user_pain_points": [
"Same struggle for years — can't wake up, stay up scrolling, no willpower",
"Every habit app failed within 3 days",
"Deeply low self-trust: 'I know I won't stick to it'"
],
"user_needs_and_goals": [
"Someone who understands their specific pain — not generic motivation",
"Guidance that finds them, not something they have to remember to open",
"Words that feel like they were written for their exact situation"
]
},
"problem_solution_fit": {
"problem_statement": "Generic apps give the same advice to everyone. Users feel unseen and give up.",
"solution_statement": "Anicca Pro uses AI to craft nudges for your exact struggle, learns from your reactions, and reaches you proactively at the right moment.",
"unique_selling_propositions": [
"AI writes each nudge for YOUR specific struggle — not copy-pasted advice",
"Gets smarter with every 👍/👎 you give — adapts to what actually helps you",
"Reaches you proactively when you need it most — not on a fixed schedule",
"Grounded in centuries of Buddhist wisdom on suffering and change"
]
},
"visual_language": {
"color_palette": {
"primary_brand_color": "#C9B382",
"secondary_brand_color": "#2C2A28",
"accent_cta_color": "#C9B382",
"background_colors": ["#F5F3ED", "#EDE9E0"],
"palette_mood": "warm sand, zen rock garden, morning light"
},
"typography": {
"headline_font_family": "SF Pro Display",
"body_font_family": "SF Pro Text"
},
"illustration_and_imagery_style": {
"primary_style": "zen minimalism — stacked river stones, ripple rings in sand"
}
},
"tone_of_voice": {
"primary_tone": "calm and wise",
"secondary_tone": "warm and deeply personal",
"communication_style_summary": "Speak like a wise, compassionate friend who understands suffering without judgment"
},
"content_strategy": {
"premium_feature_highlights": [
"AI-written nudges, crafted for your exact struggle — not generic advice",
"Gets smarter every time you react — 👍/👎 shapes what you receive next",
"Reaches you at the moment you need it most — proactive, not scheduled",
"Rooted in centuries of Buddhist wisdom, personalized to your pain"
],
"free_vs_pro_honest_difference": "Free: 3 rule-based nudges/day at fixed times. Pro: AI-generated nudges tailored to your specific struggle, adaptive learning from your reactions, proactive server-triggered delivery."
},
"ui_patterns": {
"button_style": "full-width rounded pill, warm gold #C9B382, white bold text",
"overall_layout_philosophy": "breathing room — generous padding, single focal point, no clutter"
}
}
| バージョン | Offering ID | Paywall ID | 備考 |
|-----------|------------|-----------|------|
| v1 (2026-02-24) | YOUR_VARIANT_OFFERING_ID_V1 | YOUR_PAYWALL_ID_V1 | ❌ 嘘コピー含む(廃棄) |
| v2 (2026-02-24) | YOUR_VARIANT_B_OFFERING_ID | YOUR_PAYWALL_ID_V2 | ✅ 実機能のみ(現行 Variant B) |
| 項目 | 値 |
|------|-----|
| Project ID | YOUR_RC_PROJECT_ID |
| API Base | https://api.revenuecat.com/v2 |
| MCP ツール | mcp__revenuecat__mcp_RC_* |
| RC Dashboard | https://app.revenuecat.com/projects/YOUR_PROJECT_SHORT_ID/ |
| エラー | 対応 | |--------|------| | RC Paywall 409 (already exists) | 新しい Offering を作成する。既存 paywall の上書き不可。 | | RC Experiment 404 (resource_missing) | RC API は Experiment 作成不可。Dashboard 操作のみ。Dais に依頼。 | | LLM が禁止ワード含むコピー生成 | 禁止ワードチェック → 再生成(最大3回) | | Mixpanel セグメント取得失敗 | ユーザーに RC Dashboard の確認を促す | | Pencil .pen ファイルが存在しない | RC AI 自動生成(MODE 1 Step 3)を代替で使用 | | slack-approval が応答なし | タイムアウトなし。待つ。急かさない。 | | 3サイクル以上有意差出ない | 別切り口の新実験を Slack で Dais に提案 |
YOUR_PAYWALL_ID_V2) 再生成Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/contract"
curl -s "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Agent-callable B2B SaaS directory: capability-structured, continuously verified listings.
Loan & mortgage calculator, compound interest, ROI, crypto prices, FX conversion for AI agents.
Structured website and review evidence for AI-assisted local-business shortlisting.
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP",
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-10-09T22:24:30.762Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
}
],
"flattenedTokens": "protocol:MCP|unknown|profile protocol:OPENCLEW|unknown|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Daisuke134",
"href": "https://github.com/Daisuke134/paywall-ab-skill",
"sourceUrl": "https://github.com/Daisuke134/paywall-ab-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:18:43.016Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP, OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:18:43.016Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1 GitHub stars",
"href": "https://github.com/Daisuke134/paywall-ab-skill",
"sourceUrl": "https://github.com/Daisuke134/paywall-ab-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:18:43.016Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/daisuke134-paywall-ab-skill/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to paywall-ab and adjacent AI workflows.