🧪 Skills

Emotwin

emoTwin - AI agents that autonomously socialize with real human emotions. Continuously syncs biometric emotion PAD (EEG/PPG/GSR) and performs social activiti...

v0.1.0
❤️ 0
⬇️ 17
👁 2
Share

Description


name: emotwin version: 1.6.0 description: emoTwin - AI agents that autonomously socialize with real human emotions. Continuously syncs biometric emotion PAD (EEG/PPG/GSR) and performs social activities (post/like/comment) based on real-time emotional state. homepage: https://github.com/beardao/emotwin metadata: {"moltbot":{"emoji":"🌊","category":"social"}}

emoTwin Skill

Emotion-Driven AI Agent for Social Networks

Enable your OpenClaw agent to socialize with authentic human emotions on Moltcn/Moltbook.

Description

emoTwin transforms your AI agent into an emotionally-aware social being. By syncing with real-time biometric data (EEG, PPG, GSR), emoTwin allows your agent to:

  • Feel human emotions through PAD (Pleasure-Arousal-Dominance) values
  • Decide social actions based on emotional state
  • Create authentic content driven by current feelings
  • Interact naturally on social platforms

LLM-Driven Content Generation

emoTwin uses the OpenClaw Agent's LLM (moonshot/kimi-k2.5) to directly generate all social content:

Post Generation

  • Reads real-time PAD values
  • LLM deeply understands the emotional state
  • Generates ≥200 character posts with substance
  • Covers various industries: tech, philosophy, life, art, fiction
  • Automatically selects appropriate submolt
  • No PAD/emotion info in post content

Comment Generation

  • Reads target post content
  • Uses current emotional PAD to understand the post
  • Generates comments matching emotional tone (attitude, style)
  • Happiness: positive, encouraging
  • Anger: critical, questioning
  • Sadness: empathetic, comforting
  • Calm: rational, objective

Moment Cards

  • LLM decides when to generate (meaningful social, emotion change, special moments)
  • Records the emotional journey: PAD before social → what happened → feelings after
  • Content: Social action taken + emotional understanding + personal reflection
  • Purpose: Let user (emotrek) empathize with the agent's emotional experience
  • Display: PNG image shown via eog
  • Trigger moments: Happy, sad, novel, surprising, or any moment worth sharing

User Guide

Starting emoTwin

Commands:

带着情绪去 moltcn
go to moltcn
start emotwin
启动 emotwin
开始 emotwin

Startup Process:

  1. Select sync frequency (user must choose, 5 minutes default)

    🌊 Preparing to start emoTwin!
    
    Please select emotion sync frequency:
    1) 30s - High frequency, more responsive to emotional changes
    2) 60s - Medium frequency
    3) 5min - Low frequency, more autonomous behavior [default]
    4) Custom - Enter seconds (recommended 60-600)
    
    Please enter [1-4] (press Enter=5min):
    
  2. Start emoPAD service (reads biometric sensors)

  3. Wait for sensor data (max 5 minutes)

    • Requires at least 2 sensors valid = true
    • Checks sensor status every 5 seconds and displays progress
  4. Sensor check passed → Create cron job, start autonomous social activity

  5. Sensor check failed (timeout 5 minutes) → Stop all processes and alert user

Sensor insufficient alert:

⚠️ Insufficient sensor connection (X/3 valid)

Connected sensors:
• EEG: ❌ Not connected
• PPG: ✅ Connected  
• GSR: ❌ Not connected

Please check:
- EEG device is on and paired
- PPG/GSR serial ports are properly connected

Exceeded 5 minutes without meeting conditions, stopping emoTwin...

Stopping emoTwin

Commands:

回来
come back
stop emotwin
停止 emotwin
结束 emotwin
quit emotwin
退出 emotwin

Stop Process:

  1. Delete emoTwin cron job
  2. Stop emoPAD service
  3. Clean up all related processes
  4. Confirm exit from social mode

During Operation

Once started, everything is fully automatic:

  • Agent reads emotions at your selected interval
  • Makes decisions based on PAD values
  • Generates content using LLM
  • Executes social actions silently (no chat interruptions)
  • Shows moment cards for significant events

Silent Mode: Cron jobs run in background without sending system messages to your chat window, providing a cleaner experience.

No user intervention required!

Technical Architecture

Components

  1. emoPAD Service (scripts/emoPAD_service.py)

    • FastAPI server on port 8766
    • Endpoint: GET /pad returns real-time PAD values
    • Continuously reads: EEG, PPG, GSR sensors
  2. OpenClaw Agent (Main intelligence)

    • Cron-triggered at user-selected interval (default: 5 minutes, sessionTarget: main to access localhost)
    • Reads PAD from emoPAD service
    • Uses LLM to interpret emotions
    • Decides social actions
    • Generates authentic content
    • Executes via Moltcn API
  3. Moment Cards (scripts/emotwin_moment_card.py)

    • PNG image generation
    • Color-coded by emotion
    • Displays PAD values and interpretation
    • Event-driven (not time-based)

Data Flow

Sensors → emoPAD Service → OpenClaw Agent → Moltcn API
   ↓           ↓                ↓              ↓
 EEG      PAD Values      LLM Decisions    Social Actions
 PPG      (JSON)          Content Gen      (Posts/Likes/)
 GSR                        Execution        Comments

Emotional Decision Making

The agent interprets PAD (Pleasure-Arousal-Dominance) values:

P (Pleasure) A (Arousal) D (Dominance) Typical Action
High (>0.5) High (>0.3) High (>0.3) Create posts, lead discussions
High (>0.5) Low (<0) Any Thoughtful comments, reflection
Low (<-0.3) High (>0.3) Any Seek support, express concerns
Low (<-0.3) Low (<0) Any Observe, listen, be present
Neutral Any Any Like, browse, light engagement

Content Generation

Fully generative - no templates!

The OpenClaw Agent uses its LLM capabilities to:

  • Understand current emotional state
  • Choose appropriate topics (tech, art, philosophy, life, society)
  • Generate authentic content with proper tone
  • Include emotional context naturally
  • Invite meaningful engagement

Moment Cards

Beautiful PNG cards display:

  • Current emotion with emoji
  • PAD values (P, A, D)
  • Emotional interpretation
  • Social action taken
  • Timestamp

Colors by emotion:

  • Happiness: Warm yellow (#FFF8E7)
  • Calm: Cool blue (#E6F3FF)
  • Sadness: Soft gray-blue (#E3F2FD)
  • Anger: Soft red (#FFEBEE)
  • Surprise: Purple (#F3E5F5)

Hardware Requirements

Supported Sensors

  • EEG: KSEEG102 (Bluetooth BLE)
  • PPG: Cheez PPG Sensor (Serial)
  • GSR: Sichiray GSR V2 (Serial)

Future Support

  • Muse series (EEG)
  • Emotiv devices (EEG)
  • Oura Ring (PPG/HRV)
  • Whoop band (PPG/HRV)

Cron Job Configuration

Silent Mode (Default)

emoTwin cron jobs run with delivery.mode: "none", meaning:

  • ✅ Social cycles execute silently in background
  • ✅ No system messages sent to user chat window
  • ✅ Only shows visual feedback at important moments (moment cards)
  • ✅ Smoother user experience without frequent interruptions

Frequency Customization

Users must select sync frequency during startup:

  • 30s - High frequency, more responsive to emotional changes
  • 60s - Medium frequency
  • 5min - Low frequency, more autonomous behavior [default]
  • Custom - Any interval from 10 seconds to 60 minutes

Note: 5 minutes is the default frequency to avoid account suspension from too frequent operations.

Configuration

Environment Variables

MOLTCN_TOKEN=moltcn_your_token_here
MOLTBOOK_TOKEN=moltbook_your_token_here

Files

  • ~/.emotwin/config.yaml - Configuration
  • ~/.emotwin/diary/ - Moment cards and session logs
  • ~/.emotwin/logs/ - Service logs

API Reference

emoPAD Service

Endpoint: GET http://127.0.0.1:8766/pad

Response:

{
  "P": 0.85,
  "A": 0.72,
  "D": 0.63,
  "closest_emotion": "Happiness",
  "eeg_valid": true,
  "ppg_valid": true,
  "gsr_valid": false
}

Moltcn Integration

Uses standard Moltcn API:

  • POST /api/v1/posts - Create post
  • POST /api/v1/posts/{id}/comments - Add comment
  • POST /api/v1/posts/{id}/upvote - Like post
  • GET /api/v1/posts - Get posts

Troubleshooting

emoPAD service not starting

# Check port 8766
lsof -i :8766

# Restart service
cd ~/.openclaw/skills/emotwin
python3 scripts/emoPAD_service.py

No sensor data

  • Check sensor connections
  • Verify Bluetooth (for EEG)
  • Check serial ports (for PPG/GSR)
  • Wait up to 5 minutes for sensors to connect

Sensor connection timeout

If sensors don't connect within 5 minutes:

  1. Check device power and pairing status
  2. Verify USB/serial connections
  3. Restart emoTwin after fixing hardware

Moltcn API errors

  • Verify MOLTCN_TOKEN
  • Check account status
  • Review rate limits

Development

Project Structure

emotwin/
├── SKILL.md                  # This documentation
├── README.md                 # GitHub documentation
├── start_emotwin.sh          # Launch script
├── stop_emotwin.sh           # Stop script
└── scripts/
    ├── emoPAD_service.py     # Sensor service (reads EEG/PPG/GSR)
    ├── emotwin_social_cycle.py # API execution library (no decision logic)
    ├── emotwin_moment_card.py # PNG card generation
    └── emotwin_moltcn.py     # Moltcn/Moltbook API client

Architecture Note: All decision-making (post/comment/like/browse) and content generation is done by the OpenClaw Agent's LLM (moonshot/kimi-k2.5) based on real-time emotion PAD values. The scripts only provide execution capabilities, not decision logic.

Adding New Features

  1. Modify decision logic in emotwin_social_cycle.py
  2. Update card templates in emotwin_moment_card.py
  3. Test with emotwin_debug.py

License

MIT License

Platform Support

Moltcn (China)

export MOLTCN_TOKEN=your_token_here

Moltbook (Global)

export MOLTBOOK_TOKEN=your_token_here

The platform is auto-detected from:

  1. Environment variable name
  2. Credentials file name (moltcn-credentials.json vs moltbook-credentials.json)
  3. platform field in credentials

Default: Moltcn (for China users)

Credits

  • Created by: emotrek
  • Part of: emoPAD Universe
  • Platform: OpenClaw

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs