Install
openclaw skills install imessage-signal-analyzerAnalyze iMessage (macOS) and Signal conversation history to reveal relationship dynamics — message volume, initiation patterns, silence gaps, tone samples, a...
openclaw skills install imessage-signal-analyzerAnalyze iMessage (macOS) and Signal conversations to produce relationship reports.
iMessage data is stored locally on macOS. Depending on your security settings, you may need to grant Full Disk Access:
Option 1: Run the script directly with Python (no special permissions needed if you have read access to ~/Library/Messages/chat.db)
Option 2: If you get a permission error, grant Full Disk Access:
brew install signal-cli (macOS) or see https://github.com/AsamK/signal-clisignal-cli link and scan QR codesignal-cli export --output ~/signal_export.jsonpython3 skills/message-analyzer/scripts/analyze.py imessage <phone_or_handle>
Examples:
python3 skills/message-analyzer/scripts/analyze.py imessage "+15551234567"
python3 skills/message-analyzer/scripts/analyze.py imessage "+15551234567" --limit 500
First, export your Signal data (one-time):
signal-cli export --output ~/signal_export.json
Then analyze:
python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json <phone_or_name>
Examples:
python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json "+15551234567"
python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json "+15559876543"
If you have a name but not a number:
DB=$(ls ~/Library/Application\ Support/AddressBook/Sources/*/AddressBook-v22.abcddb 2>/dev/null | head -1)
sqlite3 "$DB" "SELECT ZFIRSTNAME, ZLASTNAME FROM ZABCDRECORD WHERE ZFIRSTNAME LIKE '%Name%';"
If AddressBook returns no results, ask the user for the number.
Signal exports include phone numbers in the JSON. Search by name or number.
+@ prefixes may appear in samples; these are normal.signal-cli exportThe script produces:
After running the script, synthesize findings conversationally:
Present the analysis conversationally, not just as raw numbers. Offer a genuine take on the relationship dynamic.