{"id":"46831e1a-b282-4955-a15d-ce1f7a012338","shortId":"WBQ9W2","kind":"skill","title":"brand-monitor","tagline":"Reddit brand & market intelligence engine. AI-powered onboarding — give it a brand name and it auto-generates the monitoring strategy. Supports multi-brand, layered subreddit monitoring, real-time alerts, and daily digests. Triggers on \"/brand-monitor\", \"monitor [brand]\", \"check ","description":"# Brand Monitor — Reddit Brand & Market Intelligence Engine\n\nAI-powered brand monitoring system. Give it a brand name and it auto-generates a complete monitoring strategy — subreddit tiers, keywords, competitors, urgency rules. Then it runs on cron, scanning Reddit, analyzing sentiment, and pushing alerts + daily digests.\n\n---\n\n## Architecture\n\n```\nPhase 1: Brand Onboarding (one-time per brand)\n  User says \"monitor DJI\" → Agent analyzes website → generates monitoring plan → user confirms → saved to config\n\nPhase 2: Continuous Monitoring (cron-driven, every 4h)\n  Read config → curl Reddit JSON → deduplicate → AI analysis → alert or archive\n\nPhase 3: Reporting (cron-driven, daily/weekly)\n  Aggregate results → generate digest → send via Telegram\n```\n\n---\n\n## Phase 1: Brand Onboarding\n\nWhen user says \"monitor [brand]\" or \"help me monitor [brand]\":\n\n### Step 1 — Analyze the Brand\n\n1. Ask user for the brand website URL if not provided (or search for it)\n2. Use `web_fetch` to visit the brand's website\n3. Extract:\n   - Brand name (English + local name if applicable)\n   - Product lines and sub-brands\n   - Main product categories\n   - Target market / use cases\n4. Infer competitors based on industry knowledge + web context\n5. Infer common user pain points based on product category\n\n### Step 2 — Generate Tiered Monitoring Plan\n\nBuild a three-tier subreddit + keyword strategy:\n\n**Tier A — Core (brand-specific communities)**\n- Search for `r/{brand}` and related subreddits\n- Keywords: pain points + opportunity words (no brand name needed since the community IS about the brand)\n- Scan interval: every 4 hours\n- Example for DJI: r/dji, r/djimini → keywords: flyaway, gimbal issue, firmware bug...\n\n**Tier B — Category (industry communities)**\n- Search for subreddits matching the product category\n- Keywords: brand name + product names\n- Scan interval: every 8 hours\n- Example for DJI: r/drones, r/DronePhotography → keywords: DJI, Mavic, Avata...\n\n**Tier C — Interest (broad interest communities)**\n- Subreddits based on product application scenarios\n- Keywords: brand name only (cast wide net)\n- Scan interval: every 24 hours\n- Example for DJI: r/travel, r/Filmmakers → keywords: DJI, Mavic, Osmo...\n\n### Step 3 — Present Plan to User\n\nSend the monitoring plan for confirmation:\n\n```\nBrand Monitor Plan — [Brand Name]\n\nA. Core Communities (scan every 4h):\n  - r/xxx — keywords: pain1, pain2, pain3...\n\nB. Category Communities (scan every 8h):\n  - r/aaa — keywords: brand1, product1, product2...\n\nC. Interest Communities (scan every 24h):\n  - r/ccc — keywords: brand1, product1\n\nCompetitors: Competitor1, Competitor2\nCritical keywords: recall, injury, lawsuit, class action, fire, explode\n\nReply \"OK\" to start monitoring, or tell me what to change.\n```\n\n### Step 4 — Save Config\n\nOn user confirmation, write the brand profile to `memory/brand-monitor-config.json`.\n\nProfile structure:\n```json\n{\n  \"brand_name\": \"DJI\",\n  \"display_name\": \"DJI\",\n  \"website\": \"https://www.dji.com\",\n  \"enabled\": true,\n  \"created_at\": \"2026-01-01T12:00:00+08:00\",\n  \"tiers\": {\n    \"A\": {\n      \"subreddits\": [\"dji\", \"djimini\"],\n      \"keywords\": {\n        \"pain\": [\"flyaway\", \"gimbal issue\", \"firmware bug\"],\n        \"opportunity\": [\"love my\", \"best purchase\", \"recommend\"]\n      },\n      \"scan_interval_hours\": 4\n    },\n    \"B\": {\n      \"subreddits\": [\"drones\", \"DronePhotography\"],\n      \"keywords\": {\n        \"brand\": [\"DJI\", \"Mavic\", \"Avata\", \"Air 3\"]\n      },\n      \"scan_interval_hours\": 8\n    },\n    \"C\": {\n      \"subreddits\": [\"travel\", \"Filmmakers\"],\n      \"keywords\": {\n        \"brand\": [\"DJI\", \"Mavic\", \"Osmo\"]\n      },\n      \"scan_interval_hours\": 24\n    }\n  },\n  \"competitors\": [\"Autel\", \"Skydio\", \"Parrot\"],\n  \"urgency_rules\": {\n    \"critical_keywords\": [\"recall\", \"injury\", \"lawsuit\", \"class action\", \"fire\", \"explode\", \"dangerous\", \"safety hazard\"],\n    \"high_score_threshold\": 50,\n    \"high_comment_threshold\": 20\n  }\n}\n```\n\nAfter saving, immediately run a first scan and report a summary to the user.\n\n---\n\n## Phase 2: Continuous Monitoring (Cron-Driven)\n\n### Data Collection\n\nOn each cron wake:\n\n1. Read `memory/brand-monitor-config.json` — if no profiles exist, reply `HEARTBEAT_OK`\n2. Read `memory/brand-monitor-state.json` for last scan timestamps\n3. For each enabled brand, check which tiers are due based on `scan_interval_hours`\n4. For due tiers, fetch posts from Reddit JSON API:\n\n```bash\n# Tier A: search pain/opportunity keywords within brand community\ncurl -s -H \"User-Agent: BrandMonitor/1.0\" \\\n  \"https://www.reddit.com/r/{subreddit}/search.json?q={keywords_OR_joined}&restrict_sr=1&sort=new&t=day&limit=25\"\n\n# Tier B/C: search brand keywords within category/interest community\ncurl -s -H \"User-Agent: BrandMonitor/1.0\" \\\n  \"https://www.reddit.com/r/{subreddit}/search.json?q={brand_keywords_OR_joined}&restrict_sr=1&sort=new&t=day&limit=25\"\n```\n\n**Rate limiting:** 3 seconds between requests, max 15 requests per cron run.\n\n### Deduplication\n\nCompare each post's `id` against `seen_posts` in state file. Window: 72 hours.\n\n### AI Analysis\n\nFor each new post, analyze and produce:\n\n```json\n{\n  \"post_id\": \"t3_xxxxx\",\n  \"subreddit\": \"dji\",\n  \"tier\": \"A\",\n  \"title\": \"Post title\",\n  \"score\": 42,\n  \"num_comments\": 23,\n  \"url\": \"https://reddit.com/r/dji/comments/xxxxx\",\n  \"created_utc\": 1708300000,\n  \"sentiment\": \"negative\",\n  \"intent\": \"bug_report\",\n  \"urgency\": \"high\",\n  \"summary\": \"One-line summary\",\n  \"affected_product\": \"Mini 4 Pro\",\n  \"competitor_mentioned\": null,\n  \"recommended_action\": \"Suggested action\"\n}\n```\n\n**Sentiment values:** negative, positive, neutral, mixed  \n**Intent values:** bug_report, cs_issue, feature_request, positive_showcase, newbie_question, competitor_comparison, buyer_signal, market_insight, general_discussion  \n**Urgency values:** critical, high, medium, low\n\n### Alert Routing\n\n| Urgency | Action |\n|---------|--------|\n| critical | IMMEDIATELY send alert |\n| high | IMMEDIATELY send alert |\n| medium | Archive to daily results, include in digest |\n| low | Archive to daily results only |\n\n### Alert Format (critical/high)\n\n```\nBrand Alert — [Brand Name]\n\nSeverity: [CRITICAL/HIGH]\nPost: [Title] (score: X, comments: Y)\nIntent: [Bug Report / CS Issue / etc.]\nSummary: [one-line summary]\nProduct: [affected product or \"General\"]\nAction: [recommended action]\nLink: https://reddit.com/r/xxx/comments/xxx\n\nReply \"dig deeper\" to analyze comments, or \"draft reply\" to generate a brand response.\n```\n\n---\n\n## Phase 3: Reporting\n\n### Daily Digest\n\nFor each enabled brand with results:\n\n```\n[Brand Name] Daily Digest — YYYY-MM-DD\n\nNegative (N):\n  1. [intent] Title — score/comments\n\nPositive (N):\n  1. [intent] Title — score/comments\n\nBuyer Signals (N):\n  - [summary]\n\nTrends:\n  - Top discussed topics\n  - Sentiment shift vs last 7 days\n  - Competitor mentions\n\nInsights:\n  - Agent's analysis and recommendations\n```\n\n### Weekly Report\n\n```\n[Brand Name] Weekly Report\n\nOverview:\n  - Total posts scanned: X\n  - Alerts triggered: Y (Z critical)\n  - Sentiment distribution: +N% / -N% / ~N%\n\nTrends, Competitor Watch, Product Line Breakdown, Recommendations...\n```\n\n---\n\n## Interactive Commands\n\n| User Says | Agent Does |\n|-----------|-----------|\n| \"monitor [brand]\" | Start onboarding flow |\n| \"check [brand]\" | Run immediate full scan |\n| \"dig deeper [post_url]\" | Fetch all comments, deep sentiment analysis |\n| \"draft reply [post_url]\" | Generate brand-appropriate response draft |\n| \"daily digest\" | Generate and send today's digest immediately |\n| \"weekly report\" | Generate and send weekly report immediately |\n| \"pause [brand]\" | Set brand.enabled = false |\n| \"resume [brand]\" | Set brand.enabled = true |\n| \"monitor list\" | List all brand profiles with status |\n\n---\n\n## File Locations\n\n| File | Purpose |\n|------|---------|\n| `memory/brand-monitor-config.json` | Brand profiles, subreddits, keywords, settings |\n| `memory/brand-monitor-state.json` | Scan timestamps, seen posts, daily results, stats |\n| `memory/brand-monitor-assets.json` | Saved UGC candidates, positive showcases |\n\n---\n\n## Cron Schedule\n\n| Job | Schedule | Purpose |\n|-----|----------|---------|\n| Reddit Scan | Every 4h | Fetch new posts, analyze, alert |\n| Daily Digest | Daily 09:00 (your TZ) | Aggregate and send results |\n\n---\n\n## Edge Cases\n\n### Reddit API Rate Limited\nStop scanning, save progress, retry on next cron cycle.\n\n### Multiple Brands\nEach brand is an independent profile. Cron processes them sequentially. Prioritize Tier A across all brands if approaching request limits.\n\n### Overlapping Subreddits\nIf two brands monitor the same subreddit, scan it once and apply results to both based on keyword matching.","tags":["brand","monitor","claude","agent","skills","phy041","agent-skills","ai-agents","automation","founder","indie-hacker","openclaw"],"capabilities":["skill","source-phy041","skill-brand-monitor","topic-agent-skills","topic-ai-agents","topic-automation","topic-claude","topic-founder","topic-indie-hacker","topic-openclaw","topic-social-media"],"categories":["claude-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/PHY041/claude-agent-skills/brand-monitor","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add PHY041/claude-agent-skills","source_repo":"https://github.com/PHY041/claude-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 13 github stars · SKILL.md body (8,656 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T13:03:31.711Z","embedding":null,"createdAt":"2026-04-19T00:41:05.712Z","updatedAt":"2026-04-22T13:03:31.711Z","lastSeenAt":"2026-04-22T13:03:31.711Z","tsv":"'+08':467 '-01':462,463 '/brand-monitor':42 '/r/':632,665 '/r/dji/comments/xxxxx':738 '/r/xxx/comments/xxx':861 '/search.json':634,667 '00':465,466,468,1071 '09':1070 '1':95,153,167,171,572,641,675,897,903 '15':689 '1708300000':741 '2':119,186,238,560,582 '20':544 '2026':461 '23':734 '24':350,518 '24h':405 '25':647,681 '3':139,196,362,501,589,684,877 '4':218,284,434,490,604,757 '42':731 '4h':126,383,1061 '5':227 '50':540 '7':919 '72':707 '8':317,505 '8h':394 'across':1108 'action':419,531,763,765,801,855,857 'affect':754,851 'agent':107,628,661,924,961 'aggreg':145,1074 'ai':10,54,133,709 'ai-pow':9,53 'air':500 'alert':36,90,135,798,805,809,824,828,940,1066 'analysi':134,710,926,983 'analyz':86,108,168,715,866,1065 'api':613,1081 'appli':1128 'applic':204,338 'approach':1112 'appropri':991 'architectur':93 'archiv':137,811,819 'ask':172 'autel':520 'auto':21,67 'auto-gener':20,66 'avata':327,499 'b':298,389,491 'b/c':649 'base':221,233,335,599,1132 'bash':614 'best':484 'brand':2,5,16,29,44,46,49,56,62,96,102,154,160,165,170,176,193,198,210,255,261,271,280,310,341,373,376,442,449,496,511,593,621,651,669,827,829,874,884,887,931,964,969,990,1012,1017,1025,1034,1094,1096,1110,1119 'brand-appropri':989 'brand-monitor':1 'brand-specif':254 'brand.enabled':1014,1019 'brand1':397,408 'brandmonitor/1.0':629,662 'breakdown':955 'broad':331 'bug':296,480,745,774,840 'build':243 'buyer':786,907 'c':329,400,506 'candid':1050 'case':217,1079 'cast':344 'categori':213,236,299,308,390 'category/interest':654 'chang':432 'check':45,594,968 'class':418,530 'collect':567 'command':958 'comment':542,733,837,867,980 'common':229 'communiti':257,276,301,333,380,391,402,622,655 'compar':695 'comparison':785 'competitor':76,220,410,519,759,784,921,951 'competitor1':411 'competitor2':412 'complet':70 'config':117,128,436 'confirm':114,372,439 'context':226 'continu':120,561 'core':253,379 'creat':459,739 'critic':413,525,794,802,944 'critical/high':826,832 'cron':83,123,142,564,570,692,1053,1091,1101 'cron-driven':122,141,563 'cs':776,842 'curl':129,623,656 'cycl':1092 'daili':38,91,813,821,879,889,994,1044,1067,1069 'daily/weekly':144 'danger':534 'data':566 'day':645,679,920 'dd':894 'dedupl':132,694 'deep':981 'deeper':864,975 'dig':863,974 'digest':39,92,148,817,880,890,995,1001,1068 'discuss':791,913 'display':452 'distribut':946 'dji':106,288,321,325,354,358,451,454,472,497,512,724 'djimini':473 'draft':869,984,993 'driven':124,143,565 'drone':493 'dronephotographi':494 'due':598,606 'edg':1078 'enabl':457,592,883 'engin':8,52 'english':200 'etc':844 'everi':125,283,316,349,382,393,404,1060 'exampl':286,319,352 'exist':578 'explod':421,533 'extract':197 'fals':1015 'featur':778 'fetch':189,608,978,1062 'file':705,1029,1031 'filmmak':509 'fire':420,532 'firmwar':295,479 'first':550 'flow':967 'flyaway':292,476 'format':825 'full':972 'general':790,854 'generat':22,68,110,147,239,872,988,996,1005 'gimbal':293,477 'give':13,59 'h':625,658 'hazard':536 'heartbeat':580 'help':162 'high':537,541,748,795,806 'hour':285,318,351,489,504,517,603,708 'id':699,720 'immedi':547,803,807,971,1002,1010 'includ':815 'independ':1099 'industri':223,300 'infer':219,228 'injuri':416,528 'insight':789,923 'intellig':7,51 'intent':744,772,839,898,904 'interact':957 'interest':330,332,401 'interv':282,315,348,488,503,516,602 'issu':294,478,777,843 'job':1055 'join':638,672 'json':131,448,612,718 'keyword':75,249,265,291,309,324,340,357,385,396,407,414,474,495,510,526,619,636,652,670,1037,1134 'knowledg':224 'last':586,918 'lawsuit':417,529 'layer':30 'limit':646,680,683,1083,1114 'line':206,752,848,954 'link':858 'list':1022,1023 'local':201 'locat':1030 'love':482 'low':797,818 'main':211 'market':6,50,215,788 'match':305,1135 'mavic':326,359,498,513 'max':688 'medium':796,810 'memory/brand-monitor-assets.json':1047 'memory/brand-monitor-config.json':445,574,1033 'memory/brand-monitor-state.json':584,1039 'mention':760,922 'mini':756 'mix':771 'mm':893 'monitor':3,24,32,43,47,57,71,105,111,121,159,164,241,369,374,426,562,963,1021,1120 'multi':28 'multi-brand':27 'multipl':1093 'n':896,902,909,947,948,949 'name':17,63,199,202,272,311,313,342,377,450,453,830,888,932 'need':273 'negat':743,768,895 'net':346 'neutral':770 'new':643,677,713,1063 'newbi':782 'next':1090 'null':761 'num':732 'ok':423,581 'onboard':12,97,155,966 'one':99,751,847 'one-lin':750,846 'one-tim':98 'opportun':268,481 'osmo':360,514 'overlap':1115 'overview':935 'pain':231,266,475 'pain/opportunity':618 'pain1':386 'pain2':387 'pain3':388 'parrot':522 'paus':1011 'per':101,691 'phase':94,118,138,152,559,876 'plan':112,242,364,370,375 'point':232,267 'posit':769,780,901,1051 'post':609,697,702,714,719,728,833,937,976,986,1043,1064 'power':11,55 'present':363 'priorit':1105 'pro':758 'process':1102 'produc':717 'product':205,212,235,307,312,337,755,850,852,953 'product1':398,409 'product2':399 'profil':443,446,577,1026,1035,1100 'progress':1087 'provid':181 'purchas':485 'purpos':1032,1057 'push':89 'q':635,668 'question':783 'r':260 'r/aaa':395 'r/ccc':406 'r/dji':289 'r/djimini':290 'r/dronephotography':323 'r/drones':322 'r/filmmakers':356 'r/travel':355 'r/xxx':384 'rate':682,1082 'read':127,573,583 'real':34 'real-tim':33 'recal':415,527 'recommend':486,762,856,928,956 'reddit':4,48,85,130,611,1058,1080 'reddit.com':737,860 'reddit.com/r/dji/comments/xxxxx':736 'reddit.com/r/xxx/comments/xxx':859 'relat':263 'repli':422,579,862,870,985 'report':140,553,746,775,841,878,930,934,1004,1009 'request':687,690,779,1113 'respons':875,992 'restrict':639,673 'result':146,814,822,886,1045,1077,1129 'resum':1016 'retri':1088 'rout':799 'rule':78,524 'run':81,548,693,970 'safeti':535 'save':115,435,546,1048,1086 'say':104,158,960 'scan':84,281,314,347,381,392,403,487,502,515,551,587,601,938,973,1040,1059,1085,1124 'scenario':339 'schedul':1054,1056 'score':538,730,835 'score/comments':900,906 'search':183,258,302,617,650 'second':685 'seen':701,1042 'send':149,367,804,808,998,1007,1076 'sentiment':87,742,766,915,945,982 'sequenti':1104 'set':1013,1018,1038 'sever':831 'shift':916 'showcas':781,1052 'signal':787,908 'sinc':274 'skill' 'skill-brand-monitor' 'skydio':521 'sort':642,676 'source-phy041' 'specif':256 'sr':640,674 'start':425,965 'stat':1046 'state':704 'status':1028 'step':166,237,361,433 'stop':1084 'strategi':25,72,250 'structur':447 'sub':209 'sub-brand':208 'subreddit':31,73,248,264,304,334,471,492,507,633,666,723,1036,1116,1123 'suggest':764 'summari':555,749,753,845,849,910 'support':26 'system':58 't12':464 't3':721 'target':214 'telegram':151 'tell':428 'three':246 'three-tier':245 'threshold':539,543 'tier':74,240,247,251,297,328,469,596,607,615,648,725,1106 'time':35,100 'timestamp':588,1041 'titl':727,729,834,899,905 'today':999 'top':912 'topic':914 'topic-agent-skills' 'topic-ai-agents' 'topic-automation' 'topic-claude' 'topic-founder' 'topic-indie-hacker' 'topic-openclaw' 'topic-social-media' 'total':936 'travel':508 'trend':911,950 'trigger':40,941 'true':458,1020 'two':1118 'tz':1073 'ugc':1049 'urgenc':77,523,747,792,800 'url':178,735,977,987 'use':187,216 'user':103,113,157,173,230,366,438,558,627,660,959 'user-ag':626,659 'utc':740 'valu':767,773,793 'via':150 'visit':191 'vs':917 'wake':571 'watch':952 'web':188,225 'websit':109,177,195,455 'week':929,933,1003,1008 'wide':345 'window':706 'within':620,653 'word':269 'write':440 'www.dji.com':456 'www.reddit.com':631,664 'www.reddit.com/r/':630,663 'x':836,939 'xxxxx':722 'y':838,942 'yyyi':892 'yyyy-mm-dd':891 'z':943","prices":[{"id":"26ca1407-3332-4154-94dc-211b494b6e6d","listingId":"46831e1a-b282-4955-a15d-ce1f7a012338","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"PHY041","category":"claude-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-19T00:41:05.712Z"}],"sources":[{"listingId":"46831e1a-b282-4955-a15d-ce1f7a012338","source":"github","sourceId":"PHY041/claude-agent-skills/brand-monitor","sourceUrl":"https://github.com/PHY041/claude-agent-skills/tree/main/skills/brand-monitor","isPrimary":false,"firstSeenAt":"2026-04-19T00:41:05.712Z","lastSeenAt":"2026-04-22T13:03:31.711Z"}],"details":{"listingId":"46831e1a-b282-4955-a15d-ce1f7a012338","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"PHY041","slug":"brand-monitor","github":{"repo":"PHY041/claude-agent-skills","stars":13,"topics":["agent-skills","ai-agents","automation","claude","founder","indie-hacker","openclaw","social-media"],"license":null,"html_url":"https://github.com/PHY041/claude-agent-skills","pushed_at":"2026-02-24T15:25:20Z","description":"Collection of Claude Code Agent Skills for founders, indie hackers, and growth engineers","skill_md_sha":"7eb9dd5d4fcc8147644de14b7679e1c7bf1e915b","skill_md_path":"skills/brand-monitor/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/PHY041/claude-agent-skills/tree/main/skills/brand-monitor"},"layout":"multi","source":"github","category":"claude-agent-skills","frontmatter":{"name":"brand-monitor","description":"Reddit brand & market intelligence engine. AI-powered onboarding — give it a brand name and it auto-generates the monitoring strategy. Supports multi-brand, layered subreddit monitoring, real-time alerts, and daily digests. Triggers on \"/brand-monitor\", \"monitor [brand]\", \"check brand\", \"brand health\", \"market intelligence\"."},"skills_sh_url":"https://skills.sh/PHY041/claude-agent-skills/brand-monitor"},"updatedAt":"2026-04-22T13:03:31.711Z"}}