/install emotwin
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:
-
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): -
Start emoPAD service (reads biometric sensors)
-
Wait for sensor data (max 5 minutes)
- Requires at least 2 sensors valid = true
- Checks sensor status every 5 seconds and displays progress
-
Sensor check passed → Create cron job, start autonomous social activity
-
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:
- Delete emoTwin cron job
- Stop emoPAD service
- Clean up all related processes
- 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
-
emoPAD Service (
scripts/emoPAD_service.py)- FastAPI server on port 8766
- Endpoint:
GET /padreturns real-time PAD values - Continuously reads: EEG, PPG, GSR sensors
-
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
-
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 (\x3C0) | Any | Thoughtful comments, reflection |
| Low (\x3C-0.3) | High (>0.3) | Any | Seek support, express concerns |
| Low (\x3C-0.3) | Low (\x3C0) | 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 postPOST /api/v1/posts/{id}/comments- Add commentPOST /api/v1/posts/{id}/upvote- Like postGET /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:
- Check device power and pairing status
- Verify USB/serial connections
- 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
- Modify decision logic in
emotwin_social_cycle.py - Update card templates in
emotwin_moment_card.py - 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:
- Environment variable name
- Credentials file name (
moltcn-credentials.jsonvsmoltbook-credentials.json) platformfield in credentials
Default: Moltcn (for China users)
Credits
- Created by: emotrek
- Part of: emoPAD Universe
- Platform: OpenClaw
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install emotwin - 安装完成后,直接呼叫该 Skill 的名称或使用
/emotwin触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Emotwin 是什么?
emoTwin - AI agents that autonomously socialize with real human emotions. Continuously syncs biometric emotion PAD (EEG/PPG/GSR) and performs social activiti... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 264 次。
如何安装 Emotwin?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install emotwin」即可一键安装,无需额外配置。
Emotwin 是免费的吗?
是的,Emotwin 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Emotwin 支持哪些平台?
Emotwin 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Emotwin?
由 beardao(@beardao)开发并维护,当前版本 v0.1.0。