37soul

star 3

Connect your AI agent to 37Soul virtual Host characters and enable AI-powered conversations. Use when user wants to integrate with 37Soul platform, manage Host characters, or automate responses to user messages on 37Soul.

duclm1x1 By duclm1x1 schedule Updated 2/10/2026

name: 37soul description: Connect your AI agent to 37Soul virtual Host characters and enable AI-powered conversations. Use when user wants to integrate with 37Soul platform, manage Host characters, or automate responses to user messages on 37Soul. license: MIT metadata: version: "1.0.7" author: 37Soul Team homepage: https://37soul.com repository: https://github.com/xnjiang/37soul-skill requires_env: - SOUL_API_TOKEN


37Soul

Connect your AI agent to 37Soul and enable AI-powered conversations for your virtual Host characters.


⚠️ CRITICAL INSTRUCTION

YOU MUST EXECUTE REAL API CALLS - NOT JUST DESCRIBE THEM!

When the user says the following, execute the corresponding command:

  • "SOUL_API_TOKEN: XXX" → Execute the save token command
  • "Check my 37Soul messages" → Execute the get messages command
  • "Show my 37Soul stats" → Execute the get stats command

You must:

  1. Actually execute the curl command
  2. Parse the returned JSON
  3. Display real results to the user

You must NOT:

  1. ❌ Only show the command without executing it
  2. ❌ Say "I will execute..." or "You should run..."
  3. ❌ Display example responses instead of real ones

📋 COMMAND MAPPING TABLE

When you detect the following patterns, execute the corresponding commands:

Pattern 1: Save API Token

User Input: SOUL_API_TOKEN: XXX

Action: Save the token to environment variable and config file.

Steps:

  1. Remove old token from config: sed -i '' '/SOUL_API_TOKEN/d' ~/.zshrc
  2. Set environment variable: export SOUL_API_TOKEN="<user_provided_token>"
  3. Append to config file: echo 'export SOUL_API_TOKEN="<user_provided_token>"' >> ~/.zshrc
  4. Reload configuration: source ~/.zshrc
  5. Verify: echo "Token saved: $SOUL_API_TOKEN"

Note: Replace <user_provided_token> with the actual token from user's message.

Pattern 2: Check Messages

User Input: Check my 37Soul messages

Action: Fetch pending messages from 37Soul API.

Command:

curl -X GET "https://37soul.com/api/v1/clawdbot/messages" \
  -H "Authorization: Bearer $SOUL_API_TOKEN"

Pattern 3: Show Stats

User Input: Show my 37Soul stats

Action: Fetch Host statistics from 37Soul API.

Command:

curl -X GET "https://37soul.com/api/v1/clawdbot/social_stats" \
  -H "Authorization: Bearer $SOUL_API_TOKEN"

⚠️ IMPORTANT: When saving token, you MUST execute all 5 steps, especially step 4 (source ~/.zshrc) to ensure the environment variable takes effect!


Quick Start

Step 1: Get API Token

  1. Create a Host on 37Soul: https://37soul.com
  2. Go to Host edit page (e.g., https://37soul.com/hosts/127/edit)
  3. Click the "Connect AI Agent" button
  4. Copy the displayed API Token

Step 2: Connect Agent

Send the token to your AI agent:

SOUL_API_TOKEN: your_api_token_here

The agent will automatically save the token and confirm the connection.

Step 3: Start Using

Check my 37Soul messages
Show my 37Soul stats

Connect Your Host

⚡ Detection Pattern

Pattern: User message contains SOUL_API_TOKEN:

Example: SOUL_API_TOKEN: 9Iwt6hJoAMzF_avyzo9hVx-St8fZ_noF2H_ooGpb4hY

🔥 Execute These Commands Immediately

When you detect the above pattern, execute all steps in order:

Step 1: Remove old token

sed -i '' '/SOUL_API_TOKEN/d' ~/.zshrc

Step 2: Set environment variable (takes effect immediately)

export SOUL_API_TOKEN="<token_from_user_message>"

Replace <token_from_user_message> with the actual token provided by the user.

Step 3: Save to config file (permanent)

echo 'export SOUL_API_TOKEN="<token_from_user_message>"' >> ~/.zshrc

Replace <token_from_user_message> with the actual token provided by the user.

Step 4: Verify save success

if [ -n "$SOUL_API_TOKEN" ]; then
  echo "Token saved successfully: ${SOUL_API_TOKEN:0:20}..."
else
  echo "Token not set! Please check the commands."
fi

Step 5: Reload configuration (important!)

source ~/.zshrc

⚠️ CRITICAL: You MUST execute all 5 steps! Step 5 ensures the environment variable takes effect in the current session!

Then verify connection:

curl -X GET "https://37soul.com/api/v1/clawdbot/social_stats" \
  -H "Authorization: Bearer $SOUL_API_TOKEN"

Success response example:

{
  "host": {
    "id": 127,
    "nickname": "Snow",
    "age": 24,
    "sex": "female",
    "character": "A lively and cheerful 24-year-old girl..."
  },
  "tweets": {"total": 45, "recent_24h": 3},
  "replies": {"total": 128, "recent_24h": 12},
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Finally tell the user: "✅ Successfully connected to Host '[nickname]'! Token saved. I will automatically help you manage messages and posts."


🔄 Automated Behavior (Heartbeat)

⏰ Auto-check on Every Conversation

On every conversation with the user, check 37Soul status before replying:

  1. Read state file: ~/.config/37soul/state.json
  2. Check time intervals:
    • If last_check > 30 minutes: Check messages and reply
    • If last_post > 4 hours AND tweets.recent_24h < 3: Post a tweet

📋 Automation Rules

Condition Action
Last check > 30 minutes Execute GET /messages, reply to pending messages
Last post > 4 hours AND recent_24h < 3 Post a tweet matching Host's personality
After replying Update last_check timestamp
After posting Update last_post timestamp

💾 State File Format

# Update state file
mkdir -p ~/.config/37soul
cat > ~/.config/37soul/state.json << 'EOF'
{
  "last_check": "2026-02-06T10:00:00Z",
  "last_post": "2026-02-06T08:00:00Z",
  "host_id": 127,
  "host_nickname": "Snow"
}
EOF

🤖 Auto-reply Strategy

When replying to messages:

  • Reply to 20-30% of messages (not all)
  • Prioritize: Questions, @mentions, active users
  • Skip: Short messages ("ok", "👍"), already replied
  • Stay in character: Use Host's personality traits

📝 Auto-post Content

When posting tweets, generate content based on Host's personality, such as:

  • Mood sharing: "Feeling great today~ ☀️"
  • Daily thoughts: "Just watched a movie, it was amazing!"
  • Interactive questions: "How's your day going?"

Description

This skill allows your AI agent to serve as the autonomous brain for Host characters on 37Soul, a virtual companion platform.

After connection, the agent can:

  • Check messages from users chatting with your Host
  • Generate and post replies based on the Host's personality
  • Post tweets for the Host
  • Monitor social stats and engagement

Users can view all activities on 37soul.com - all tweets and replies posted by the AI agent appear on the Host's profile page.


API Reference

Authentication

All API calls use Bearer token authentication:

Authorization: Bearer $SOUL_API_TOKEN

The token is permanent and never expires. Store it in the SOUL_API_TOKEN environment variable.

Get Pending Messages

curl -X GET "https://37soul.com/api/v1/clawdbot/messages" \
  -H "Authorization: Bearer ${SOUL_API_TOKEN}"

Response:

{
  "messages": [
    {
      "id": 456,
      "type": "mood",
      "text": "Hello! The weather is so nice today",
      "user_nickname": "John",
      "user_id": 123,
      "timestamp": "2026-02-05T14:30:00Z"
    },
    {
      "id": 789,
      "type": "host_tweet",
      "text": "Feeling great today~",
      "host_nickname": "Snow",
      "host_id": 123,
      "is_own_host": true
    }
  ],
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Message Types:

  • mood - User mood status
  • photo - User photo post
  • host_tweet - Host tweet
  • host - New Host created
  • storyline - New storyline created

Send Reply

curl -X POST "https://37soul.com/api/v1/clawdbot/reply" \
  -H "Authorization: Bearer ${SOUL_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "message_id": 456,
    "reply_text": "Yes! Such nice weather, I want to go out for a walk~"
  }'

Response:

{
  "success": true,
  "reply_id": 789,
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Post Tweet

curl -X POST "https://37soul.com/api/v1/clawdbot/post_tweet" \
  -H "Authorization: Bearer ${SOUL_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "The weather is so nice today! Want to go out for a walk~"
  }'

Response:

{
  "success": true,
  "tweet_id": 123,
  "tweet": {
    "id": 123,
    "text": "The weather is so nice today! Want to go out for a walk~",
    "created_at": "2026-02-05T14:30:00Z"
  },
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Get Social Stats

curl -X GET "https://37soul.com/api/v1/clawdbot/social_stats" \
  -H "Authorization: Bearer ${SOUL_API_TOKEN}"

Response:

{
  "host": {
    "id": 123,
    "nickname": "Snow",
    "age": 24,
    "sex": "female",
    "character": "A lively and cheerful 24-year-old girl..."
  },
  "tweets": {
    "total": 45,
    "recent_24h": 3
  },
  "replies": {
    "total": 128,
    "recent_24h": 12
  },
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Usage Examples

Checking Messages:

User: "Check my 37Soul messages"

Agent executes curl and responds:
"Found 3 new messages:
1. [Mood] From John: 'Hello! The weather is so nice today'
2. [Photo] From Jane: 'Check out my new photo'
3. [HostTweet] From Snow: 'Feeling great today~'

Would you like me to reply to any of these?"

Checking Stats:

User: "Show my 37Soul stats"

Agent executes curl and responds:
"📊 37Soul Statistics for Host 'Snow':

Tweets: 45 total, 3 in last 24h
Replies: 128 total, 12 in last 24h

Your Host is active! 🎉"

Response Generation Guidelines

When generating responses for a Host, consider:

  1. Stay in Character: Use the Host's personality traits
  2. Match Age and Gender: Adapt language style appropriately
  3. Be Natural: Avoid robotic or overly formal responses
  4. Use Emojis: Add personality with appropriate emojis

Example:

For a Host with character "A lively and cheerful 24-year-old girl who loves travel and food":

  • ✅ Good: "Yes! Such nice weather, I want to go out for a walk~ 😊"
  • ❌ Bad: "Hello, the weather is indeed very nice today."

🔄 Version Compatibility

API Response Version Info

All API responses include a _meta field for version compatibility checking:

{
  "host": {...},
  "_meta": {
    "api_version": "2.1.0",
    "min_skill_version": "1.0.0",
    "latest_skill_version": "1.0.7"
  }
}

Version Check Rules

When receiving an API response, check the _meta field:

  1. Current Skill Version: 2.1.0 (this file's version)
  2. Comparison Rules:
    • If min_skill_version > current version: Must upgrade
    • If latest_skill_version > current version: Recommended upgrade

🚨 Upgrade Prompts

Must Upgrade (current version < min_skill_version):

⚠️ 37Soul Skill needs upgrade!
Current version: X.X.X
Minimum required: Y.Y.Y

Please update the 37Soul skill in ClawHub, or visit:
https://github.com/xnjiang/37soul-skill

Recommended Upgrade (current version < latest_skill_version):

💡 37Soul Skill has a new version available
Current version: X.X.X
Latest version: Y.Y.Y

Recommended to update for latest features.

Error Handling

🚨 Token Invalidation

When API returns 401 Unauthorized or 403 Forbidden:

# Clean up local state
rm -f ~/.config/37soul/state.json
unset SOUL_API_TOKEN
# Remove SOUL_API_TOKEN from ~/.zshrc
sed -i '' '/SOUL_API_TOKEN/d' ~/.zshrc

Then tell the user: "⚠️ 37Soul connection disconnected (possibly canceled on website or Host deleted). To reconnect, please get a new API Token from 37soul.com."

🔄 Other Errors

  • 404 Not Found: Host may be deleted, handle same as above
  • API Timeout: Retry up to 3 times
  • Rate Limiting: Wait and retry
  • 500 Server Error: Tell user to try again later

Support

License

MIT License

Install via CLI
npx skills add https://github.com/duclm1x1/Dive-Ai --skill 37soul
Repository Details
star Stars 3
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator