Initial: Link analyzer bot for #remora channel

This commit is contained in:
Remora
2026-02-09 18:07:14 +01:00
commit 23548be6ad
5 changed files with 389 additions and 0 deletions

66
analyze-links.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/bin/bash
# Scan #remora for new links, analyze, and add to Tududi inbox
# Run via cron every 5 minutes
set -euo pipefail
CHANNEL_ID="1467557082583535729"
TRACKER_FILE="$(dirname "$0")/tracker.json"
GATEWAY_URL="${OPENCLAW_GATEWAY:-http://127.0.0.1:18789}"
GATEWAY_TOKEN="${OPENCLAW_GATEWAY_TOKEN:-}"
if [ -z "$GATEWAY_TOKEN" ]; then
echo "⚠️ OPENCLAW_GATEWAY_TOKEN not set"
exit 1
fi
# Read last check timestamp
last_check=$(jq -r '.last_check' "$TRACKER_FILE")
processed_ids=$(jq -r '.processed_message_ids[]' "$TRACKER_FILE" 2>/dev/null || echo "")
# Fetch recent messages from #remora
echo "📡 Scanning #remora for new links..."
messages=$(curl -s \
-H "Authorization: Bearer ${DISCORD_BOT_TOKEN:-}" \
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages?limit=50" 2>/dev/null || echo "[]")
# Extract URLs and process new ones
echo "$messages" | jq -r '.[] | select(.content | test("http")) | "\(.id)|\(.content)|\(.author.username)"' | while IFS='|' read -r msg_id content author; do
# Skip if already processed
if echo "$processed_ids" | grep -q "$msg_id"; then
continue
fi
echo "🔗 Found message from $author: $content"
# Extract URL (simple regex)
url=$(echo "$content" | grep -oP 'https?://[^\s]+' | head -1)
if [ -z "$url" ]; then
continue
fi
echo " URL: $url"
# Fetch and analyze
title=$(curl -s -I "$url" 2>/dev/null | grep -i "title" | cut -d' ' -f2- || echo "Unknown")
# Send to Tududi inbox with summary
if [ -n "$title" ]; then
echo " Adding to Tududi inbox: $title"
curl -s -X POST "https://todo.dilain.com/api/v1/inbox" \
-H "Authorization: Bearer ${TUDUDI_API_KEY:-}" \
-H "Content-Type: application/json" \
-d "{\"content\":\"📌 $title\n🔗 $url\"}" > /dev/null 2>&1
fi
# Update tracker
jq ".processed_message_ids += [\"$msg_id\"]" "$TRACKER_FILE" > "$TRACKER_FILE.tmp"
mv "$TRACKER_FILE.tmp" "$TRACKER_FILE"
done
# Update last check
jq ".last_check = \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"" "$TRACKER_FILE" > "$TRACKER_FILE.tmp"
mv "$TRACKER_FILE.tmp" "$TRACKER_FILE"
echo "✅ Scan complete"