Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Revenue Monitor — Gumroad, KDP & Etsy Sales Tracker

v1.0.0

Track daily sales and revenue from Gumroad, KDP, and Etsy; send alerts on spikes, drops, and generate daily, weekly, and monthly revenue summaries.

0· 139·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for tenlifejosh/revenue-monitor.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Revenue Monitor — Gumroad, KDP & Etsy Sales Tracker" (tenlifejosh/revenue-monitor) from ClawHub.
Skill page: https://clawhub.ai/tenlifejosh/revenue-monitor
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install revenue-monitor

ClawHub CLI

Package manager switcher

npx clawhub@latest install revenue-monitor
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The SKILL.md clearly describes tracking Gumroad, KDP, and Etsy and sending Telegram alerts — that capability matches the name/description. However, the registry metadata declares no required credentials or env vars while the instructions explicitly rely on Gumroad tokens, Etsy API keys, and (implicitly) Telegram credentials and AgentReach session data. That metadata/instruction mismatch is incoherent and should be resolved before trusting the skill.
!
Instruction Scope
Instructions tell the agent to read/write local files (skills/revenue-monitor/config.json and systems/feedback/revenue-data.json) and to inspect ~/.agentreach/kdp-sales-cache. Reading external tool caches and writing persistent JSON with API tokens is beyond a minimal scoped instruction and could expose secrets. Otherwise API calls are limited to Gumroad, Etsy, and AgentReach/CSV inputs as expected.
Install Mechanism
This is an instruction-only skill with no install spec and no code files. That minimizes risk from arbitrary downloads or installs.
!
Credentials
The number and type of credentials implied (GUMROAD token, ETSY_API_KEY, AgentReach/KDP session, and some form of Telegram credential) are proportionate to the feature set, but none are declared in the registry metadata. The SKILL.md suggests storing secrets in skills/revenue-monitor/config.json (plain JSON) which is insecure. The skill also references reading ~/.agentreach/kdp-sales-cache (access to another tool's data), which increases the surface area for sensitive data exposure.
Persistence & Privilege
The skill writes persistent configuration and a revenue log to local paths under skills/ and systems/feedback; it does not request always:true and does not modify other skills. Persisting API tokens and logs is expected for this use case but the guidance to store tokens in an unencrypted JSON file and the use of a shared systems/feedback path could expose data to other local processes or skills.
What to consider before installing
Before installing: 1) Confirm where and how you will store API credentials — do NOT store API tokens in plain text under skills/revenue-monitor/config.json unless you accept the risk; prefer the platform's secret store or an encrypted file. 2) Verify the metadata vs SKILL.md: the skill requires Gumroad/Etsy/KDP credentials and a Telegram send mechanism (bot token + chat ID), but the registry lists no required env vars; ask the publisher to declare them. 3) Ask how Telegram alerts are sent — SKILL.md asks for a chat ID but doesn't mention a bot token or how the bot is authorized. 4) Understand the AgentReach dependency: if you use AgentReach, the skill reads ~/.agentreach/kdp-sales-cache — confirm you are okay with that tool's cache being accessed. 5) Consider limiting file permissions for config and revenue-data.json and review who/what can access systems/feedback. 6) Verify the publisher (clawhub.json lists a homepage/repo) and inspect that external repo or ask for a source archive before granting credentials. If you cannot validate these points, avoid installing or provide only test/stub credentials.

Like a lobster shell, security has layers — review code before you run it.

ecommercevk972sffsqkn65sr1vb09vt6e5d838ngfetsyvk972sffsqkn65sr1vb09vt6e5d838ngfgumroadvk972sffsqkn65sr1vb09vt6e5d838ngfkdpvk972sffsqkn65sr1vb09vt6e5d838ngflatestvk972sffsqkn65sr1vb09vt6e5d838ngfmonitoringvk972sffsqkn65sr1vb09vt6e5d838ngfrevenuevk972sffsqkn65sr1vb09vt6e5d838ngfsalesvk972sffsqkn65sr1vb09vt6e5d838ngf
139downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

SKILL: Revenue Monitor

Purpose

Track daily revenue across Gumroad, KDP, and Etsy. Alert on anomalies (sales spikes, drops, or zero-revenue days). Generate daily and weekly summaries. Make sure no sale goes unnoticed and no revenue problem goes undetected.


Configuration (Set Once)

Check skills/revenue-monitor/config.json. If not present, ask:

  1. Gumroad: Do you have a Gumroad API access token? (Settings → Advanced → API)
  2. KDP: Do you have KDP sales tracking set up? (Manual CSV export or AgentReach session)
  3. Etsy: Do you have an Etsy API key? (developer.etsy.com)
  4. Telegram alert chat ID: For revenue alerts (leave blank to disable)
  5. Revenue alert thresholds:
    • Alert if daily sales exceed $[X] (spike alert)
    • Alert if no sales for [X] consecutive days (drop alert)
    • Weekly revenue goal: $[X]
  6. Check frequency: Daily at [time] / On demand only

Save to skills/revenue-monitor/config.json.


Daily Revenue Check

Run every day (or when triggered). Pull data from all configured platforms.

Gumroad Check

# Gumroad REST API v2
# GET https://api.gumroad.com/v2/sales
# Headers: Authorization: Bearer {GUMROAD_ACCESS_TOKEN}
# Params: after={yesterday_date}, before={today_date}

import requests
from datetime import date, timedelta

yesterday = (date.today() - timedelta(days=1)).isoformat()
today = date.today().isoformat()

response = requests.get(
    "https://api.gumroad.com/v2/sales",
    headers={"Authorization": f"Bearer {GUMROAD_TOKEN}"},
    params={"after": yesterday, "before": today}
)

sales = response.json().get("sales", [])

Extract per sale:

  • product_name
  • price (in cents — divide by 100)
  • created_at
  • variants_and_quantity
  • referrer (where the sale came from)

Compile into:

GUMROAD — [Date]
Sales: [X]
Revenue: $[X.XX]
Products sold:
  - [Product A]: [X] units @ $[X]
  - [Product B]: [X] units @ $[X]
Top referrer: [URL or "direct"]

KDP Check (via AgentReach or Manual)

If AgentReach is configured with a KDP session:

agentreach kdp sales --days 1

If not, check ~/.agentreach/kdp-sales-cache/ for last exported data.

If no automation: prompt the user to export KDP sales report and paste/share it.

KDP data to extract:

  • Units ordered per title
  • Estimated royalties
  • KENP (Kindle Unlimited pages read)
KDP — [Date]
Units ordered: [X]
Estimated royalties: $[X.XX]
KENP pages: [X] (~$[X.XX])
Top title: [Title name]

Etsy Check (if configured)

# Etsy API v3
# GET https://openapi.etsy.com/v3/application/shops/{shop_id}/receipts
# Headers: x-api-key: {ETSY_API_KEY}

response = requests.get(
    f"https://openapi.etsy.com/v3/application/shops/{ETSY_SHOP_ID}/receipts",
    headers={"x-api-key": ETSY_API_KEY},
    params={"min_created": yesterday_timestamp, "max_created": today_timestamp}
)

Compile:

ETSY — [Date]
Orders: [X]
Revenue: $[X.XX] (before Etsy fees)
Net revenue: ~$[X.XX] (after ~6.5% transaction fee)
Top product: [Product name]

Daily Revenue Summary Format

📊 REVENUE SUMMARY — [Day, Date]

GUMROAD
  Sales: [X] | Revenue: $[X.XX]
  [Product breakdown]

KDP
  Units: [X] | Royalties: ~$[X.XX]
  [Title breakdown]

ETSY
  Orders: [X] | Revenue: $[X.XX]
  [Product breakdown]

─────────────────────────
TODAY TOTAL: $[X.XX]
MTD TOTAL: $[X.XX]
MTD GOAL: $[X.XX] ([X]% to goal)
─────────────────────────

YESTERDAY: $[X.XX] | CHANGE: [+/- X%]
7-DAY AVG: $[X.XX]/day
30-DAY TOTAL: $[X.XX]

Anomaly Detection & Alerts

Spike Alert (Positive)

Trigger: Today's revenue exceeds 3x the 7-day average

🚀 REVENUE SPIKE ALERT — [Date]

Today: $[X.XX] (vs 7-day avg of $[X.XX])
That's [X]x your normal daily revenue!

Top source: [Platform] — [Product]
Possible cause: [Check if you ran any promotion, got a feature, etc.]

Action: Consider reposting what worked today. Check referrer data.

Drop Alert (Concern)

Trigger: Zero sales for N consecutive days (configured threshold, default 3)

⚠️ REVENUE ALERT — [X] Days No Sales

Last sale: [Date] — [Product] on [Platform]
Days since: [X]

Possible causes to investigate:
• Product listings active? (Check all platforms)
• Any SEO/search ranking drops?
• Seasonal dip?
• Payment method issues?

Recommended action: Run a quick promotion or share a product link.

Weekly Drop Alert

Trigger: This week's revenue is more than 30% below last week

📉 WEEKLY REVENUE DOWN [X]%

This week: $[X.XX]
Last week: $[X.XX]
Difference: -$[X.XX]

[Breakdown by platform showing where the drop happened]

Investigate: [Platform where the biggest drop occurred]

Weekly Revenue Report

Every Sunday (or when triggered: "weekly revenue report"):

📈 WEEKLY REVENUE REPORT — Week of [Date]

TOTAL THIS WEEK: $[X.XX]
vs Last Week: $[X.XX] ([+/-X%])
vs Goal ($[X]): [X]% achieved

PLATFORM BREAKDOWN:
  Gumroad: $[X.XX] ([X] sales)
  KDP:     $[X.XX] ([X] units + KENP)
  Etsy:    $[X.XX] ([X] orders)

TOP PERFORMERS:
  1. [Product] — $[X.XX] ([X] units)
  2. [Product] — $[X.XX] ([X] units)
  3. [Product] — $[X.XX] ([X] units)

NEW PRODUCTS LAUNCHED THIS WEEK: [X]

BEST DAY: [Day] — $[X.XX]
WORST DAY: [Day] — $[X.XX]

MONTH TO DATE: $[X.XX] / $[Goal] goal ([X]%)

INSIGHTS:
• [One observation about what worked]
• [One observation about what didn't]
• [One recommendation for next week]

Revenue Log Format

Log all data to systems/feedback/revenue-data.json:

{
  "log": [
    {
      "date": "2026-03-18",
      "gumroad": {
        "sales_count": 0,
        "revenue": 0.00,
        "products": []
      },
      "kdp": {
        "units": 0,
        "royalties": 0.00,
        "kenp_pages": 0
      },
      "etsy": {
        "orders": 0,
        "revenue": 0.00
      },
      "total": 0.00
    }
  ]
}

Month-End Report

On the last day of each month:

📅 MONTHLY REVENUE REPORT — [Month Year]

TOTAL REVENUE: $[X.XX]
vs Prior Month: $[X.XX] ([+/-X%])

BREAKDOWN:
  Gumroad: $[X.XX] ([X]% of total)
  KDP:     $[X.XX] ([X]% of total)
  Etsy:    $[X.XX] ([X]% of total)

PRODUCTS (ranked by revenue):
  1. [Product] — $[X.XX]
  2. [Product] — $[X.XX]
  ...

DAYS WITH SALES: [X] / [X] days
BEST DAY: [Date] — $[X.XX]
AVERAGE DAY: $[X.XX]

GOAL STATUS: $[X.XX] / $[Goal] = [X]%
NEXT MONTH GOAL: $[X.XX]

ACTION ITEMS FOR NEXT MONTH:
• [Based on data — what to double down on]
• [What underperformed and why]
• [New products or promotions to try]

Telegram Alert Format

When sending to Telegram, keep it short:

Daily (sent each morning):

💰 Yesterday: $X.XX
📦 Gumroad: X sales | KDP: X units | Etsy: X orders
📈 MTD: $X.XX

Spike alert: Send full spike alert message (see above) Drop alert: Send full drop alert message (see above)


Commands / Triggers

  • "Revenue report" → Today's daily summary
  • "Weekly report" → Full weekly breakdown
  • "Monthly report" → Full month summary
  • "How are sales?" → Quick daily summary
  • "Gumroad sales" → Gumroad only
  • "KDP sales" → KDP only
  • "How much this month?" → MTD total
  • "Revenue last 30 days" → 30-day summary
  • "Set revenue goal $X" → Update config
  • "Any alerts?" → Check for anomalies now

Comments

Loading comments...