← Về thư mục
📄 / / root / .hermes / skills / operate / brand-monitoring / SKILL.md

name: brand-monitoring description: Workflow for designing and deploying automated brand health and crisis monitoring systems.


Brand Monitoring Setup

Workflow for designing and deploying automated brand health and crisis monitoring systems.

Trigger

Use this skill when a user wants to track mentions, reputation, or crisis signals for one or more brands across public web sources.

Workflow

1. Brand Scope & Entity Mapping

2. Public Source Mapping (Tiered)

Avoid private APIs or logged-in content. Focus on public accessibility.

Tier Source Type Method Example
Tier A Aggregators RSS / Search RSS Google News RSS (use site: operator to fetch domains blocked by WAF)
Tier B High-Authority News Tag pages / RSS VietnamPlus, Tuổi Trẻ, VnExpress
Tier C Public Social/Web Scrape / Public API YouTube public, FB public pages
Tier D Academic/Formal REST API / Search OpenAlex, SSRN

Feasibility & WAF (Azure/Cloudflare 403): - Official university/brand websites often aggressively block direct scrapers. - Solution: Do not attempt direct scraping or bypass. Use Google News RSS query with the site:domain.edu.vn operator. Google crawls them easily, and the RSS output exposes title, source, publication date, and link without WAF risk. - VietnamPlus RSS: Standard RSS endpoint may return 404. Fall back to parsing the public tag pages directly (vietnamplus.vn/tags/<tag>.vnp), which return a stable 200 OK. - VnExpress search: Can block custom headers with 406. Fall back to parsing the general RSS feeds.

Social Media Collection (via Google News RSS Workaround)

Social platforms (Facebook, Threads, TikTok) do not offer free public keyword-search APIs. Use Google News RSS with the site: operator as a workaround.

Approach: - Query format: https://news.google.com/rss/search?q=site:{platform_domain}+{keyword}&hl=vi&gl=VN&ceid=VN:vi - Keywords must be URL-encoded with urllib.parse.quote() — Vietnamese characters and spaces break feedparser otherwise. - Use platform-specific keyword lists: broader for Facebook, stricter for TikTok.

Platform Behaviour: | Platform | Query Domain | Result Quality | Notes | |:---|:---|:---|:---| | Facebook | site:facebook.com | Good | Google indexes many public Facebook posts. Filter Vietnam-specific content with keyword matching on title+snippet. | | TikTok | site:tiktok.com | Fair — noisy | Returns TikTok video pages but mixed with unrelated hashtag content. Apply strict title+country filters (e.g. require "Việt Nam" or "FUV" in title). | | Threads | site:threads.net | Poor — no results | Google does not meaningfully index Threads content as of mid-2026. No workaround available without dedicated scraping. |

Content Filtering (Vietnam-specific): - Global "Fulbright" mentions dominate Facebook/TikTok (scholarship programs worldwide). - Always combine with a VN_KEYWORDS list: ["việt nam", "vietnam", "tphcm", "hcmc", "saigon", "hồ chí minh", "fuv", "fsppm", "đại học fulbright"] - Apply the filter by checking if any keyword appears in the lowercase title + " " + snippet combined string. - Hub posts (short titles with #Hashtag patterns) should also be rejected.

Pitfall: facebook-scraper library fails on modern Facebook: - The facebook-scraper Python package depends on requests-html which in turn depends on lxml.html.clean, now split into a separate lxml_html_clean package. Expect ImportError on fresh installs. - Even after fixing the import, the library may return zero results due to Facebook API changes and aggressive bot detection. - Conclusion: Do not rely on facebook-scraper. The Google News RSS workaround is the only reliably working method for keyword-based Facebook monitoring without API credentials.

3. Pipeline Design (End-to-End)

Source Intake -> Normalize -> Deduplicate -> Relevance Score -> Sentiment Score -> Crisis Gate -> Deliver.

4. Crisis-First Delivery Logic

Crisis management is the primary goal, not just coverage.

Reporting & Digest Requirements (Mandatory)

Weekly Digest: Scheduled summary (e.g., Mon/Wed/Fri 9AM) prioritizing Negative -> Neutral -> Positive.

Weekly Digest: Scheduled summary (e.g., Mon/Wed/Fri 9AM) prioritizing Negative -> Neutral -> Positive.

Pitfalls & Lessons