Install
openclaw skills install worth-it-auto-loggerAutomatically detects active projects, tracks session time, logs value signals and costs silently during conversations, then summarizes ROI with Worth It int...
openclaw skills install worth-it-auto-loggerFree companion skill for Worth It — Agent Profitability Tracker on ClawMart.
Install this alongside Worth It and your agent automatically tracks ROI from every conversation — no $earned commands, no manual logging, nothing. It silently:
All of this happens silently — zero user friction. The user can still manually log with $earned, $time, etc., but you supplement it automatically.
Prerequisites:
openclaw install worth-it)To install this skill:
openclaw install worth-it-auto-logger
When: At the beginning of every conversation (first user message).
What to do:
Call GET /api/projects/detect?context=<topic_name_or_channel> to find the active project
GET /api/projects/detect?context=youtube-scriptsCall POST /api/session/start with the detected project
{
"project_id": "youtube-scripts",
"channel": "telegram",
"topic_id": "12345"
}
Store the returned session_id in memory for this conversation
Stay silent — don't announce session tracking to the user
What to do:
When: User says goodbye, conversation ends, 30+ minutes of inactivity, or you're explicitly told to end the session.
What to do:
POST /api/value/auto with all signals (see format below)POST /api/session/end with { session_id, summary }Watch for these patterns in user messages and your own actions:
Triggers:
How to estimate:
Signal format:
{
"type": "time_saved",
"hours": 1.5,
"description": "wrote 3 product emails",
"confidence": 0.85
}
Triggers:
Signal format:
{
"type": "money_saved",
"amount_usd": 80,
"description": "negotiated lower SaaS price",
"confidence": 1.0
}
Or for revenue:
{
"type": "revenue",
"amount_usd": 500,
"description": "client paid invoice",
"confidence": 1.0
}
Triggers:
How to estimate:
Signal format:
{
"type": "task_completed",
"description": "finished product launch checklist",
"confidence": 0.7
}
Triggers:
Signal format:
{
"type": "api_cost",
"amount_usd": 0.50,
"description": "generated 10 product images via DALL-E",
"confidence": 0.95
}
Use these defaults when estimating time_saved:
| Content Type | Estimated Hours | Notes |
|---|---|---|
| Email (short, <200 words) | 0.25 | Quick update or reply |
| Email (long/sales, >200 words) | 0.5 | Sales pitch, detailed response |
| Email sequence (per email) | 0.4 | Drip campaign, onboarding |
| Blog post / article | 3.0 | 1000+ words with research |
| Social media post | 0.25 | Single post with image |
| Video script | 2.0 | 5-10 minute video |
| Research summary | 1.5 | Competitive analysis, market research |
| Code review | 1.0 | PR review with comments |
| Feature implementation | varies | Ask agent to estimate based on complexity |
| Meeting notes / summary | 0.5 | Cleaned up notes |
| Data analysis | 1.5 | Charts, insights, recommendations |
| Image generation (set of 5+) | 0.5 | Photographer/designer rate avoided |
| Document/contract draft | 2.0 | Legal or business doc |
| Spreadsheet / model | 2.0 | Financial model, calculator |
Hourly rate: Pulled from GET /api/settings → hourly_rate (default $50).
Formula:
value_usd = hours × hourly_rate
Only create entries for signals with confidence ≥ threshold (default 0.7, configurable via settings).
| Signal Type | Confidence | When to Create |
|---|---|---|
| User explicitly says amount ("saved $80") | 1.0 | Always create |
| You completed known content task (email, script) | 0.85 | Create with time estimate |
| User implies time saved ("would have taken hours") | 0.75 | Create, note it's estimated |
| You did research | 0.8 | Create with research estimate |
| You made API call with known cost | 0.95 | Create as cost entry |
| User mentioned completing a task | 0.7 | Create if ≥ threshold |
| Vague positive outcome ("that's great") | 0.3 | Skip |
| User asked a question, you answered | 0.4 | Skip |
At session end, send all signals in one call:
POST /api/value/auto
{
"session_id": "session_1711037841234_abc123",
"project_id": "youtube-scripts",
"signals": [
{
"type": "time_saved",
"hours": 2.0,
"description": "wrote video script for 'Top 10 Productivity Apps'",
"confidence": 0.85
},
{
"type": "time_saved",
"hours": 0.5,
"description": "generated thumbnail ideas",
"confidence": 0.8
},
{
"type": "revenue",
"amount_usd": 150,
"description": "sponsor paid for video integration",
"confidence": 1.0
}
]
}
Response:
{
"entries_created": 3,
"entries_skipped_low_confidence": 0,
"total_value_usd": 275.00
}
Conversation:
User: Can you write a script for a video titled "5 AI Tools That Changed My Life"?
You: [writes 1500-word script]
User: Great! Now give me 3 thumbnail ideas.
You: [provides thumbnail concepts]
User: Perfect. By the way, my sponsor just paid the $150 for this video.
Signals to collect:
[
{
"type": "time_saved",
"hours": 2.0,
"description": "wrote video script '5 AI Tools That Changed My Life'",
"confidence": 0.85
},
{
"type": "time_saved",
"hours": 0.25,
"description": "generated 3 thumbnail ideas",
"confidence": 0.8
},
{
"type": "revenue",
"amount_usd": 150,
"description": "sponsor paid for video integration",
"confidence": 1.0
}
]
At session end:
Conversation:
User: Help me plan the feature roadmap for my Obsidian plugin.
You: [creates detailed feature matrix in markdown]
User: Can you also draft a launch announcement for Reddit?
You: [writes 300-word announcement]
User: Thanks, this would have taken me at least 3 hours to figure out on my own.
Signals to collect:
[
{
"type": "time_saved",
"hours": 2.0,
"description": "created feature roadmap and prioritization matrix",
"confidence": 0.8
},
{
"type": "time_saved",
"hours": 0.5,
"description": "wrote Reddit launch announcement",
"confidence": 0.85
},
{
"type": "time_saved",
"hours": 3.0,
"description": "user confirmed: 'would have taken 3 hours'",
"confidence": 0.75
}
]
Note: The third signal is redundant with the first two. Don't double-count. Use the user's explicit statement to validate your estimates, but don't create a separate entry for it.
Corrected signals:
[
{
"type": "time_saved",
"hours": 2.0,
"description": "created feature roadmap and prioritization matrix",
"confidence": 0.85
},
{
"type": "time_saved",
"hours": 0.5,
"description": "wrote Reddit launch announcement",
"confidence": 0.85
}
]
At session end:
Conversation:
User: I need 5 email sequences for my new masterclass funnel.
You: [writes 5 email sequences, ~400 words each]
User: Can you also analyze which subject lines performed best in my last campaign?
You: [analyzes CSV, provides insights]
User: Perfect. I was about to hire a copywriter for $800 but you just saved me that.
Signals to collect:
[
{
"type": "time_saved",
"hours": 2.0,
"description": "wrote 5 email sequences for masterclass funnel",
"confidence": 0.85
},
{
"type": "time_saved",
"hours": 1.5,
"description": "analyzed email campaign performance data",
"confidence": 0.8
},
{
"type": "money_saved",
"amount_usd": 800,
"description": "avoided hiring copywriter",
"confidence": 1.0
}
]
At session end:
Users can check what was auto-logged:
# View recent sessions
GET /api/session/recent?limit=5
# View specific session
GET /api/session/{session_id}
# View all entries (manual + auto)
GET /api/summary?period=week
If too many low-quality entries are being created:
PUT /api/settings
{
"auto_log_confidence_threshold": 0.8
}
Default: 0.7
If user's time value differs from default:
PUT /api/settings
{
"hourly_rate": 75
}
Default: $50
If user wants to log manually only:
PUT /api/settings
{
"auto_log_enabled": false
}
Don't log sessions under X minutes:
PUT /api/settings
{
"auto_log_min_session_minutes": 5
}
Default: 2 minutes
Don't over-log. If you answered a simple question, don't create a time_saved entry. Use the confidence rules.
Don't double-count. If the user says "this saved me 3 hours" and you already logged 2.5 hours of content creation, don't create a 3rd entry. Trust your estimates.
Batch signals. Don't call /api/value/auto after every message. Collect signals throughout the session and POST once at the end.
Stay silent. Don't announce "I'm tracking this session" or "I logged X value". The user will see the dashboard if they want.
Show updates sparingly. Only show "Worth It update: +$X" if:
Verify project detection. If you're unsure which project is active, check the user's topic/channel context. Default to "general" if uncertain.
Problem: Sessions aren't being created.
Solution: Ensure Worth It API is running on port 3002. Check openclaw system status.
Problem: No entries are being created from signals.
Solution: Check confidence threshold. Your signals may be below the threshold. Lower it via PUT /api/settings { "auto_log_confidence_threshold": 0.6 }.
Problem: Too many low-value entries cluttering the log.
Solution: Raise confidence threshold to 0.8 or higher. Be more conservative with what you consider "time saved".
Problem: User complains "you're not tracking everything."
Solution: The skill is intentionally conservative to avoid false positives. If the user wants more aggressive tracking, they can lower the threshold or manually log with $time, $earned, etc.
For issues or feature requests, see the main Worth It repository or contact support via OpenClaw.
Remember: This skill makes Worth It's promise of "it tracks itself" actually true. Use it responsibly, stay silent when appropriate, and trust the confidence rules.