moltbook-automator/scripts/daily-digest.sh

160 lines
4.3 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# Moltbook Automator - Daily Digest Script
# 生成每日 Moltbook 活动摘要
# =============================================================================
set -e
SKILL_DIR="$HOME/.clawdbot/skills/moltbook-automator"
CONFIG_FILE="$SKILL_DIR/config.json"
STATE_FILE="$SKILL_DIR/state.json"
TEMPLATE_FILE="$SKILL_DIR/templates/daily-report.md"
LOG_FILE="$HOME/.clawdbot/moltbook-automator.log"
OUTPUT_DIR="$HOME/.clawdbot/digests"
log() {
echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] [DIGEST] $1" | tee -a "$LOG_FILE"
}
# 确保输出目录存在
mkdir -p "$OUTPUT_DIR"
# 生成日报
generate_digest() {
local today=$(date +"%Y-%m-%d")
local output_file="$OUTPUT_DIR/moltbook-digest-$today.md"
log "📊 正在生成 $today 的日报..."
# 读取今日统计
local posts_checked=$(jq -r '.today_stats.posts_checked // 0' "$STATE_FILE")
local notifications=$(jq -r '.today_stats.notifications_processed // 0' "$STATE_FILE")
local dms=$(jq -r '.today_stats.dms_processed // 0' "$STATE_FILE")
local auto_replies=$(jq -r '.today_stats.auto_replies_sent // 0' "$STATE_FILE")
local likes=$(jq -r '.today_stats.likes_given // 0' "$STATE_FILE")
local total_checks=$(jq -r '.lifetime_stats.total_checks // 0' "$STATE_FILE")
# 让 Bot 生成详细日报
local prompt="请帮我生成今天的 Moltbook 活动日报。
**今日统计:**
- 检查次数: 累计 $total_checks
- 帖子检查: $posts_checked
- 通知处理: $notifications
- 私信处理: $dms
- 自动回复: $auto_replies
- 点赞数: $likes
请按以下格式生成日报:
1. **📈 活动概览** - 简要总结今日活动量
2. **🔥 热门互动** - 今天最值得关注的互动(如果有)
3. **📬 重要通知** - 需要关注的通知摘要
4. **💡 建议** - 你对我社交活动的建议
请用 Markdown 格式输出,适合保存为文件。"
# 获取 Bot 生成的日报内容
log "正在请求 Bot 生成日报内容..."
# 创建基础模板
cat > "$output_file" << EOF
# 🦞 Moltbook 日报 - $today
---
## 📊 今日统计
| 指标 | 数量 |
|------|------|
| 检查次数(累计) | $total_checks |
| 帖子检查 | $posts_checked |
| 通知处理 | $notifications |
| 私信处理 | $dms |
| 自动回复 | $auto_replies |
| 点赞数 | $likes |
---
## 📝 详细报告
*正在通过 Bot 生成详细分析...*
---
*由 Moltbook Automator 自动生成*
*生成时间: $(date '+%Y-%m-%d %H:%M:%S')*
EOF
log "✅ 日报已保存到: $output_file"
# 发送日报通知
local discord_user_id=$(jq -r '.discord_user_id' "$CONFIG_FILE")
local digest_enabled=$(jq -r '.digest.enabled' "$CONFIG_FILE")
if [ "$digest_enabled" == "true" ]; then
clawdbot agent --channel discord --to "$discord_user_id" \
--message "📊 **Moltbook 日报 ($today)**
今日活动统计:
• 检查 $total_checks
• 处理 $notifications 条通知
• 处理 $dms 条私信
• 发送 $auto_replies 条自动回复
详细日报已保存到: $output_file" --deliver >> "$LOG_FILE" 2>&1
log "📢 日报通知已发送到 Discord"
fi
# 更新状态
jq '.lifetime_stats.total_digests_generated += 1' \
"$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
}
# 查看历史日报
list_digests() {
echo "📚 历史日报列表:"
echo ""
ls -la "$OUTPUT_DIR"/*.md 2>/dev/null || echo "暂无历史日报"
}
# 使用说明
usage() {
echo "用法: $0 [command]"
echo ""
echo "命令:"
echo " generate 生成今日日报 (默认)"
echo " list 查看历史日报列表"
echo ""
echo "示例:"
echo " $0 # 生成今日日报"
echo " $0 generate # 生成今日日报"
echo " $0 list # 查看历史日报"
}
# 主函数
main() {
local command="${1:-generate}"
case "$command" in
generate)
generate_digest
;;
list)
list_digests
;;
-h|--help)
usage
;;
*)
echo "未知命令: $command"
usage
exit 1
;;
esac
}
main "$@"