← Về thư mục
name: brand-monitoring-automation
description: Build and operate brand monitoring pipelines that fetch news/social sources, score/filter mentions, generate reports, and send only final digests to Telegram.
Brand Monitoring Automation
Use this skill when maintaining a brand monitoring system that combines RSS/news collection, social keyword scraping, relevance filtering, weekly reporting, and Telegram digest delivery.
Core workflow
- Fetch sources into a local DB silently.
- Normalize, dedupe, score relevance, and classify sentiment.
- Apply a strict time window before processing.
- Generate one final digest for Telegram and one report file for weekly review.
- Keep intermediate steps off the user-facing thread.
Important rules
- Only the final announcement should be posted to the Telegram monitoring thread.
- Fetch, filter, and scoring steps must run in the background with no thread updates unless explicitly requested.
- DANGER: Do not rely on LLM memory for dates. BẮT BUỘC use
execute_code to calculate dynamic search windows (e.g., after:YYYY-MM-DD) to avoid pulling ancient (2016-2021) or "fabricated" news.
- Format: Every digest item MUST include
[Ngày đăng], a concise impact summary, a clickable URL source, and a clear Tier/Risk classification.
- Weekly reports should be written to disk first, then announced via Tailscale Funnel link.
- A delivery test is not a placeholder ping. A real test must run the same end-to-end path as the scheduled job: fetch the relevant window, filter and dedupe, build the final digest, then send only that final digest.
- If a user moves the workflow to an official automation blueprint, remove or disable any older hand-built Kanban boards, cron jobs, and scripts that would duplicate the same output.
- Do not assume a named automation blueprint exists just because a prompt or conversation names it. Verify the slash command, blueprint definition, or cron job record before claiming it is installed.
Time-window guidance
For cadence-based jobs, use a window that matches the schedule (e.g., 72 hours for a 3-day cycle). Use execute_code to verify the delta.
Telegram delivery guidance
- Send a single final digest rather than per-item chatter.
- Use Tailscale Funnel URLs (
https://vmi3427693.tail8c1aaf.ts.net/files/...) for all reports.
- Never route cron stdout/stderr to the public monitoring thread (set
deliver: local in cron).
Social scraping guidance
- Keyword-based social collection should be scoped to the business context, not broad brand name matching alone.
- Prefer context filters such as product, program, location, or institutional names when brand terms are overloaded.
- If public search surfaces are noisy, narrow by geography and institutional context before scoring.
Pitfalls
- A fixed 72-hour window can be valid for catch-up, but it is not automatically correct for every cadence.
- Broad brand keywords often pull in global or unrelated communities.
- Cron jobs with origin delivery can leak intermediate logs into the wrong thread.
- Do not post per-source or per-item updates to the Telegram thread when the user asked for only the final announcement.
Verification
Before marking the workflow ready:
- Confirm the digest target is the correct Telegram chat/thread.
- Confirm the cron job delivery mode does not emit intermediate logs to the thread.
- Confirm the report file is written successfully before announcement.
- Confirm the live digest only contains the intended time window and context-specific items.
Support files
references/telegram-thread-routing.md — thread delivery lessons and cron delivery pitfalls.
scripts/test_digest_window.py — deterministic check for date-window boundaries and digest scoping.