๐ Daily Report Generation
Every morning when you open your messaging app, a well-organized business report is waiting for you. This is Daily Report Automationโlet Rose collect data, analyze trends, and format it into an easy-to-read format.
Scenario Description
Use Cases
| Scenario | Report Content |
|---|---|
| ๐ E-commerce Operations | Yesterdayโs revenue, order count, top-selling products |
| ๐ฑ App Operations | Active users, new users, retention rate |
| ๐ Website Management | Page views, popular pages, traffic sources |
| ๐ฐ Financial Management | Income/expense details, cash flow, accounts receivable |
| ๐ Marketing Tracking | Ad performance, conversion rate, ROI |
Expected Results
- โฐ Save Time: No need to manually log into various platforms daily
- ๐ Stay Informed: Know yesterdayโs business status first thing in the morning
- ๐ฏ Quick Decisions: Easier to spot trends when data is consolidated
- ๐ฑ Anywhere Access: View reports on your mobile device
Data Source Integration
Common Data Sources
| Source Type | Access Method | Difficulty |
|---|---|---|
| Google Analytics | API integration | โญโญ |
| Database | SQL queries | โญโญโญ |
| Spreadsheets | Google Sheets API | โญโญ |
| Third-party Platforms | REST API | โญโญโญ |
| CSV/JSON Files | File reading | โญ |
Data Integration Flow
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Data Source โ โ โ Data Collection โ โ โ Data Processing โ
โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค
โ โข GA4 โ โ โ โ โ
โ โข Database โ โ Rose executesโ โ โข Aggregate โ
โ โข API โ โ queries/callsโ โ โข Calculate โ
โ โข Files โ โ โ โ โข Analyze โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโ
โ Generate Report โ
โโโโโโโโโโโโโโโโค
โ โข Format โ
โ โข Visualize โ
โ โข Send โ
โโโโโโโโโโโโโโโโ
Report Format Design
Basic Report Structure
{`# ๐ Daily Business Report
**Date:** 2026-03-21
**Generated:** 08:00
---
## ๐ Key Metrics
| Metric | Yesterday | Day Before | Change |
|------|------|------|------|
| Revenue | $50,000 | $45,000 | +11% ๐ข |
| Orders | 120 | 110 | +9% ๐ข |
| Avg Order Value | $417 | $409 | +2% ๐ข |
| Visitors | 2,500 | 2,800 | -11% ๐ด |
---
## ๐ Yesterday's Highlights
- Revenue hit weekly high
- New product "XXX" performed well (sold 30 units)
---
## โ ๏ธ Attention Needed
- Visitors decreased 11%, recommend checking traffic sources
- Cart abandonment rate slightly high (65%)
---
## ๐ Today's Tasks
- [ ] Follow up on yesterday's incomplete orders
- [ ] Check inventory levels
- [ ] Reply to customer feedback
---
๐ก *This report was automatically generated by Rose*`}
Report Design Principles
| Principle | Description | Example |
|---|---|---|
| Key Points First | Most important data at the top | Key metrics table |
| Clear Comparison | Compare with previous day/week | Change percentage + color indicators |
| Visual | Use emoji and tables | ๐ข Growth ๐ด Decline |
| Action-Oriented | Provide next step recommendations | Todayโs task list |
Auto-Send Configuration
Using Cron Scheduling
{`# Generate and send report every day at 8 AM
0 8 * * * cd /home/node/.openclaw/workspace && node scripts/daily-report.js
# Send weekly report every Monday at 8 AM
0 8 * * 1 cd /home/node/.openclaw/workspace && node scripts/weekly-report.js
# Send monthly report on the 1st at 8 AM
0 8 1 * * cd /home/node/.openclaw/workspace && node scripts/monthly-report.js`}
Report Generation Script Example
{`// Daily report generation script
const { getGA4Data } = require('./apis/google-analytics');
const { queryDatabase } = require('./apis/database');
const { sendTelegramMessage } = require('./apis/telegram');
async function generateDailyReport() {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
// Collect data
const [gaData, orderData] = await Promise.all([
getGA4Data(yesterday),
queryDatabase('
SELECT COUNT(*) as orders, SUM(total) as revenue
FROM orders
WHERE DATE(created_at) = DATE(?)
', [yesterday])
]);
// Calculate changes
const prevDayData = await getPrevDayData(yesterday);
const changes = calculateChanges(orderData, prevDayData);
// Generate report content
const report = formatReport({
date: formatDate(yesterday),
revenue: orderData.revenue,
orders: orderData.orders,
visitors: gaData.activeUsers,
changes: changes
});
// Send report
await sendTelegramMessage({
chat_id: process.env.ADMIN_CHAT_ID,
text: report,
parse_mode: 'Markdown'
});
console.log('โ
Report sent');
}
generateDailyReport().catch(console.error);`}
Using Heartbeat Checks
{`# Heartbeat task list
## Daily Report Check
Time: Every day 08:00
Tasks:
1. Check if report was sent successfully
2. Check if data is complete
3. Notify admin immediately if any anomalies
## Data Source Health Check
Time: Every day 06:00
Tasks:
1. Check GA4 API connection
2. Check database connection
3. Check spreadsheet permissions
4. Record check results`}
Advanced Applications
Multi-Platform Report Integration
{`# ๐ Daily Multi-Platform Report
## ๐ E-commerce Platforms
| Platform | Revenue | Orders | Status |
|------|--------|--------|------|
| Website | $30,000 | 75 | ๐ข |
| Shopee | $15,000 | 35 | ๐ข |
| Momo | $5,000 | 10 | ๐ก |
## ๐ฑ Social Media
| Platform | Followers | Engagement | New Posts |
|------|--------|--------|----------|
| FB | 5,200 | 3.2% | 2 |
| IG | 3,800 | 4.1% | 3 |
| LINE | 2,100 | 12% | 1 |
## ๐ง Newsletter
- Sent: 1,500
- Open Rate: 25%
- Click Rate: 3.5%
Total: Revenue $50,000 | Total Orders 120 | Total Visitors 2,500`}
Anomaly Detection & Alerts
{`# Anomaly detection settings
alerts:
revenue_drop:
condition: "revenue < yesterday_revenue * 0.7"
message: "๐จ Revenue dropped more than 30% from yesterday"
priority: high
order_spike:
condition: "orders > avg_orders * 2"
message: "๐ Order spike detected, please ensure sufficient inventory"
priority: medium
zero_sales:
condition: "revenue == 0"
message: "โ ๏ธ No sales today, please check system status"
priority: high
traffic_drop:
condition: "visitors < yesterday_visitors * 0.5"
message: "๐ด Traffic dropped abnormally, please check website"
priority: high`}
Report Archive Management
{`#!/bin/bash
# Report archive script
REPORT_DIR="/reports/daily"
ARCHIVE_DIR="/reports/archive"
DATE=$(date +%Y%m%d)
# Create monthly directory
MONTH_DIR="$ARCHIVE_DIR/$(date +%Y-%m)"
mkdir -p "$MONTH_DIR"
# Move last month's reports to archive
find "$REPORT_DIR" -name "report-*.md" -mtime +30 -exec mv {} "$MONTH_DIR/" \;
# Delete archives older than 3 months
find "$ARCHIVE_DIR" -name "*.tar.gz" -mtime +90 -delete
# Compress last month's archive
if [ "$(date +%d)" == "01" ]; then
LAST_MONTH="$(date -d 'last month' +%Y-%m)"
tar -czf "$ARCHIVE_DIR/$LAST_MONTH.tar.gz" -C "$ARCHIVE_DIR" "$LAST_MONTH/"
rm -rf "$ARCHIVE_DIR/$LAST_MONTH/"
fi
echo "โ
Report archiving complete"`}
FAQ
Q: What if the report data is inaccurate?
- Check data source API permissions
- Confirm timezone settings are correct
- Validate against original data
- Establish data validation mechanisms
Q: Can I customize report timing?
Yes! Modify Cron settings:
- 8 AM:
0 8 * * * - 6 PM:
0 18 * * * - Every 4 hours:
0 */4 * * *
Q: Can reports be simplified?
Can set summary mode:
- Only show key metrics
- Show detailed info only when anomalies exist
- Provide โView Full Reportโ link
Summary
๐ Daily Report Generation gives you a complete view of your business every morning:
- Data Integration: Connect to various platform APIs for automatic data collection
- Visual Presentation: Tables, emoji, and color indicators for easy reading
- Auto-Send: Cron scheduling delivers reports to you on time
- Smart Alerts: Automatic notifications for anomalies so you donโt miss important changes