{"id":"1d21c585-67bb-4ad9-a149-2b89fb08d2fe","entityType":"agent","slug":"clawhub-haiyangchenbj-data-ai-daily-brief","name":"data-ai-daily-brief","canonicalUrl":"https://www.xpersona.co/agent/clawhub-haiyangchenbj-data-ai-daily-brief","canonicalPath":"/agent/clawhub-haiyangchenbj-data-ai-daily-brief","generatedAt":"2026-10-10T02:24:30.560Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":null},"description":"Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief. Skill: data-ai-daily-brief Owner: haiyangchenbj Summary: Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.3K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17672gh0nx9qr7sjp84kz7xen83jv7v:data-ai-daily-brief","sourceUrl":"https://clawhub.ai/haiyangchenbj/data-ai-daily-brief","homepage":"https://clawhub.ai/haiyangchenbj/skills/data-ai-daily-brief","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/haiyangchenbj/data-ai-daily-brief","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/haiyangchenbj/skills/data-ai-daily-brief","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":50,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-c"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":null},"stars":null,"forks":null,"downloads":2285,"packageName":null,"latestVersion":"5.0.4","tractionLabel":"2.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T16:42:16.013Z","lastCrawledAt":"2026-10-09T16:42:16.013Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T16:42:16.013Z","lastVerifiedAt":null,"highlights":[{"version":"5.0.4","createdAt":"2026-09-20T03:58:29.882Z","changelog":"Full-package republish: now includes all 10 delivery-channel scripts, the HTML report template, bilingual READMEs, CHANGELOG and CONTRIBUTING that were missing from earlier uploads. No changes to SKILL.md content except the version bump.","fileCount":19,"zipByteSize":67792},{"version":"5.0.3","createdAt":"2026-09-08T03:13:47.482Z","changelog":"Refresh release: align version number across ClawHub / SkillHub / GitHub, no content changes","fileCount":3,"zipByteSize":11318},{"version":"5.0.2","createdAt":"2026-08-24T06:09:45.927Z","changelog":"Add not_for routing field, Output Format section, and Chinese summary in description (agent-consumption-first design)","fileCount":3,"zipByteSize":11199},{"version":"5.0.1","createdAt":"2026-08-07T06:40:46.071Z","changelog":"- Added Chinese-language description (description_zh) to support multilingual audiences. - Introduced _meta.json for improved metadata management. - Removed skill-card.md to simplify documentation.","fileCount":19,"zipByteSize":67275},{"version":"5.0.0","createdAt":"2026-06-23T03:47:40.938Z","changelog":"v5.0.0 — English-first SKILL.md + industry-agnostic framework with Data+AI default profile; renamed to Industry Daily Brief; backfilled all rules since 4.3.5 (Markdown source links, WeChat summary <=120, expanded Step 4.5 assertions, stale-news guard, stability-first).","fileCount":19,"zipByteSize":67022},{"version":"4.3.5","createdAt":"2026-06-01T04:32:41.670Z","changelog":"v4.3.5: republish to fix display name (Data+AI 中的 + 被推导成 Title Case 时丢失)。内容与 4.3.4 一致：Step 4.5 新增字段名/字段顺序/3 点格式三项断言；Step 6 新增 Windows UTF-8 推送指南。","fileCount":19,"zipByteSize":67257},{"version":"4.3.4","createdAt":"2026-06-01T04:31:37.751Z","changelog":"v4.3.4: Step 4.5 adds field-name compliance + field order + 3-points format assertions to close v4.3 first-run drift loophole. Documents Windows UTF-8 publish guidance for publish.py to avoid GBK emoji crash.","fileCount":19,"zipByteSize":67266},{"version":"4.3.3","createdAt":"2026-05-29T04:19:01.398Z","changelog":"v4.3.3 重大架构重构：三层分离（编辑准则/板块定义/工作流程）+ 两附录（附录 A. MD 格式合约 / 附录 B. 失败处理）。新增 Step 4.5 强制格式预检——生成 MD 后必须输出 N1（条目数）/N2（企微摘要数）/N3（板块数）三个统计数字 + 全部断言，任一 ❌ 一律重生（修复 2026-05-29 LLM 输出格式漂移导致企微推送内容缺失的根因）。头部新增「规则维护准则」防止补丁式叠加。映射维度统一为六维。0 内容删除——v4.2 全部规则、搜索源、案例、教训、模板均已原文归位。","fileCount":17,"zipByteSize":61995}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17672gh0nx9qr7sjp84kz7xen83jv7v:data-ai-daily-brief","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T02:24:30.556Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-haiyangchenbj-data-ai-daily-brief/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":null},"readme":"Skill: data-ai-daily-brief\n\nOwner: haiyangchenbj\n\nSummary: Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief.\n\nTags: latest:5.0.4\n\nVersion history:\n\nv5.0.4 | 2026-09-20T03:58:29.882Z | user\n\nFull-package republish: now includes all 10 delivery-channel scripts, the HTML report template, bilingual READMEs, CHANGELOG and CONTRIBUTING that were missing from earlier uploads. No changes to SKILL.md content except the version bump.\n\nv5.0.3 | 2026-09-08T03:13:47.482Z | user\n\nRefresh release: align version number across ClawHub / SkillHub / GitHub, no content changes\n\nv5.0.2 | 2026-08-24T06:09:45.927Z | user\n\nAdd not_for routing field, Output Format section, and Chinese summary in description (agent-consumption-first design)\n\nv5.0.1 | 2026-08-07T06:40:46.071Z | auto\n\n- Added Chinese-language description (description_zh) to support multilingual audiences.\n- Introduced _meta.json for improved metadata management.\n- Removed skill-card.md to simplify documentation.\n\nv5.0.0 | 2026-06-23T03:47:40.938Z | user\n\nv5.0.0 — English-first SKILL.md + industry-agnostic framework with Data+AI default profile; renamed to Industry Daily Brief; backfilled all rules since 4.3.5 (Markdown source links, WeChat summary <=120, expanded Step 4.5 assertions, stale-news guard, stability-first).\n\nv4.3.5 | 2026-06-01T04:32:41.670Z | user\n\nv4.3.5: republish to fix display name (Data+AI 中的 + 被推导成 Title Case 时丢失)。内容与 4.3.4 一致：Step 4.5 新增字段名/字段顺序/3 点格式三项断言；Step 6 新增 Windows UTF-8 推送指南。\n\nv4.3.4 | 2026-06-01T04:31:37.751Z | user\n\nv4.3.4: Step 4.5 adds field-name compliance + field order + 3-points format assertions to close v4.3 first-run drift loophole. Documents Windows UTF-8 publish guidance for publish.py to avoid GBK emoji crash.\n\nv4.3.3 | 2026-05-29T04:19:01.398Z | user\n\nv4.3.3 重大架构重构：三层分离（编辑准则/板块定义/工作流程）+ 两附录（附录 A. MD 格式合约 / 附录 B. 失败处理）。新增 Step 4.5 强制格式预检——生成 MD 后必须输出 N1（条目数）/N2（企微摘要数）/N3（板块数）三个统计数字 + 全部断言，任一 ❌ 一律重生（修复 2026-05-29 LLM 输出格式漂移导致企微推送内容缺失的根因）。头部新增「规则维护准则」防止补丁式叠加。映射维度统一为六维。0 内容删除——v4.2 全部规则、搜索源、案例、教训、模板均已原文归位。\n\nv4.3.2 | 2026-04-15T04:53:53.839Z | user\n\nFix config filename; add Hard Rules + Failure Handling sections; add step determinism labels; mark channel verification status\n\nv4.3.1 | 2026-04-15T04:34:08.304Z | user\n\nAdd Chinese description; move trigger keywords to read_when\n\nv4.3.0 | 2026-04-15T03:29:11.204Z | user\n\nMerge EN/CN into single package. SKILL.md now bilingual. CN slug deprecated.\n\nv4.2.2 | 2026-04-14T12:18:56.165Z | user\n\nNo changes detected in this version.\n\n- Version bumped from 4.2 to 4.2.2 with no file changes.\n- No new features, fixes, or content updates in this release.\n\nv4.2.1 | 2026-04-14T12:11:02.531Z | user\n\nVersion 4.2.1\n\n- Added .github/FUNDING.yml to support funding and contributions.\n- Added a CHANGELOG.md file to document future changes and improvements.\n\nv4.2.0 | 2026-04-02T05:54:06.559Z | user\n\nExpand-search-coverage:-domestic-institution-keyword-search,-macro-capital-sources,-partner-ecosystem,-policy-sources,-analyst-expansion,-importance-ranking,-WeChat/HTML-differentiated-item-counts\n\nv3.0.0 | 2026-03-20T04:52:51.331Z | user\n\nMajor-restructure:-merge-C+D-into-C.Views-and-Research,-add-D.Capital-and-Corporate,-confidence-levels,-dedup-self-check,-Review-step,-trend-judgment-15-30-chars,-verdict-120-chars,-funding-search\n\nv2.2.0 | 2026-03-18T04:04:30.257Z | user\n\nv2.2-wecom-summary-field-extraction\n\nv2.1.0 | 2026-03-17T06:07:14.900Z | user\n\nNo-truncation-summary-rewrite\n\nv1.0.2 | 2026-03-16T03:51:33.612Z | user\n\n**data-ai-daily-brief 2.0.0 Changelog**\n\n- 3-phase search strategy (targeted → expanded → source tracing)\n- 3-layer summary extraction with byte-level truncation\n- Monday 72h time window for weekend coverage\n- Anti-duplicate push lock mechanism\n- Source attribution enforcement for every news item\n\nv1.0.1 | 2026-03-13T05:07:59.974Z | user\n\n- Added .github/FUNDING.yml to enable funding links.\n- Refined SKILL.md with stricter information sourcing and acceptance principles: \"宁缺毋滥\" (quality over quantity), with clearer requirements to leave Product & Tech sections blank if lacking qualified updates.\n- Enhanced Analyst Insights section: now explicitly includes global and domestic research institutions, and mandates that all securities analyst reports be categorized here, not under product or tech.\n- Updated workflow for WeChat Work (企业微信): summary no longer includes hyperlinks—sources are text only, and links appear only in HTML version.\n- Clarified content acceptance rules and board categories to improve reporting precision and transparency.\n\nv1.0.0 | 2026-03-12T06:11:12.096Z | auto\n\n- Initial release of the AI-powered daily industry brief generator.\n- Automates searching, filtering, writing, and structured delivery of high-quality Data+AI daily briefs.\n- Strict filtering: Only impactful, first-hand news relevant to data platforms included; excludes generic AI and secondary sources.\n- Supports customizable coverage for multiple industries (FinTech, HealthTech, Cybersecurity, etc.) via config.\n- Generates professional briefs in Markdown and HTML formats, applying a detailed, structured report template.\n- Built-in support for push notifications across 9 major channels, including WeChat Work, DingTalk, Feishu, Slack, Discord, Telegram, Teams, Email, and GitHub Pages.\n\nArchive index:\n\nArchive v5.0.4: 19 files, 67792 bytes\n\nFiles: _meta.json (138b), assets/report-template.html (5625b), CHANGELOG.md (11449b), cn_description.txt (251b), CONTRIBUTING.md (1936b), README_zh.md (17444b), README.md (17219b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2442b), SKILL.md (21914b)\n\nFile v5.0.4:SKILL.md\n\n---\nslug: data-ai-daily-brief\ndisplayName: Data AI Daily Brief\nname: data-ai-daily-brief\nversion: \"5.0.4\"\ndescription: >\n  Turn any industry into a daily intelligence briefing. An AI agent searches,\n  filters, writes, and delivers structured daily briefs to 9 channels — with\n  machine-checked formatting and a business review gate. Ships with a Data+AI\n  profile out of the box; switch to any domain via config.\n  中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道，\n  含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief.\ndescription_zh: \"行业日报生成器：将任意行业转为每日情报简报，AI agent 搜索、筛选、编写并投递至 9 个渠道，含机器格式校验与业务评审门禁；自带 Data+AI 配置，可切换任意领域。\"\nnot_for:\n  - One-off research reports or market analysis (daily recurring briefs focus)\n  - Real-time alerting or breaking-news push (batched daily digest)\n  - Original investigative journalism (aggregation and synthesis of existing sources)\n  - Publishing without the business review gate (the gate cannot be skipped)\n\nread_when:\n  - daily brief\n  - industry report\n  - industry newsletter\n  - intelligence brief\n  - 日报\n  - 行业日报\n  - 情报简报\nallowed-tools:\n  - read_file\n  - write_to_file\n  - replace_in_file\n  - execute_command\n  - web_search\n  - web_fetch\ndisable: false\n---\n\n# Industry Daily Brief\n\nAn AI-driven skill that generates a high-quality industry intelligence brief: it automatically searches, filters, writes, and delivers a structured daily report. It ships with a **Data+AI profile** as the working example, and can be switched to **any industry** through the configuration file.\n\n> **How to read this document**\n> The **Workflow**, **Confidence Tiers**, **Section Definitions**, **Format Contract**, and **Hard Rules** below are **industry-agnostic** — they are the engine. Everything inside a block marked **`[Default Profile: Data+AI]`** is an **example configuration** (vendor lists, search queries, focus areas) that you replace when targeting another domain. Do not treat the Data+AI specifics as part of the framework.\n\n## Workflow\n\nWhen the user requests a daily brief, execute the following steps in order.\n\n### Step 1: Confirm Configuration [Deterministic]\n\n1. Read the workspace `config.json` (if present).\n2. If absent, initialize defaults via `scripts/init_config.py`.\n3. Confirm the target date (default: today) and the output channels.\n\n### Step 2: Collect & Filter Information [Deterministic + LLM]\n\nUse `web_search` to gather information, applying the following priorities and filters.\n\n#### Core Principles\n\n**Relevance first, filter ruthlessly.** Every item must clearly answer: *does this affect the product roadmap, architecture, cost structure, governance, operational efficiency, or real-world adoption within the target industry?* If the answer is not a clear **yes**, exclude it.\n\n**Less is more.** Never lower the admission bar just because a section has few items. The value of the brief is precision, not item count.\n\n#### Three-Phase Search Strategy\n\n**Phase 1 — Targeted first-hand source search (mandatory).**\nFor each Tier-1 vendor in the active profile, search its official channels (site blog, release notes, GitHub releases, press wires) one by one. Also run dedicated funding / M&A / earnings queries for the tracked companies.\n\n**Phase 2 — Expanded discovery (supplementary coverage).**\nBroaden with topic keyword searches across the profile's focus areas and the date range, to catch items the targeted search missed.\n\n**Phase 3 — Source tracing (mandatory).**\nFor any item discovered via secondary media, use `web_fetch` or an additional `site:` search to trace it back to a first-hand source. Items with no traceable first-hand source are flagged **⚠️ unverified** or demoted to the Watchlist.\n\n**Coverage requirement:** every Tier-1 vendor in the active profile must receive at least one targeted search.\n\n#### Recency Window (red line)\n\n**Weekdays (Tue–Fri):** strictly cover only information **first published within the last 24 hours** (08:00 the previous day → 08:00 today, target timezone).\n\n**Monday special rule:** the window expands to **72 hours** (Friday 08:00 → Monday 08:00), covering Fri–Sun. Monday item cap is raised, and the title is marked as covering the weekend.\n\n⚠️ **Recency red line — never admit any of the following:**\n- Information whose original publish date falls outside the current window\n- Information that appeared in a previous brief\n- Stale announcements from days or weeks ago\n- Pre-announced schedules (conferences/summits) that are not a *today* first disclosure\n\n✅ **How to verify recency:**\n1. Check the original page's publish date.\n2. If it falls outside the window → exclude.\n3. Before writing, list each candidate's publish date and confirm item by item.\n\n> **Stale-news guard:** a \"big news\" item surfacing in search results must have its *original* publish date independently confirmed before admission — search ranking is not recency.\n\n#### `[Default Profile: Data+AI]` — Focus, Vendors, Sources\n\n> Replace this entire block when targeting another industry.\n\n**Focus areas:** big data, data platforms, data infrastructure, data governance, data engineering, lakehouse architecture, query engines, stream/batch processing, vector search infrastructure, open-source data ecosystem. AI items are admitted **only when they clearly affect the data platform**.\n\n**Strictly exclude:** pure-AI news (model releases, benchmarks, consumer AI), AI items with no direct data-platform link, secondhand financial/mass-media analysis, content farms / clickbait / unsourced rewrites.\n\n**Tier-1 vendors:** AWS, Google Cloud, Microsoft Azure, Databricks, Snowflake, Alibaba Cloud, Tencent Cloud, Huawei Cloud, Volcengine.\n**Tier-2 vendors:** Confluent, MongoDB, Elastic, ClickHouse, Cloudera, Starburst/Trino, dbt Labs, Fivetran, Airbyte, Dataiku, Palantir, Baidu AI Cloud, JD Cloud.\n**Chip vendors (only if directly data-platform related):** NVIDIA, Intel, AMD.\n\n**Open-source projects:** Iceberg, Hudi, Paimon, Delta Lake, Trino, Spark, Flink, Ray, Airflow, Kafka, dbt, ClickHouse, DuckDB, Milvus, Weaviate, Lance/LanceDB, StarRocks, Doris, SeaTunnel, Amoro.\n\n**Funding/IR sources:** SiliconANGLE Big Data, DBTA, InfoQ, PR Newswire, Business Wire, SEC EDGAR, company IR pages, Crunchbase News, CB Insights, PitchBook News, TechCrunch Venture.\n\n**Analyst firms:** Gartner, Forrester, IDC, a16z, Sequoia, Bessemer, Futurum Group, Constellation Research, Wikibon/SiliconANGLE Research; plus regional research institutes and policy/standards bodies relevant to the market.\n\n**Source rules:** accept only first-hand sources (official sites/blogs/release notes, GitHub repos, original posts on X/LinkedIn/blogs, earnings-call transcripts, analyst reports, PR Newswire/Business Wire). Do **not** accept secondhand financial-media analysis (analyst reports excepted).\n\n### Step 3: Write the Brief [LLM]\n\nProduce a professional brief for practitioners in the target industry, based only on the filtered items.\n\n#### Confidence Tiers\n\n- **Level A — confirmed fact:** first-hand source (official site/blog, GitHub release, earnings filing, live event). → may go into A / B / C / D.\n- **Level B — high-trust secondary:** reliable media (Reuters, Bloomberg, TechCrunch) but no first-hand doc yet. → may cautiously go into A / C with a \"media report / no official filing\" label; prefer the Watchlist.\n- **Level C — indirect signal / unverified rumor:** social leaks, community chatter, unmerged-PR speculation. → Watchlist only.\n\n#### Deduplication\n\nEach item belongs to exactly one primary section. Priority: A > B > C > D > E. **Mandatory self-check:** after writing all sections, list every event/source/product name and check for cross-section duplicates. If one event appears in two or more sections, keep the highest-priority section and delete or reduce the rest to a one-line reference (≤15 chars).\n\n#### Title & Opening\n\nTitle format: `# <Brand> Daily Brief | YYYY-MM-DD` (Monday marked as covering the weekend).\n\n**Fixed opening structure:**\n```markdown\n**Top 3 takeaways:**\n1. [a single trend judgment — direction not full event, 15–30 chars]\n2. [a single trend judgment — direction not full event, 15–30 chars]\n3. [a single trend judgment — direction not full event, 15–30 chars]\n\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]\n```\n\n**Key distinction:** the \"Top 3 takeaways\" are *not* a summary of Top Signals nor three event headlines. They are three cross-event \"directions worth taking away today.\"\n\n**Hard constraints:**\n- Each takeaway 15–30 chars; no full product names, version numbers, or specific figures; no bold.\n- A good takeaway lets the reader grasp *what direction changed* and *so what*.\n\n**Verdict constraints:** ≤120 chars; a directional judgment, not a repeat of the takeaways or of Section A event details.\n\n**Self-check:** after writing the 3 takeaways, cover Section A and read only the takeaways. If the reader can reconstruct each Section A headline and key figure from them, the takeaways read too much like a summary — rewrite.\n\n#### Sections\n\nThe five sections use **English titles** and are mandatory (a section may be empty but its header stays).\n\n**A. Top Signals (3 items).** The day's most important events; first-hand source required.\n```markdown\n### 1. Event title\n**来源：** [specific source](url)\n**摘要：** 2–3 sentences\n**为什么对数据平台重要：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**B. Product & Tech (0–6 items, less-is-more).** Strictly product & tech moves in the target industry. Each item: title, source, summary (1–2 sentences), impact judgment, WeChat summary.\n\n**C. Views & Research (0–5 items).** Two kinds of high-value content: original views from key people (founders/CEOs/CTOs in interviews, talks, blogs, X, LinkedIn) and formal research from high-credibility institutions (Gartner/Forrester/IDC/Omdia/etc., regional research bodies, top brokerages), plus officially-released policy & standards relevant to the industry. Each item: name, source, core view, mapping-to-industry judgment, WeChat summary.\n\n**D. Capital & Corporate (0–4 items, less-is-more).** Capital/company events directly relevant to the industry, with inline type tags: **【Funding】 / 【Earnings】 / 【IPO】 / 【M&A】**.\n```markdown\n### 1. 【Funding】Event title\n**来源：** [specific source](url)\n**核心数据：** amount / valuation / revenue / growth\n**摘要：** 2–3 sentences\n**对数据平台的影响：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**E. Watchlist (1–3 items).** Three kinds: **【Preview】** upcoming events, **【Demoted】** valuable items not meeting A–D bars, **【Tracking】** follow-ups whose impact is still unverified. Each item: title, source, why it's worth watching, what signal to wait for, WeChat summary.\n\n#### WeChat-Summary Field (all sections)\n\nAfter all detailed fields, every item must carry one line: `> 企微摘要：one-sentence semantic compression`.\n\nRules:\n- Semantic compression of the whole item, **≤120 chars**.\n- A standalone, self-contained complete sentence.\n- No links, no source labels.\n- **Markdown only** — never rendered in the HTML output.\n\n> The `**来源：**` and `> 企微摘要：` field markers are kept in their original Chinese form because the WeChat-push and HTML-conversion scripts (`scripts/`) parse these exact strings. When localizing the brief to another language, keep these two markers as-is or update the scripts in lockstep.\n\n#### Output Requirements\n\n- **Rank by importance, differentiate by channel.** Wider search means more candidates — rank strictly by real industry impact > source authority > topic heat; never lower the bar because more sources appeared.\n- **WeChat concise version:** keep section caps (A≤3, B≤6, C≤5, D≤4, E≤3); pick only the most important items.\n- **HTML full version:** sections may relax by 2–3 items (A still ≤3, B≤8, C≤7, D≤6, E≤5).\n- Professional, concise, restrained tone. Every item must have source, summary, and impact judgment. Total 10–14 items (Monday 14–20). Never fabricate data.\n\n### Step 4: Generate Output Files [Deterministic + LLM]\n\n1. **Markdown** `<Brand>_Daily_Brief_{date}.md`:\n   - Every item carries a `> 企微摘要：...` line.\n   - Contains all items (incl. HTML-extended ones); the WeChat-summary line marks which enter the concise push.\n   - **Source links must use Markdown link syntax `[text](url)`** — never bare text `（https://...）`. Bare URLs render as plain text in HTML and break clickable links.\n2. **HTML** `<Brand>_Daily_Brief_{date}.html`, styled per `assets/report-template.html`:\n   - Each source is a clickable hyperlink.\n   - Capital section uses colored type tags (Funding/Earnings/IPO/M&A).\n   - **No WeChat-summary lines.**\n   - Contains all items.\n\n### Step 4.5: Format Pre-flight (machine self-check, mandatory) [Deterministic]\n\n⚠️ **Run immediately after generating the MD. Must print three counts + all assertions. No output = fail = return to Step 3 and regenerate.** Do the counts with actual `grep -c`, never by eye.\n\n```\n📐 Format pre-flight\n- item count (^### \\d+\\.)            = N1\n- WeChat-summary count (^> 企微摘要：) = N2\n- section count (^## [A-E]\\.)         = N3\n- assert N1 > 0 ?                     ✅ / ❌   (at least 1; N1=0 → fail)\n- assert N1 == N2 ?                   ✅ / ❌   (if N2<N1, check for fullwidth/halfwidth colon variants, then return to Step 3)\n- assert N3 == 5 ?                    ✅ / ❌\n- section-title language (5 English) ✅ / ❌\n- numbering: each section restarts at 1, no cross-section continuation ✅ / ❌\n- item separators: a standalone `---` between every two items          ✅ / ❌\n- source-link format: every `**来源：**` line is `[text](url)`, no bare `（http...）` ✅ / ❌\n- \"Top 3\" format: `**Top 3 takeaways:**` + ordered list 1./2./3.       ✅ / ❌\n- \"Top 3\" char count: each takeaway 15–30 chars                        ✅ / ❌\n- \"Top 3\" contains product names / versions / figures / bold ?         ❌ clean / ⚠️ hit\n- verdict char count = X (≤120)                                        ✅ / ❌\n- WeChat-summary char count: each ≤120                                 ✅ / ❌\n- field-name compliance (per section, four required fields, no invented field names) ✅ / ❌\n- field order: source line first after title, WeChat-summary line last ✅ / ❌\n- conclusion: ✅ pass → Step 5 / ❌ fail → regenerate\n```\n\n**Any ❌ → return to Step 3 and regenerate the affected content.** Never patch item-count gaps or backfill summaries during the Step 5 review. This gate exists to stop \"format drift causing missing WeChat-push content\" at the root.\n\n### Step 5: Review & Fix (business layer, 7 checks) [LLM]\n\nAfter generation and before push, run one full review. Fail → no push. **Precondition: Step 4.5 must pass.**\n\n1. **Recency compliance** — verify each item's publish date against the window (forced date derivation + per-item verification table).\n2. **Cross-section dedup** — one event in two+ sections → merge into highest-priority section.\n3. **Section-admission compliance** — each item fits its section's admission bar.\n4. **Source quality** — each item has a clear first-hand source link (C may allow high-trust secondary).\n5. **Content quality** — takeaways are trend judgments (15–30 chars, not event summaries); verdict ≤120 chars, no event-detail repetition; each item follows fact → impact-judgment.\n6. **Search coverage** — every Tier-1 vendor was targeted; thin content means expand search, not pad.\n7. **Less-is-more** — item counts within range, no padding with low-quality items.\n\n> Format integrity is backstopped by the Step 4.5 machine pre-flight. On any format problem, return to Step 3 to regenerate rather than patching in review.\n\n### Step 6: Deliver (per config) [Deterministic]\n\nPer `config.json`, push to any of **9 channels** (✅ verified / 📦 community-contributed, unverified):\n\n**Regional:** ✅ **WeChat Work** (`scripts/send_wecom.py` — concise summary first <4096 bytes, then full HTML; 3-layer priority fill; no links in summary; duplicate-push lock), 📦 **DingTalk** (`send_dingtalk.py`), 📦 **Feishu/Lark** (`send_feishu.py`).\n**Global:** 📦 **Slack** (`send_slack.py`), 📦 **Discord** (`send_discord.py`), 📦 **Telegram** (`send_telegram.py`), 📦 **Microsoft Teams** (`send_teams.py`).\n**Universal:** 📦 **Email** (`send_email.py`, SMTP), ✅ **GitHub Pages** (`deploy_github.py`, auto-archives history).\n\n> **Encoding note (Windows):** under a GBK locale, running the push script directly can raise `UnicodeEncodeError` on emoji output and crash a channel mid-print. Run with `PYTHONIOENCODING=utf-8 python -X utf8 <script>` or add `sys.stdout.reconfigure(encoding='utf-8')` at the top of the entry script. If some channels fail, re-push only the failed channel with `--force` to avoid duplicate sends.\n\n## Hard Rules\n\n> These cannot be violated. They override all other guidance.\n\n1. **Stability first.** The system's only goal is zero format drift, zero missed push, zero manual repair. Do not add features, change structure, or \"optimize\" existing rules unless explicitly requested.\n2. **Recency red line.** Items whose original publish date is outside the window (weekday 24h / Monday 72h) are never admitted, no exceptions.\n3. **First-hand source required.** Every item traces to a first-hand source; no pure secondhand media analysis.\n4. **Never fabricate.** All figures, dates, versions come from the source text; no guessing.\n5. **Dedup self-check.** After all sections, run cross-section dedup; one event in at most one section.\n6. **Step 4.5 pre-flight.** After generating MD, print the counts + all assertions; any ❌ → return to Step 3. Never patch in review.\n7. **Review gate.** Step 5 must pass before push; better unsent than flawed.\n8. **Less is more.** No section lowers its bar for item count; an empty section beats a padded one.\n9. **Push authority tiers.** In automation mode, business-layer review issues may be self-corrected then pushed; a generation-stage crash (Step 4.5 ❌) must be regenerated, never self-patched; in manual mode, issues await user confirmation.\n10. **Source links are Markdown.** Source lines must use `[text](url)`; bare `（http...）` is forbidden (it breaks HTML clickable links).\n\n## Failure Handling\n\n| Scenario | Action |\n|----------|--------|\n| **Generation-stage format crash (Step 4.5 ❌)** | Return to Step 3 and regenerate the affected section or whole doc; never patch item-count gaps in review |\n| Search yields nothing | Report \"no qualifying information today\", generate an empty template (title + date only), do not push |\n| A single source is unavailable | Skip it, continue other searches, note \"⚠️ {source} unreachable\" |\n| All candidates fail review | Output the review detail, do not push, await user decision |\n| Candidates severely insufficient (A–D total < 5) | Expand search first; if still short, demote borderline items to E (tagged 【Demoted】); if still short, report and pause for user decision |\n| Push fails (webhook timeout / 403) | Retry once; if it still fails, save files to workspace and notify user to push manually |\n| Config missing | Generate defaults via `scripts/init_config.py`, then continue |\n| HTML template missing | Generate Markdown only, skip HTML, state so in output |\n| File detection with non-ASCII (e.g. Chinese) filenames | Use `find`, not `ls` — shells like Git Bash mishandle quoting of non-ASCII paths and produce false \"file missing\" results |\n\n## Output Format\n\nEach run produces, per the configured adapters:\n- **Markdown brief** (`outputs/YYYY-MM-DD/brief.md`) — the canonical source of truth\n- **HTML page** (optional) — rendered from the Markdown for web/archive viewing\n- **Channel payloads** — per-channel digests (e.g., IM summary within length limits) generated by enabled adapters\n\nStructure of the brief itself (sections, length caps, judgment placement) is defined by the profile config and enforced by the format-check step; a brief that fails format-check is not delivered.\n\n## Customization\n\n### Switch industry\nEdit `config.json` `customization`: focus areas (default Data+AI), vendor priority list, open-source project list, output language and format. Then replace the `[Default Profile: Data+AI]` block in this SKILL.md with your domain's vendors, sources, and search queries.\n\n### Add a delivery channel\nEnable it in `config.json` `adapters` and set its config:\n\n| Channel | Key | Type | Main env vars |\n|---------|-----|------|---------------|\n| WeChat Work | `wechatwork` | Webhook | `WECOM_WEBHOOK_URL` |\n| DingTalk | `dingtalk` | Webhook | `DINGTALK_WEBHOOK_URL`, `DINGTALK_SECRET` |\n| Feishu | `feishu` | Webhook | `FEISHU_WEBHOOK_URL`, `FEISHU_SECRET` |\n| Slack | `slack` | Webhook | `SLACK_WEBHOOK_URL` |\n| Discord | `discord` | Webhook | `DISCORD_WEBHOOK_URL` |\n| Telegram | `telegram` | Bot API | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` |\n| Teams | `teams` | Webhook | `TEAMS_WEBHOOK_URL` |\n| Email | `email` | SMTP | `SMTP_HOST`, `SMTP_USER`, `SMTP_PASSWORD` |\n| GitHub | `github` | API | `GITHUB_TOKEN`, `GITHUB_USER` |\n\n### Adjust the schedule\nEdit `config.json` `cron`:\n```json\n{ \"schedule\": \"0 8 * * 1-5\", \"timezone\": \"Asia/Shanghai\" }\n```\n\n---\n\n*Default profile: Data+AI infrastructure. Framework is industry-agnostic — configure for any domain with public news sources.*\n\nFile v5.0.4:README.md\n\n# 📰 Industry Daily Brief\r\n\r\n> **Turn any industry into a daily intelligence briefing — automated search, filtering, writing, and multi-channel delivery.**\r\n>\r\n> **[中文文档 / Chinese docs →](README_zh.md)**\r\n\r\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\r\n[![Version](https://img.shields.io/badge/version-5.0.0-brightgreen.svg)](#changelog)\r\n[![Platform](https://img.shields.io/badge/platform-CodeBuddy%20%7C%20WorkBuddy-green.svg)](#)\r\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink.svg)](../../sponsors)\r\n[![Bilingual](https://img.shields.io/badge/docs-EN%20%7C%20中文-orange.svg)](README_zh.md)\r\n\r\n---\r\n\r\n## 🤔 The Problem\r\n\r\nYou want a daily industry briefing — curated, structured, sourced, delivered to your team every morning. But building one means:\r\n\r\n- **Hours of manual searching** across dozens of sources every day\r\n- **No reliable filtering** — noise drowns out real signals\r\n- **Copy-paste hell** — reformatting for Slack, email, WeChat, Teams...\r\n- **No consistency** — some days you skip it, the habit breaks\r\n\r\n**What if an AI agent could do all of this in 3 minutes?**\r\n\r\n## 💡 The Solution\r\n\r\nThis is a **ready-to-use Skill** for [CodeBuddy](https://www.codebuddy.ai/) / WorkBuddy that turns your AI assistant into a professional industry intelligence analyst. Just say:\r\n\r\n> *\"Generate today's industry daily brief\"*\r\n\r\nThe AI will automatically:\r\n\r\n1. 🔍 **Search** the web using a 3-phase strategy (targeted → expanded → source-traced)\r\n2. 🎯 **Filter** ruthlessly — only first-hand sources, no noise, no clickbait\r\n3. 📝 **Write** a structured briefing with sources, summaries, and impact analysis\r\n4. 📤 **Deliver** to 9 channels — Slack, Teams, email, WeChat, DingTalk, and more\r\n\r\n### 🏭 Works for Any Industry\r\n\r\nThe default configuration covers **Data + AI infrastructure** (data platforms, lakehouse, streaming, governance, etc.) — but **you can customize it for any domain**:\r\n\r\n| Your Industry | Just Change `focus_areas` + `SKILL.md` Prompt |\r\n|---|---|\r\n| FinTech / Banking | Payments, digital banking, RegTech, DeFi |\r\n| HealthTech / BioAI | Clinical AI, drug discovery, EHR, FDA approvals |\r\n| Cybersecurity | Threat intel, zero-trust, CVEs, vendor updates |\r\n| DevTools / Platform Eng | CI/CD, observability, IaC, developer experience |\r\n| E-commerce / Retail Tech | Personalization, logistics tech, marketplace |\r\n| *Your niche here* | Any industry with public news sources |\r\n\r\n👉 See [Customization](#-customization) for a step-by-step guide.\r\n\r\n## ✨ Features\r\n\r\n- 🔍 **3-phase search strategy** — targeted vendor search → expanded discovery → mandatory source tracing\r\n- 🎯 **Strict signal-to-noise filtering** — first-hand sources only, no rewrites or clickbait\r\n- 📝 **Structured output** — Top Signals, Product & Tech, Views & Research, Capital & Corporate, Watchlist\r\n- 🎯 **Quality over quantity** — sections left empty rather than filled with low-relevance content (\"less is more\" principle)\r\n- 🌐 **9 delivery channels** — WeChat Work · DingTalk · Feishu · Slack · Discord · Telegram · Teams · Email · GitHub Pages\r\n- 🎨 **Beautiful HTML reports** — card-based layout with clickable source links (links only in HTML, summaries stay clean text)\r\n- 📊 **Smart 3-layer summary extraction** — title + top changes + section headlines + per-item sentence summaries, strictly within 4096-byte WeChat limit\r\n- 🔒 **Duplicate push prevention** — lock-file mechanism prevents re-sending the same day's brief\r\n- 📅 **Monday weekend catch-up** — 72-hour window on Mondays covers Friday–Sunday, with expanded item limits\r\n- ⚙️ **Fully customizable** — industry focus, vendor lists, output language, delivery channels\r\n- 🌍 **Bilingual** — works in Chinese or English (or any language you configure)\r\n\r\n## 📦 Project Structure\r\n\r\n```\r\ndata-ai-daily-brief-skill/\r\n├── SKILL.md                    # Skill definition (core instructions)\r\n├── README.md                   # This file (English)\r\n├── README_zh.md                # 中文文档\r\n├── LICENSE                     # MIT License\r\n├── CONTRIBUTING.md             # Contribution guide\r\n├── scripts/\r\n│   ├── init_config.py          # Initialize default config\r\n│   ├── send_wecom.py           # 🇨🇳 WeChat Work (3-layer summary + lock)\r\n│   ├── send_dingtalk.py        # 🇨🇳 DingTalk\r\n│   ├── send_feishu.py          # 🇨🇳 Feishu / Lark\r\n│   ├── send_slack.py           # 🌍 Slack\r\n│   ├── send_discord.py         # 🌍 Discord\r\n│   ├── send_telegram.py        # 🌍 Telegram\r\n│   ├── send_teams.py           # 🌍 Microsoft Teams\r\n│   ├── send_email.py           # 📧 Email (SMTP)\r\n│   └── deploy_github.py        # 🌐 GitHub Pages\r\n├── .github/\r\n│   └── FUNDING.yml             # GitHub Sponsors config\r\n└── assets/\r\n    └── report-template.html    # HTML report template\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n### Option 1: As a CodeBuddy / WorkBuddy Skill\r\n\r\n1. **Copy the Skill into your project**:\r\n   ```bash\r\n   cp -r data-ai-daily-brief-skill .codebuddy/skills/data-ai-daily-brief\r\n   ```\r\n\r\n2. **Talk to your AI**:\r\n   - *\"Generate today's Data+AI daily brief\"*\r\n   - *\"Create a daily report for 2026-03-10\"*\r\n   - The Skill triggers automatically and runs the full pipeline.\r\n\r\n3. **Configure delivery** (optional):\r\n   ```bash\r\n   python .codebuddy/skills/data-ai-daily-brief/scripts/init_config.py\r\n   ```\r\n   Edit the generated `daily-brief-config.json` to add your webhook URLs.\r\n\r\n### Option 2: Import the Skill\r\n\r\n1. Open CodeBuddy / WorkBuddy Settings\r\n2. Navigate to **Skills** management\r\n3. Click **\"Import Skill\"**\r\n4. Select this folder\r\n\r\n### Option 3: Use Scripts Standalone\r\n\r\n```bash\r\n# Initialize config\r\npython scripts/init_config.py\r\n\r\n# === China channels ===\r\npython scripts/send_wecom.py 2026-03-11          # WeChat Work\r\npython scripts/send_wecom.py 2026-03-11 --force   # Force re-send\r\npython scripts/send_dingtalk.py 2026-03-11       # DingTalk\r\npython scripts/send_feishu.py 2026-03-11         # Feishu\r\npython scripts/send_feishu.py --card --link-url https://...  # Feishu interactive card\r\n\r\n# === Global channels ===\r\npython scripts/send_slack.py 2026-03-11          # Slack\r\npython scripts/send_discord.py 2026-03-11        # Discord\r\npython scripts/send_telegram.py 2026-03-11       # Telegram\r\npython scripts/send_teams.py 2026-03-11          # Microsoft Teams\r\n\r\n# === Universal ===\r\npython scripts/send_email.py 2026-03-11          # Email\r\npython scripts/deploy_github.py 2026-03-11       # GitHub Pages\r\n```\r\n\r\n## ⚙️ Configuration\r\n\r\n### daily-brief-config.json\r\n\r\n```json\r\n{\r\n  \"version\": \"2.0\",\r\n  \"adapters\": {\r\n    \"wechatwork\": { \"enabled\": true, \"webhook_url\": \"YOUR_WEBHOOK_URL\" },\r\n    \"dingtalk\":   { \"enabled\": true, \"webhook_url\": \"YOUR_URL\", \"secret\": \"optional\" },\r\n    \"feishu\":     { \"enabled\": true, \"webhook_url\": \"YOUR_URL\", \"secret\": \"optional\" },\r\n    \"slack\":      { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"discord\":    { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"telegram\":   { \"enabled\": true, \"bot_token\": \"YOUR_TOKEN\", \"chat_id\": \"YOUR_ID\" },\r\n    \"teams\":      { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"email\":      { \"enabled\": true, \"smtp_host\": \"smtp.example.com\", \"smtp_user\": \"...\" },\r\n    \"github\":     { \"enabled\": true, \"github_user\": \"your_username\", \"github_repo\": \"daily-brief\" }\r\n  },\r\n  \"customization\": {\r\n    \"language\": \"zh-CN\",\r\n    \"max_items\": 12,\r\n    \"max_items_monday\": 18,\r\n    \"monday_window_hours\": 72,\r\n    \"focus_areas\": [\"Big Data\", \"Data Platform\", \"Data Governance\", \"...\"]\r\n  }\r\n}\r\n```\r\n\r\n### Environment Variables\r\n\r\n#### 🇨🇳 China Channels\r\n\r\n| Variable | Purpose | Required |\r\n|----------|---------|----------|\r\n| `WECOM_WEBHOOK_URL` | WeChat Work webhook | When using WeChat |\r\n| `DINGTALK_WEBHOOK_URL` | DingTalk webhook | When using DingTalk |\r\n| `DINGTALK_SECRET` | DingTalk signing secret | When signing enabled |\r\n| `FEISHU_WEBHOOK_URL` | Feishu webhook | When using Feishu |\r\n| `FEISHU_SECRET` | Feishu signing secret | When signing enabled |\r\n\r\n#### 🌍 Global Channels\r\n\r\n| Variable | Purpose | Required |\r\n|----------|---------|----------|\r\n| `SLACK_WEBHOOK_URL` | Slack Incoming Webhook | When using Slack |\r\n| `DISCORD_WEBHOOK_URL` | Discord Webhook | When using Discord |\r\n| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token | When using Telegram |\r\n| `TELEGRAM_CHAT_ID` | Telegram Chat/Channel ID | When using Telegram |\r\n| `TEAMS_WEBHOOK_URL` | Teams Incoming Webhook | When using Teams |\r\n\r\n#### 📧 Universal\r\n\r\n| Variable | Purpose | Required |\r\n|----------|---------|----------|\r\n| `SMTP_HOST` | SMTP server address | When using email |\r\n| `SMTP_USER` | SMTP username | When using email |\r\n| `SMTP_PASSWORD` | SMTP password | When using email |\r\n| `EMAIL_TO` | Recipients (comma-separated) | When using email |\r\n| `GITHUB_TOKEN` | GitHub Personal Access Token | When using GitHub |\r\n| `GITHUB_USER` | GitHub username | When using GitHub |\r\n\r\n## 🔌 Channel Setup Guides\r\n\r\n<details>\r\n<summary><b>🇨🇳 DingTalk</b></summary>\r\n\r\n1. **Create Bot**: Target group → Settings → Smart Assistant → Add Robot → Custom\r\n2. **Security** (choose one):\r\n   - ✅ **Custom keywords** (recommended): Set keywords like `daily`, `report`\r\n   - 🔐 **Signing**: Copy Secret → set `DINGTALK_SECRET`\r\n   - 🌐 **IP whitelist**: Add your server IP\r\n3. **Copy Webhook URL** → set `DINGTALK_WEBHOOK_URL`\r\n</details>\r\n\r\n<details>\r\n<summary><b>🇨🇳 Feishu / Lark</b></summary>\r\n\r\n1. **Create Bot**: Target group → Settings → Bots → Add Bot → Custom Bot\r\n2. **Security** (optional): Enable signing → set `FEISHU_SECRET`\r\n3. **Copy Webhook URL** → set `FEISHU_WEBHOOK_URL`\r\n4. **Interactive card mode**: `python scripts/send_feishu.py --card --link-url https://...`\r\n5. ⚠️ Rate limit: 5/min, 100/hour\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Slack</b></summary>\r\n\r\n1. Visit https://api.slack.com/apps → Create New App\r\n2. Features → Incoming Webhooks → Enable\r\n3. \"Add New Webhook to Workspace\" → select channel\r\n4. **Copy Webhook URL** → set `SLACK_WEBHOOK_URL`\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Discord</b></summary>\r\n\r\n1. Channel → Edit Channel (⚙️) → Integrations → Webhooks → New Webhook\r\n2. Customize name and avatar\r\n3. **Copy Webhook URL** → set `DISCORD_WEBHOOK_URL`\r\n4. ⚠️ Embed description limit: 4096 chars, 5 requests/sec\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Telegram</b></summary>\r\n\r\n1. Search `@BotFather` → `/newbot` → get **Bot Token**\r\n2. **Get Chat ID**: Add `@userinfobot` to group, or use `@channel_username`\r\n3. Set `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID`\r\n4. ⚠️ 30 msg/sec, 20 msg/min in groups\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Microsoft Teams</b></summary>\r\n\r\n1. Channel → `···` → Workflows → \"Post to a channel when a webhook request is received\"\r\n2. **Copy Webhook URL** → set `TEAMS_WEBHOOK_URL`\r\n3. Legacy mode: `python scripts/send_teams.py --legacy`\r\n4. ⚠️ Adaptive Card ~28KB, ~4 req/sec\r\n</details>\r\n\r\n## 🎨 Customization\r\n\r\n### Switch to Your Industry\r\n\r\nThe default covers Data+AI, but adapting is simple — just two changes:\r\n\r\n**1. Edit `daily-brief-config.json`** — change `focus_areas`:\r\n\r\n```json\r\n{\r\n  \"customization\": {\r\n    \"focus_areas\": [\"FinTech\", \"Digital Banking\", \"Payment Infrastructure\", \"RegTech\"]\r\n  }\r\n}\r\n```\r\n\r\n**2. Edit `SKILL.md`** — update the prompt instructions:\r\n\r\n- Change the industry scope and vendor watchlist\r\n- Adjust source requirements for your domain\r\n- Modify output sections (e.g., add \"Regulatory Updates\" for FinTech)\r\n- Set your preferred output language\r\n\r\n**Example: FinTech daily brief**\r\n```\r\nReplace \"数据平台\" → \"金融科技\"\r\nReplace vendor list → Stripe, Plaid, Adyen, Ant Group, etc.\r\nReplace open source list → Hyperledger, OpenBanking APIs, etc.\r\n```\r\n\r\n### Customize the HTML Template\r\n\r\nEdit `assets/report-template.html` to change colors, layout, and branding.\r\n\r\n## 📋 Default Coverage (Data+AI)\r\n\r\nThe built-in configuration covers:\r\n\r\n- **Domains**: Big Data · Data Platforms · Data Infrastructure · Data Governance · Data Engineering · Lakehouse · Query Engines · Stream/Batch Processing · Vector Search · Open Source Data Ecosystem\r\n- **Tier 1 Vendors**: AWS · Google Cloud · Azure · Databricks · Snowflake · Alibaba Cloud · Tencent Cloud · Huawei Cloud · Volcengine\r\n- **Open Source**: Iceberg · Hudi · Paimon · Delta Lake · Trino · Spark · Flink · Kafka · DuckDB · StarRocks · Doris · SeaTunnel · Amoro\r\n- **Analysts**: Gartner · Forrester · IDC · a16z · Sequoia · CAICT · CCID · iResearch\r\n\r\n## 📝 Changelog\r\n\r\n| Version | Date | Summary |\r\n|---------|------|---------|\r\n| **5.0.0** | 2026-06-23 | **Major rework — English-first + industry-agnostic.** SKILL.md body fully rewritten in English; framework (workflow / confidence tiers / section definitions / format contract / hard rules) separated from a clearly-marked `[Default Profile: Data+AI]` block so the engine reads as truly domain-switchable. Display name changed to **Industry Daily Brief**. Value-first description. Backfilled all format/quality rules accumulated since 4.3.5: **source links must be Markdown `[text](url)`** (bare URLs broke HTML links); **WeChat-summary cap relaxed 30–80 → ≤120 chars**; **Step 4.5 expanded** with source-link format, `---` item-separator, WeChat-summary ≤120, and Top-3 char-count (15–30) assertions; numbering-reset and field-order assertions; stale-news guard; **Stability-first** promoted to Hard Rule #1; non-ASCII filename detection via `find` not `ls`. |\r\n| **4.3.3** | 2026-05-29 | Major architectural refactor: 3-layer separation (Editorial Principles / Section Definitions / Workflow) + 2 appendices (MD Format Contract A.1-A.5 / Failure Handling B.1-B.3); **new Step 4.5 mandatory format pre-flight** — generate-then-assert N1 (item count) / N2 (WeChat summary count) / N3 (section count) with strict equality (N1>0, N1==N2, N3==5) and content gates (English section titles, no bold/numbers in 3-points, verdict ≤120 chars); generation-stage failure → mandatory regenerate (no patch-style fixing in review stage); Rule Maintenance Protocol introduced as Section 0 (locate→optimize→record, no patch piling); unified 6-dimension mapping (cost/perf/architecture/governance/eng-efficiency/market-landscape); replace failed site-search with keyword search for CN policy sources; fix cross-month date arithmetic; 0 content deletion — all v4.2 rules preserved as in-place reorganization |\r\n| **4.2** | 2026-04-14 | Complete rewrite aligned with PROMPT.md v4.2: 6-step workflow with mandatory Review gate (Step 5); confidence tiers (A/B/C) with source-type labeling; hard rules section (6 rules — timeliness, source-only, dedup, Monday 72h, less-is-more, no-link-in-summary); failure handling (6 scenarios); deterministic vs LLM step labeling; actual delivery channels (wecom/github_pages/email) replacing 9 virtual channels; corrected section structure (C.Views & Research / D.Capital & Corporate); config filename fix (config.json not daily-brief-config.json) |\r\n| **3.1** | 2026-03-25 | WeChat Work summary fix: D/E section regex `\\s+` → `\\s*` for empty-body sections; link-length optimization |\r\n| **3.0** | 2026-03-20 | Major restructure: merge C.People & Views + D.Analyst Insights → C.Views & Research; add D.Capital & Corporate (funding/earnings/IPO/M&A with inline type tags); add 3-level information confidence (Level A/B/C); mandatory cross-section dedup self-check; new Step 5 Review & Fix (6 checks before publish); \"Top 3 Points\" now 15-30 char trend judgments (no product names/numbers); verdict ≤120 chars, no event detail repetition; add dedicated funding/M&A search queries; item count 10-14 (Monday 14-20) |\r\n| **2.1** | 2026-03-17 | No-truncation summary rewrite: complete-sentence-only extraction (never hard-truncate); `_smart_shorten` with progressive degradation (sentence-level → title-only → remove line) replacing `_truncate_line_to_bytes`; eliminates all `...` ellipsis artifacts |\r\n| **2.0** | 2026-03-16 | 3-phase search strategy with mandatory source tracing; 3-layer priority summary extraction; Monday 72-hour weekend catch-up window; duplicate push prevention; strict timeliness red-line rules; source labeling standards |\r\n| **1.0** | 2026-03-09 | Initial release with 9 delivery channels, structured 5-section output, bilingual docs |\r\n\r\n## ❤️ Support This Project\r\n\r\nIf this project helps you, consider [becoming a sponsor](https://github.com/sponsors/haiyangchenbj). Your support keeps it maintained and improved.\r\n\r\n## 🤝 Contributing\r\n\r\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\r\n\r\n## 📄 License\r\n\r\n[MIT License](LICENSE) — free to use, modify, and distribute.\r\n\r\n---\r\n\r\n**Built with ❤️ by the community, for anyone who needs structured industry intelligence.**\n\nFile v5.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn70yg6zwmkftx4939qrs89awx82rr9a\",\n  \"slug\": \"data-ai-daily-brief\",\n  \"version\": \"5.0.4\",\n  \"publishedAt\": 1789876709882\n}\n\nFile v5.0.4:CHANGELOG.md\n\n# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\r\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\r\n\r\n## [5.0.0] - 2026-06-23\r\n\r\n### Changed\r\n- **English-first SKILL.md.** The full body is rewritten in English. The framework — workflow, confidence tiers, section definitions, format contract, hard rules, failure handling — is now industry-agnostic, with all Data+AI specifics isolated into a clearly-marked `[Default Profile: Data+AI]` block that users replace when targeting another domain.\r\n- **Display name → \"Industry Daily Brief\".** Repositions the skill as a general engine that ships with a Data+AI example, rather than a Data+AI-only tool. Slug remains `data-ai-daily-brief` to preserve version history.\r\n- **Value-first description.** Rewritten to lead with the outcome (any industry → daily brief, 9 channels, machine-checked formatting) instead of a feature/keyword list.\r\n- **WeChat-summary cap relaxed 30–80 → ≤120 chars.** The 80-char ceiling could not accommodate high-density days (e.g. major vendor summits); 120 covers >90% of cases and the WeChat push script adaptively trims overflow.\r\n\r\n### Added (backfilled rules accumulated since 4.3.5)\r\n- **Source links must be Markdown `[text](url)`** — Hard Rule #10 + Step 4.5 assertion. Bare `（https://...）` text passes the old \"source line exists\" check but renders as non-clickable plain text in HTML.\r\n- **Step 4.5 expanded** with four machine-checkable assertions: source-link format, `---` item separator presence, WeChat-summary ≤120 chars, and Top-3 char-count (15–30). Plus numbering-reset (each section restarts at 1) and field-order assertions.\r\n- **Stale-news guard** — a \"big news\" item from search results must have its *original* publish date independently confirmed; search ranking is not recency.\r\n- **Stability-first** promoted to Hard Rule #1 — zero format drift / zero missed push / zero manual repair; no new features or structural changes unless explicitly requested.\r\n- **Non-ASCII filename detection** — Failure Handling note to use `find` not `ls`, because shells like Git Bash mishandle quoting of Chinese/non-ASCII paths and report false \"file missing\".\r\n\r\n### Preserved\r\n- All 4.3.x rules, search strategy, vendor/source lists, section definitions, item-count limits, confidence tiers, and failure handling are preserved — reorganized and translated, not removed. 5.0.0 is a structural + language rework with additive rule backfill.\r\n\r\n## [4.3.5] - 2026-06-01\r\n\r\n### Changed\r\n- **Republish only** to fix display-name regression introduced in 4.3.4 (the `+` in \"Data+AI\" was lost when ClawHub auto-derived the display name from a temporary working directory). Display name explicitly pinned to \"Data+AI Daily Brief Skill\" via `--name` flag. Content identical to 4.3.4.\r\n\r\n## [4.3.4] - 2026-06-01\r\n\r\n### Added\r\n- **Step 4.5 — three new field-level assertions** to close drift loopholes that the original mechanical checks (item count / summary count / section count) could not catch:\r\n  - **Field name compliance** — per-section verification of the four-element template (e.g. A: `**来源：**` + `**摘要：**` + `**为什么对数据平台重要：**` + `> 企微摘要：`); explicitly forbids self-invented fields like `**影响维度：**` or `**So What：**` substituting required fields.\r\n  - **Field order** — `**来源：**` must be the first line after the heading; `> 企微摘要：` must be the last line of each item.\r\n  - **3-points format** — must use `**今日最重要的3点：**` followed by an ordered list `1./2./3.`; rejects any heading-style or unordered-list variants.\r\n- **Windows UTF-8 publish guidance** — explicit warning in Step 6 that on Windows GBK locale, `print(\"✅\")` in `publish.py` triggers `UnicodeEncodeError`, killing the wecom channel while GitHub Pages had already succeeded; correct invocation: `PYTHONIOENCODING=utf-8 python -X utf8 publish.py ...`. Permanent fix recommendation: add `sys.stdout.reconfigure(encoding='utf-8')` to `publish.py` top.\r\n\r\n### Fixed\r\n- **First-run drift after v4.3 refactor** — on 2026-06-01 the LLM internalized the v4.3 Section 1.2 \"six-dimension mapping\" concept as an output field (`**影响维度：**`), bypassing the formal A.3 four-element template across all sections. v4.3.3's Step 4.5 only validated mechanical features and false-passed this drift. v4.3.4 closes the gap with field-name and field-order assertions.\r\n- **Cross-channel publish race on Windows** — when `publish.py` crashes mid-flight due to encoding issues, earlier channels (e.g. GitHub Pages) succeed but later channels (e.g. wecom) fail silently with no rollback. Now documented as a known issue with both temporary (env vars) and permanent (`sys.stdout.reconfigure`) fixes.\r\n\r\n### Preserved\r\n- All v4.3.3 rules, search queries, vendor lists, section definitions, item-count limits, format contracts (Appendix A), and failure handling (Appendix B) are preserved verbatim. v4.3.4 is purely additive on Step 4.5 assertions and Step 6 platform-specific guidance.\r\n\r\n## [4.3.3] - 2026-05-29\r\n\r\n### Added\r\n- **Step 4.5: Mandatory Format Pre-flight** — generate-then-assert workflow that forces the LLM to output three statistics (N1=item count, N2=WeChat summary count, N3=section count) plus all assertions (N1>0, N1==N2, N3==5, English section titles, no bold/numbers in 3-points, verdict ≤120 chars). Any ❌ → return to Step 3 for regeneration; patching in review stage is forbidden.\r\n- **Appendix A: MD Format Contract** — single-source format specification (A.1 title & opening / A.2 section titles / A.3 item structure / A.4 WeChat summary uniqueness / A.5 self-check formula) referenced by Step 3, Step 4.5, and Step 5. Eliminates rule duplication across multiple chapters.\r\n- **Appendix B: Failure Handling** — complete failure path coverage (B.1 generation crash → regenerate / B.2 candidate insufficient → expand search or downgrade / B.3 automation vs manual gating differences).\r\n- **Section 0: Rule Maintenance Protocol** — \"locate → optimize → record\" anti-patch-piling discipline. Mandatory before any future PROMPT change: locate existing rules first, prefer optimizing original clauses over adding new ones, and synchronize changelog + MEMORY records.\r\n- **N1>0 assertion** — explicit guard against the \"N1=0 ∧ N2=0 → N1==N2 ✅ false-pass\" loophole; forensic-tested on the 2026-05-29 crash MD that triggered the refactor.\r\n\r\n### Changed\r\n- **3-layer architecture** — flat structure → 1. Editorial Principles (norms) / 2. Section Definitions (content) / 3. Workflow (process) + 2 appendices. Rules no longer scatter across multiple chapters.\r\n- **Unified 6-dimension mapping** — three inconsistent versions (5/6/7 dimensions across v4.2 lines 53/196/339) consolidated into one definition: cost / performance / architecture / governance / engineering efficiency / procurement & market landscape.\r\n- **Step 5 Review reduced from format+business mixed checks to 7 business-only items** — format completeness fully delegated to Step 4.5 machine pre-check; Step 5 focuses on timeliness / dedup / section admission / source quality / content quality / search coverage / restraint.\r\n- **Section 9 hard constraints absorbed into Appendix A** — original 9 hard constraints split by dimension and merged into Appendix A.1-A.5; cross-chapter duplication with Step 5 fully eliminated.\r\n\r\n### Fixed\r\n- **Failed CN policy site searches replaced with keyword search** — `site:caict.ac.cn OR site:ccidreport.com OR site:cesi.cn` (which v4.2 itself annotated as \"indexing is poor, cannot be used as the only means\") replaced with direct keyword search.\r\n- **Cross-month date arithmetic flaw** — the `today - 3 days` formula for \"last Friday\" calculation (which fails on month boundaries) replaced with mandatory calendar/`date` command lookup.\r\n- **3-points reverse-example self-contradiction** — the v4.2 negative example accidentally used the bold formatting it was trying to forbid; reworded.\r\n- **Generation-stage drift loophole** — review-stage repair was previously implicitly trusted to fix generation crashes (e.g. 2026-05-29 fully missing item numbers + WeChat summaries); now explicitly forbidden in Appendix B.1 and Hard Rule #5/#8.\r\n\r\n### Preserved (zero-deletion guarantee)\r\n- All v4.2 712-line rules, search queries, vendor lists, open-source project lists, analyst lists, source requirements, section definitions/admission criteria/templates/item-count limits, boundary case table, positive/negative example tables, historical lessons (2026-03-23 timeliness lesson, 2026-05-29 format crash lesson) are preserved verbatim — only relocated and deduplicated. Daily brief item selection, section assignment, count distribution, and text templates remain consistent with v4.2.\r\n\r\n### Forensic Validation\r\nv4.3 Step 4.5 was tested against the 2026-05-29 crash MD (which v4.2 review failed to catch) and identified all 7 violations with 100% coverage: zero numbered items, all WeChat summaries missing, 3-points containing bold formatting + USD amounts + GA/round labels, verdict 143 chars (>120), and `## 🔥 ...` forbidden title variant.\r\n\r\n---\r\n\r\n## [4.2.0] - 2026-04-02\r\n\r\n### Added\r\n- Phase 1 Chinese search: keyword search for CAICT (信通院)、CCID (赛迪)、National Data Administration (国家数据局) policy sources\r\n- Phase 1 funding search: Crunchbase News、TechCrunch、CB Insights macro capital sources\r\n- Phase 2 Chinese search: iResearch (艾瑞)、EqualOcean (亿欧) reports; partnership/integration search for ecosystem news\r\n- Information sources list: + Crunchbase News、CB Insights、PitchBook News、TechCrunch Venture\r\n- Analyst institutions: + Futurum Group、Constellation Research、Wikibon/SiliconANGLE Research\r\n- New category \"Policy & Standards Institutions\" (国家数据局、工信部)\r\n- C-Board admission: policy & standards content type\r\n- Importance ranking rules for search expansion\r\n- WeChat/HTML differentiated item counts (WeChat: A≤3/B≤6/C≤5/D≤4/E≤3, HTML: +2-3 each)\r\n\r\n### Changed\r\n- Domestic institution search: site search (caict.ac.cn etc.) downgraded to auxiliary, keyword search added as primary\r\n- Phase 2 search scope: + partner ecosystem search\r\n\r\n### Fixed\r\n- Search strategy coverage gap causing 18-report analysis: D-board 44%、C-board 39%、B-board 33% empty; missed Q1 2026 global VC $297B report and Wiliot-Databricks partnership\r\n\r\n---\r\n\r\n## [3.0.0] - 2026-03-20\r\n\r\n### Added\r\n- Major restructuring: merge C+D into C (Views & Research)\r\n- New D-board: Capital & Corporate\r\n- Confidence levels for all news items\r\n- Self-check for duplicates\r\n- Review step with 3-point trend judgment (15-30 chars) with \"so what\"\r\n- Verdict constraint (≤120 chars)\r\n- Funding search strategy\r\n- Item count control: 10-14 items (14-20 on Mondays)\r\n\r\n### Changed\r\n- Impact analysis format\r\n- Output template structure\r\n\r\n---\r\n\r\n## [2.0.0] - 2026-03-15\r\n\r\n### Added\r\n- Multi-channel delivery support (Slack, Teams, email, WeChat, DingTalk, Feishu, Discord, Telegram)\r\n- Configurable templates per channel\r\n- Auto-formatting for HTML output\r\n\r\n---\r\n\r\n## [1.0.0] - 2026-03-10\r\n\r\n### Added\r\n- Initial release\r\n- Core daily brief generation workflow\r\n- Web search, filtering, writing pipeline\n\nFile v5.0.4:CONTRIBUTING.md\n\n# Contributing to AI Industry Intelligence Daily Brief\r\n\r\nThank you for your interest in contributing! 🎉\r\n\r\n## How to Contribute\r\n\r\n### 🐛 Bug Reports\r\n\r\n- Open an [Issue](../../issues) with a clear description\r\n- Include steps to reproduce, expected vs actual behavior\r\n- Mention your environment (OS, Python version, etc.)\r\n\r\n### 💡 Feature Requests\r\n\r\n- Open an [Issue](../../issues) with the `enhancement` label\r\n- Describe the use case and why it would be valuable\r\n- Bonus: suggest an implementation approach\r\n\r\n### 🔧 Pull Requests\r\n\r\n1. **Fork** the repository\r\n2. **Create a branch**: `git checkout -b feature/your-feature`\r\n3. **Make changes** and test them\r\n4. **Commit** with clear messages: `git commit -m \"Add: new delivery channel for LINE\"`\r\n5. **Push** and open a Pull Request\r\n\r\n### 📝 Code Style\r\n\r\n- Python scripts: follow PEP 8\r\n- Include docstrings with usage instructions in each script\r\n- Support both environment variables and command-line arguments\r\n- Add error handling with helpful messages\r\n\r\n### 🌐 Adding a New Delivery Channel\r\n\r\nTo add a new push channel (e.g., LINE, WhatsApp):\r\n\r\n1. Create `scripts/send_yourplatform.py` following the existing pattern\r\n2. Include a comprehensive docstring with setup guide\r\n3. Support environment variables for credentials\r\n4. Add the channel to `init_config.py` default config\r\n5. Update both `README.md` and `README_zh.md`\r\n6. Update `SKILL.md` with the new channel info\r\n\r\n### 🏭 Adding Industry Templates\r\n\r\nTo contribute a new industry template:\r\n\r\n1. Describe the industry focus areas, key vendors, and sources\r\n2. Provide a sample `SKILL.md` prompt section\r\n3. Include example `focus_areas` configuration\r\n\r\n## Code of Conduct\r\n\r\nBe respectful, inclusive, and constructive. We're all here to build something useful together.\r\n\r\n## License\r\n\r\nBy contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).\n\nFile v5.0.4:README_zh.md\n\n# 📰 行业情报日报 · Industry Daily Brief\r\n\r\n> **把任何行业变成一份每日情报简报 — 自动搜索、过滤、编写、多渠道推送。**\r\n>\r\n> **[English Documentation →](README.md)**\r\n\r\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\r\n[![Version](https://img.shields.io/badge/version-5.0.0-brightgreen.svg)](#changelog)\r\n[![Platform](https://img.shields.io/badge/platform-CodeBuddy%20%7C%20WorkBuddy-green.svg)](#)\r\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink.svg)](../../sponsors)\r\n[![Bilingual](https://img.shields.io/badge/docs-EN%20%7C%20中文-orange.svg)](README.md)\r\n\r\n---\r\n\r\n## 🤔 你是否遇到过这些问题？\r\n\r\n你想给自己或团队做一份每日行业简报——精准、结构化、有来源、每天早上自动推到群里。但实际操作起来：\r\n\r\n- **每天手动搜索几十个信源**，费时费力\r\n- **信噪比极低** — 80% 是噪音、二手报道、标题党\r\n- **多渠道同步** — 在 Slack、邮件、企微、飞书之间复制粘贴\r\n- **难以坚持** — 偶尔忘了，日报就断了\r\n\r\n**如果 AI 能帮你在 3 分钟内搞定这一切呢？**\r\n\r\n## 💡 解决方案\r\n\r\n这是一个开箱即用的 [CodeBuddy](https://www.codebuddy.ai/) / WorkBuddy **Skill**，可以把你的 AI 助手变成一个专业的行业情报分析师。只需要说一句话：\r\n\r\n> *\"生成今天的行业日报\"*\r\n\r\nAI 就会自动完成：\r\n\r\n1. 🔍 **三阶段搜索** — 一手来源定向搜索 → 扩展发现 → 强制来源溯源\r\n2. 🎯 **严格过滤** — 只保留一手来源，去除噪音和标题党\r\n3. 📝 **结构化编写** — 生成带来源、摘要和影响分析的专业日报\r\n4. 📤 **多渠道推送** — 一键发送到 9 大渠道\r\n\r\n### 🏭 适用于任何行业\r\n\r\n默认配置以 **Data+AI 基础设施** 为例（数据平台、湖仓架构、流批处理、数据治理等），但 **你可以将它定制为任何行业**：\r\n\r\n| 你的行业 | 只需修改 `focus_areas` + `SKILL.md` 中的 Prompt |\r\n|---|---|\r\n| 金融科技 / 银行业 | 支付、数字银行、RegTech、DeFi |\r\n| 医疗科技 / BioAI | 临床 AI、药物发现、电子病历、FDA 审批 |\r\n| 网络安全 | 威胁情报、零信任、CVE、安全厂商动态 |\r\n| DevTools / 平台工程 | CI/CD、可观测性、IaC、开发者体验 |\r\n| 电商 / 零售科技 | 个性化推荐、物流科技、平台策略 |\r\n| *你的细分领域* | 任何有公开新闻源的行业 |\r\n\r\n👉 详见 [自定义指南](#-自定义)。\r\n\r\n## ✨ 功能特色\r\n\r\n- 🔍 **三阶段搜索策略** — 厂商定向搜索 → 扩展发现 → 强制来源溯源，确保信息质量\r\n- 🎯 **严格信噪过滤** — 仅一手来源，拒绝搬运和标题党\r\n- 📝 **结构化输出** — Top Signals、Product & Tech、Views & Research、Capital & Corporate、Watchlist 五大板块\r\n- 🎯 **宁缺毋滥** — 板块无合格内容时留空，绝不降低准入标准凑数\r\n- 🌐 **9 大推送渠道** — 企微 · 钉钉 · 飞书 · Slack · Discord · Telegram · Teams · 邮件 · GitHub Pages\r\n- 🎨 **精美 HTML 报告** — 卡片式布局，来源链接可点击（链接仅在 HTML 完整版中呈现，摘要保持纯文本）\r\n- 📊 **3层优先级摘要提取** — 标题+今日变化+总判断 → 板块标题+新闻标题 → 一句话摘要按空间填充，严格控制在 4096 字节内\r\n- 🔒 **防重复推送** — 锁文件机制防止同一天日报重复发送\r\n- 📅 **周一周末回顾** — 周一自动扩展时效窗口至 72 小时覆盖周五至周日，条数上限放宽\r\n- ⚙️ **完全可配置** — 行业方向、厂商列表、输出语言、推送渠道\r\n- 🌍 **中英文双语** — 默认中文输出，可切换任何语言\r\n\r\n## 📦 项目结构\r\n\r\n```\r\ndata-ai-daily-brief-skill/\r\n├── SKILL.md                    # Skill 定义文件（核心指令）\r\n├── README.md                   # 英文文档\r\n├── README_zh.md                # 中文文档（本文件）\r\n├── LICENSE                     # MIT 开源协议\r\n├── CONTRIBUTING.md             # 贡献指南\r\n├── scripts/\r\n│   ├── init_config.py          # 初始化默认配置\r\n│   ├── send_wecom.py           # 🇨🇳 企业微信推送（3层摘要+防重复锁）\r\n│   ├── send_dingtalk.py        # 🇨🇳 钉钉推送\r\n│   ├── send_feishu.py          # 🇨🇳 飞书推送\r\n│   ├── send_slack.py           # 🌍 Slack 推送\r\n│   ├── send_discord.py         # 🌍 Discord 推送\r\n│   ├── send_telegram.py        # 🌍 Telegram 推送\r\n│   ├── send_teams.py           # 🌍 Microsoft Teams 推送\r\n│   ├── send_email.py           # 📧 邮件推送\r\n│   └── deploy_github.py        # 🌐 GitHub Pages 部署\r\n├── .github/\r\n│   └── FUNDING.yml             # GitHub Sponsors 配置\r\n└── assets/\r\n    └── report-template.html    # HTML 报告模板\r\n```\r\n\r\n## 🚀 快速开始\r\n\r\n### 方式 1：作为 CodeBuddy / WorkBuddy Skill 使用\r\n\r\n1. **复制 Skill 到项目中**：\r\n   ```bash\r\n   cp -r data-ai-daily-brief-skill .codebuddy/skills/data-ai-daily-brief\r\n   ```\r\n\r\n2. **对 AI 说**：\r\n   - \"生成今天的行业日报\"\r\n   - \"帮我生成 2026-03-10 的 Data+AI 日报\"\r\n   - Skill 会自动触发并按流程执行\r\n\r\n3. **配置推送渠道**（可选）：\r\n   ```bash\r\n   python .codebuddy/skills/data-ai-daily-brief/scripts/init_config.py\r\n   ```\r\n   编辑生成的 `daily-brief-config.json`，填入你的推送渠道信息。\r\n\r\n### 方式 2：导入 Skill\r\n\r\n1. 打开 CodeBuddy / WorkBuddy 设置页面\r\n2. 找到 **Skills** 管理区域\r\n3. 点击 **\"导入 Skill\"**\r\n4. 选择本 Skill 文件夹\r\n\r\n### 方式 3：独立使用脚本\r\n\r\n```bash\r\n# 初始化配置\r\npython scripts/init_config.py\r\n\r\n# === 国内渠道 ===\r\npython scripts/send_wecom.py 2026-03-11          # 企业微信\r\npython scripts/send_wecom.py 2026-03-11 --force   # 强制重推\r\npython scripts/send_dingtalk.py 2026-03-11       # 钉钉\r\npython scripts/send_feishu.py 2026-03-11         # 飞书\r\npython scripts/send_feishu.py --card --link-url https://...  # 飞书交互卡片\r\n\r\n# === 国际渠道 ===\r\npython scripts/send_slack.py 2026-03-11          # Slack\r\npython scripts/send_discord.py 2026-03-11        # Discord\r\npython scripts/send_telegram.py 2026-03-11       # Telegram\r\npython scripts/send_teams.py 2026-03-11          # Microsoft Teams\r\n\r\n# === 通用渠道 ===\r\npython scripts/send_email.py 2026-03-11          # 邮件\r\npython scripts/deploy_github.py 2026-03-11       # GitHub Pages\r\n```\r\n\r\n## ⚙️ 配置说明\r\n\r\n### daily-brief-config.json\r\n\r\n```json\r\n{\r\n  \"version\": \"2.0\",\r\n  \"adapters\": {\r\n    \"wechatwork\": { \"enabled\": true, \"webhook_url\": \"你的企微 Webhook URL\" },\r\n    \"dingtalk\":   { \"enabled\": true, \"webhook_url\": \"你的钉钉 URL\", \"secret\": \"可选加签密钥\" },\r\n    \"feishu\":     { \"enabled\": true, \"webhook_url\": \"你的飞书 URL\", \"secret\": \"可选签名密钥\" },\r\n    \"slack\":      { \"enabled\": true, \"webhook_url\": \"你的 Slack URL\" },\r\n    \"discord\":    { \"enabled\": true, \"webhook_url\": \"你的 Discord URL\" },\r\n    \"telegram\":   { \"enabled\": true, \"bot_token\": \"你的 Bot Token\", \"chat_id\": \"你的 Chat ID\" },\r\n    \"teams\":      { \"enabled\": true, \"webhook_url\": \"你的 Teams URL\" },\r\n    \"email\":      { \"enabled\": true, \"smtp_host\": \"smtp.example.com\", \"smtp_user\": \"...\" },\r\n    \"github\":     { \"enabled\": true, \"github_user\": \"your_username\", \"github_repo\": \"daily-brief\" }\r\n  },\r\n  \"customization\": {\r\n    \"language\": \"zh-CN\",\r\n    \"max_items\": 12,\r\n    \"max_items_monday\": 18,\r\n    \"monday_window_hours\": 72,\r\n    \"focus_areas\": [\"大数据\", \"数据平台\", \"数据治理\", \"...\"]\r\n  }\r\n}\r\n```\r\n\r\n### 环境变量\r\n\r\n#### 🇨🇳 国内渠道\r\n\r\n| 变量名 | 用途 | 必需 |\r\n|--------|------|------|\r\n| `WECOM_WEBHOOK_URL` | 企业微信 Webhook URL | 使用企微时 |\r\n| `DINGTALK_WEBHOOK_URL` | 钉钉 Webhook URL | 使用钉钉时 |\r\n| `DINGTALK_SECRET` | 钉钉加签密钥 | 开启加签时 |\r\n| `FEISHU_WEBHOOK_URL` | 飞书 Webhook URL | 使用飞书时 |\r\n| `FEISHU_SECRET` | 飞书签名密钥 | 开启签名时 |\r\n\r\n#### 🌍 国际渠道\r\n\r\n| 变量名 | 用途 | 必需 |\r\n|--------|------|------|\r\n| `SLACK_WEBHOOK_URL` | Slack Incoming Webhook URL | 使用 Slack 时 |\r\n| `DISCORD_WEBHOOK_URL` | Discord Webhook URL | 使用 Discord 时 |\r\n| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token | 使用 Telegram 时 |\r\n| `TELEGRAM_CHAT_ID` | Telegram Chat/Channel ID | 使用 Telegram 时 |\r\n| `TEAMS_WEBHOOK_URL` | Teams Incoming Webhook URL | 使用 Teams 时 |\r\n\r\n#### 📧 通用渠道\r\n\r\n| 变量名 | 用途 | 必需 |\r\n|--------|------|------|\r\n| `SMTP_HOST` | SMTP 服务器地址 | 使用邮件时 |\r\n| `SMTP_USER` | SMTP 用户名 | 使用邮件时 |\r\n| `SMTP_PASSWORD` | SMTP 密码 | 使用邮件时 |\r\n| `EMAIL_TO` | 收件人（逗号分隔） | 使用邮件时 |\r\n| `GITHUB_TOKEN` | GitHub Personal Access Token | 使用 GitHub 时 |\r\n| `GITHUB_USER` | GitHub 用户名 | 使用 GitHub 时 |\r\n\r\n## 🔌 各渠道快速配置指南\r\n\r\n<details>\r\n<summary><b>🇨🇳 钉钉 (DingTalk)</b></summary>\r\n\r\n1. **创建机器人**：目标群 → 群设置 → 智能群助手 → 添加机器人 → 自定义\r\n2. **安全设置**（三选一）：\r\n   - ✅ **自定义关键词**（推荐）：设置 `日报`、`Data` 等关键词\r\n   - 🔐 **加签**：记下 Secret → 配置到 `DINGTALK_SECRET`\r\n   - 🌐 **IP 白名单**：填入服务器出口 IP\r\n3. **复制 Webhook URL** → 配置到 `DINGTALK_WEBHOOK_URL`\r\n</details>\r\n\r\n<details>\r\n<summary><b>🇨🇳 飞书 (Feishu / Lark)</b></summary>\r\n\r\n1. **创建机器人**：目标群 → 设置 → 群机器人 → 添加机器人 → 自定义机器人\r\n2. **安全设置**（可选）：启用签名校验 → 配置 `FEISHU_SECRET`\r\n3. **复制 Webhook URL** → 配置到 `FEISHU_WEBHOOK_URL`\r\n4. **交互卡片模式**：`python scripts/send_feishu.py --card --link-url https://...`\r\n5. ⚠️ 限制：每分钟 5 条，每小时 100 条\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Slack</b></summary>\r\n\r\n1. 访问 https://api.slack.com/apps → Create New App\r\n2. Features → Incoming Webhooks → 开启\r\n3. \"Add New Webhook to Workspace\" → 选择目标频道\r\n4. **复制 Webhook URL** → 配置到 `SLACK_WEBHOOK_URL`\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Discord</b></summary>\r\n\r\n1. 频道 → 编辑频道 (⚙️) → 整合 → Webhooks → 新建 Webhook\r\n2. 自定义名称和头像\r\n3. **复制 Webhook URL** → 配置到 `DISCORD_WEBHOOK_URL`\r\n4. ⚠️ 限制：Embed 描述 4096 字符，每秒 5 次请求\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Telegram</b></summary>\r\n\r\n1. 搜索 `@BotFather` → `/newbot` → 获取 **Bot Token**\r\n2. **获取 Chat ID**：将 `@userinfobot` 添加到群，或使用 `@频道用户名`\r\n3. 配置 `TELEGRAM_BOT_TOKEN` 和 `TELEGRAM_CHAT_ID`\r\n4. ⚠️ 限制：每秒 30 条，群组每分钟 20 条\r\n</details>\r\n\r\n<details>\r\n<summary><b>🌍 Microsoft Teams</b></summary>\r\n\r\n1. 频道 → `···` → Workflows → \"Post to a channel when a webhook request is received\"\r\n2. **复制 Webhook URL** → 配置到 `TEAMS_WEBHOOK_URL`\r\n3. 旧版兼容模式：`python scripts/send_teams.py --legacy`\r\n4. ⚠️ 限制：Adaptive Card 约 28KB，每秒约 4 次\r\n</details>\r\n\r\n## 🎨 自定义\r\n\r\n### 切换到你的行业\r\n\r\n默认配置以 Data+AI 为例，但适配到你的行业只需两步：\r\n\r\n**第一步：修改 `daily-brief-config.json`** — 更改 `focus_areas`：\r\n\r\n```json\r\n{\r\n  \"customization\": {\r\n    \"focus_areas\": [\"金融科技\", \"数字银行\", \"支付基础设施\", \"监管科技\"]\r\n  }\r\n}\r\n```\r\n\r\n**第二步：编辑 `SKILL.md`** — 更新 Prompt 指令：\r\n\r\n- 更改行业范围和厂商关注列表\r\n- 调整信源要求（适配你的行业）\r\n- 修改输出板块（如为金融加上\"监管动态\"）\r\n- 设置输出语言\r\n\r\n**示例：金融科技日报**\r\n```\r\n将 \"数据平台\" 替换为 → \"金融科技\"\r\n将厂商列表替换为 → Stripe, Plaid, Adyen, 蚂蚁集团, etc.\r\n将开源项目替换为 → Hyperledger, OpenBanking APIs, etc.\r\n```\r\n\r\n### 自定义 HTML 模板\r\n\r\n编辑 `assets/report-template.html`，修改颜色、布局和品牌标识。\r\n\r\n## 📋 默认覆盖范围（Data+AI）\r\n\r\n内置配置覆盖以下 Data+AI 领域：\r\n\r\n- **行业领域**：大数据 · 数据平台 · 数据基础设施 · 数据治理 · 数据工程 · 湖仓架构 · 查询引擎 · 流批处理 · 向量检索 · 开源数据生态\r\n- **头部厂商**：AWS · Google Cloud · Azure · Databricks · Snowflake · 阿里云 · 腾讯云 · 华为云 · 火山引擎 · Confluent · MongoDB · ClickHouse · dbt Labs\r\n- **开源项目**：Iceberg · Hudi · Paimon · Delta Lake · Trino · Spark · Flink · Kafka · DuckDB · StarRocks · Doris · SeaTunnel · Amoro\r\n- **分析师机构**：Gartner · Forrester · IDC · a16z · Sequoia · 信通院 · 赛迪研究院 · 艾瑞咨询 · 头部券商研报\r\n\r\n## 📝 更新记录\r\n\r\n| 版本 | 日期 | 更新摘要 |\r\n|------|------|---------|\r\n| **5.0.0** | 2026-06-23 | **重大重构 —— 英文优先 + 行业无关化。** SKILL.md 正文全面英文化；框架（工作流 / 置信度分层 / 板块定义 / 格式合约 / 硬性规则）与明确标注的 `[Default Profile: Data+AI]` 示例块分离，使引擎读起来真正可切换任意行业。显示名改为 **Industry Daily Brief**。简介改为价值前置。回填 4.3.5 以来累积的全部格式/质量规则：**来源链接强制 Markdown `[text](url)`**（裸 URL 会导致 HTML 链接失效）；**企微摘要上限 30–80 → ≤120 字**；**Step 4.5 扩展**新增来源链接格式、`---` 条目分隔符、企微摘要 ≤120、3点字数 15–30 等断言；编号重置与字段顺序断言；旧闻防护；**稳定优先**提升为硬性规则 #1；中文等非 ASCII 文件名检测改用 `find` 而非 `ls`。 |\r\n| **4.3.3** | 2026-05-29 | 重大架构重构：三层分离（编辑准则 / 板块定义 / 工作流程）+ 两附录（附录 A. MD 格式合约 A.1-A.5 / 附录 B. 失败处理 B.1-B.3）；**新增 Step 4.5 强制格式预检** —— 生成 MD 后必须输出 N1（条目数）/ N2（企微摘要数）/ N3（板块数）三个统计数字 + 全部断言（N1>0、N1==N2、N3==5、板块标题英文、3点无加粗/数字、总判断 ≤120 字）；生成阶段任一断言 ❌ → 一律回到 Step 3 重生（禁止 Review 阶段补丁式修补）；头部第 0 节新增「规则维护准则」（定位现有规则 → 优化原条款 → 同步 changelog/MEMORY，禁止补丁式叠加）；映射维度统一为六维（成本/性能/架构/治理/工程效率/采购市场格局）；失效国内 site 搜索替换为关键词直搜（信通院/赛迪/国家数据局/电子标准院）；跨月日期算术改为强制日历查询；0 内容删除 —— v4.2 全部规则、搜索源、板块定义、案例、教训、模板均已原文归位 |\r\n| **4.2** | 2026-04-14 | 完全重写对齐 PROMPT.md v4.2：6步工作流含强制 Review 门禁(Step 5)；置信度三级分层(A/B/C)含来源类型标注；硬性规则(6条——时效性/仅一手源/去重/周一72h/少即是多/摘要无链接)；失败处理(6种场景)；步骤标注[确定性]/[LLM]；实际推送渠道(企微/GitHub Pages/邮件)替换9种虚拟渠道；修正板块结构(C.Views & Research / D.Capital & Corporate)；配置文件名修正(config.json) |\r\n| **3.1** | 2026-03-25 | 企微摘要修复：D/E 板块正则 `\\s+` → `\\s*` 适配空内容板块；链接长度优化 |\r\n| **3.0** | 2026-03-20 | 重大结构重组：C.People & Views + D.Analyst Insights 合并为 C.Views & Research；新增 D.Capital & Corporate（投融资/财报/IPO/收购兼并，带 inline 类型标签）；新增信息置信度三级分层（Level A/B/C）；强制跨板块去重自检；新增 Step 5 Review & 修正（6项检查）；「今日3点」改为 15-30 字趋势判断（不含产品名/数字）；总判断 ≤120 字，不可重复事件细节；新增投融资定向搜索；总量调整为 10-14 条（周一 14-20 条） |\r\n| **2.1** | 2026-03-17 | 无截断摘要重构：仅提取以句号/分号结尾的完整句子，绝不硬截断；新增 `_smart_shorten` 渐进降级策略（句子级精简→降为仅标题→移除整行）替代 `_truncate_line_to_bytes`；彻底消除 `...` 省略号截断 |\r\n| **2.0** | 2026-03-16 | 三阶段搜索策略（定向→扩展→来源溯源强制执行）；3层优先级摘要提取算法；周一72小时周末回顾窗口；防重复推送机制；时效性红线判定规则；来源标注规范 |\r\n| **1.0** | 2026-03-09 | 首次发布，支持 9 大推送渠道、结构化五板块输出、中英文双语文档 |\r\n\r\n## ❤️ 支持本项目\r\n\r\n如果这个项目对你有帮助，欢迎 [成为 Sponsor](https://github.com/sponsors/haiyangchenbj)，你的支持是持续维护和改进的动力。\r\n\r\n## 🤝 参与贡献\r\n\r\n欢迎贡献！请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解贡献指南。\r\n\r\n## 📄 开源协议\r\n\r\n[MIT License](LICENSE) — 自由使用、修改和分发。\r\n\r\n---\r\n\r\n**为每一个需要行业情报的人而构建 ❤️**\n\nFile v5.0.4:skill-card.md\n\n## Description:\n\nTurns an industry into a structured daily intelligence brief by searching, filtering, writing, validating format, and delivering reports to configured channels.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[haiyangchenbj](https://clawhub.ai/user/haiyangchenbj)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and operations teams use this skill to create recurring industry intelligence briefs with sourced items, impact judgments, machine format checks, and optional delivery to workplace channels.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Generated briefs can be sent to external chat, email, bot, or GitHub Pages destinations.\n\nMitigation: Review generated content before delivery and enable only destinations approved for the information being summarized.\n\nRisk: Delivery channels require webhooks, bot tokens, SMTP credentials, or a GitHub token.\n\nMitigation: Use least-privilege tokens or webhooks, store secrets outside generated reports, and rotate credentials if a destination is no longer trusted.\n\nRisk: Daily brief content may include stale, duplicated, or weakly sourced items if the workflow is skipped.\n\nMitigation: Keep the recency checks, first-hand source tracing, deduplication check, format pre-flight, and business review gate in place before publishing.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/haiyangchenbj/skills/data-ai-daily-brief)\n- [README](artifact/README.md)\n- [Chinese README](artifact/README_zh.md)\n- [Changelog](artifact/CHANGELOG.md)\n- [CodeBuddy](https://www.codebuddy.ai/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, HTML, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown daily brief, HTML report, JSON configuration, channel-specific messages, and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated briefs include source links, sectioned summaries, impact judgments, format pre-flight checks, and optional delivery to configured channels.]\n\n## Skill Version(s):\n\n5.0.4 (source: SKILL.md frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v5.0.4:cn_description.txt\n\n把任何行业变成一份每日情报简报。AI 自动搜集、过滤、编写并推送结构化日报到 9 大渠道，内置机器化格式自检与业务审核门禁。开箱自带 Data+AI 行业 profile，可通过配置切换至任意行业。\n\nArchive v5.0.3: 3 files, 11318 bytes\n\nFiles: _meta.json (138b), skill-card.md (2314b), SKILL.md (21914b)\n\nFile v5.0.3:SKILL.md\n\n---\nslug: data-ai-daily-brief\ndisplayName: Data AI Daily Brief\nname: data-ai-daily-brief\nversion: \"5.0.3\"\ndescription: >\n  Turn any industry into a daily intelligence briefing. An AI agent searches,\n  filters, writes, and delivers structured daily briefs to 9 channels — with\n  machine-checked formatting and a business review gate. Ships with a Data+AI\n  profile out of the box; switch to any domain via config.\n  中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道，\n  含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief.\ndescription_zh: \"行业日报生成器：将任意行业转为每日情报简报，AI agent 搜索、筛选、编写并投递至 9 个渠道，含机器格式校验与业务评审门禁；自带 Data+AI 配置，可切换任意领域。\"\nnot_for:\n  - One-off research reports or market analysis (daily recurring briefs focus)\n  - Real-time alerting or breaking-news push (batched daily digest)\n  - Original investigative journalism (aggregation and synthesis of existing sources)\n  - Publishing without the business review gate (the gate cannot be skipped)\n\nread_when:\n  - daily brief\n  - industry report\n  - industry newsletter\n  - intelligence brief\n  - 日报\n  - 行业日报\n  - 情报简报\nallowed-tools:\n  - read_file\n  - write_to_file\n  - replace_in_file\n  - execute_command\n  - web_search\n  - web_fetch\ndisable: false\n---\n\n# Industry Daily Brief\n\nAn AI-driven skill that generates a high-quality industry intelligence brief: it automatically searches, filters, writes, and delivers a structured daily report. It ships with a **Data+AI profile** as the working example, and can be switched to **any industry** through the configuration file.\n\n> **How to read this document**\n> The **Workflow**, **Confidence Tiers**, **Section Definitions**, **Format Contract**, and **Hard Rules** below are **industry-agnostic** — they are the engine. Everything inside a block marked **`[Default Profile: Data+AI]`** is an **example configuration** (vendor lists, search queries, focus areas) that you replace when targeting another domain. Do not treat the Data+AI specifics as part of the framework.\n\n## Workflow\n\nWhen the user requests a daily brief, execute the following steps in order.\n\n### Step 1: Confirm Configuration [Deterministic]\n\n1. Read the workspace `config.json` (if present).\n2. If absent, initialize defaults via `scripts/init_config.py`.\n3. Confirm the target date (default: today) and the output channels.\n\n### Step 2: Collect & Filter Information [Deterministic + LLM]\n\nUse `web_search` to gather information, applying the following priorities and filters.\n\n#### Core Principles\n\n**Relevance first, filter ruthlessly.** Every item must clearly answer: *does this affect the product roadmap, architecture, cost structure, governance, operational efficiency, or real-world adoption within the target industry?* If the answer is not a clear **yes**, exclude it.\n\n**Less is more.** Never lower the admission bar just because a section has few items. The value of the brief is precision, not item count.\n\n#### Three-Phase Search Strategy\n\n**Phase 1 — Targeted first-hand source search (mandatory).**\nFor each Tier-1 vendor in the active profile, search its official channels (site blog, release notes, GitHub releases, press wires) one by one. Also run dedicated funding / M&A / earnings queries for the tracked companies.\n\n**Phase 2 — Expanded discovery (supplementary coverage).**\nBroaden with topic keyword searches across the profile's focus areas and the date range, to catch items the targeted search missed.\n\n**Phase 3 — Source tracing (mandatory).**\nFor any item discovered via secondary media, use `web_fetch` or an additional `site:` search to trace it back to a first-hand source. Items with no traceable first-hand source are flagged **⚠️ unverified** or demoted to the Watchlist.\n\n**Coverage requirement:** every Tier-1 vendor in the active profile must receive at least one targeted search.\n\n#### Recency Window (red line)\n\n**Weekdays (Tue–Fri):** strictly cover only information **first published within the last 24 hours** (08:00 the previous day → 08:00 today, target timezone).\n\n**Monday special rule:** the window expands to **72 hours** (Friday 08:00 → Monday 08:00), covering Fri–Sun. Monday item cap is raised, and the title is marked as covering the weekend.\n\n⚠️ **Recency red line — never admit any of the following:**\n- Information whose original publish date falls outside the current window\n- Information that appeared in a previous brief\n- Stale announcements from days or weeks ago\n- Pre-announced schedules (conferences/summits) that are not a *today* first disclosure\n\n✅ **How to verify recency:**\n1. Check the original page's publish date.\n2. If it falls outside the window → exclude.\n3. Before writing, list each candidate's publish date and confirm item by item.\n\n> **Stale-news guard:** a \"big news\" item surfacing in search results must have its *original* publish date independently confirmed before admission — search ranking is not recency.\n\n#### `[Default Profile: Data+AI]` — Focus, Vendors, Sources\n\n> Replace this entire block when targeting another industry.\n\n**Focus areas:** big data, data platforms, data infrastructure, data governance, data engineering, lakehouse architecture, query engines, stream/batch processing, vector search infrastructure, open-source data ecosystem. AI items are admitted **only when they clearly affect the data platform**.\n\n**Strictly exclude:** pure-AI news (model releases, benchmarks, consumer AI), AI items with no direct data-platform link, secondhand financial/mass-media analysis, content farms / clickbait / unsourced rewrites.\n\n**Tier-1 vendors:** AWS, Google Cloud, Microsoft Azure, Databricks, Snowflake, Alibaba Cloud, Tencent Cloud, Huawei Cloud, Volcengine.\n**Tier-2 vendors:** Confluent, MongoDB, Elastic, ClickHouse, Cloudera, Starburst/Trino, dbt Labs, Fivetran, Airbyte, Dataiku, Palantir, Baidu AI Cloud, JD Cloud.\n**Chip vendors (only if directly data-platform related):** NVIDIA, Intel, AMD.\n\n**Open-source projects:** Iceberg, Hudi, Paimon, Delta Lake, Trino, Spark, Flink, Ray, Airflow, Kafka, dbt, ClickHouse, DuckDB, Milvus, Weaviate, Lance/LanceDB, StarRocks, Doris, SeaTunnel, Amoro.\n\n**Funding/IR sources:** SiliconANGLE Big Data, DBTA, InfoQ, PR Newswire, Business Wire, SEC EDGAR, company IR pages, Crunchbase News, CB Insights, PitchBook News, TechCrunch Venture.\n\n**Analyst firms:** Gartner, Forrester, IDC, a16z, Sequoia, Bessemer, Futurum Group, Constellation Research, Wikibon/SiliconANGLE Research; plus regional research institutes and policy/standards bodies relevant to the market.\n\n**Source rules:** accept only first-hand sources (official sites/blogs/release notes, GitHub repos, original posts on X/LinkedIn/blogs, earnings-call transcripts, analyst reports, PR Newswire/Business Wire). Do **not** accept secondhand financial-media analysis (analyst reports excepted).\n\n### Step 3: Write the Brief [LLM]\n\nProduce a professional brief for practitioners in the target industry, based only on the filtered items.\n\n#### Confidence Tiers\n\n- **Level A — confirmed fact:** first-hand source (official site/blog, GitHub release, earnings filing, live event). → may go into A / B / C / D.\n- **Level B — high-trust secondary:** reliable media (Reuters, Bloomberg, TechCrunch) but no first-hand doc yet. → may cautiously go into A / C with a \"media report / no official filing\" label; prefer the Watchlist.\n- **Level C — indirect signal / unverified rumor:** social leaks, community chatter, unmerged-PR speculation. → Watchlist only.\n\n#### Deduplication\n\nEach item belongs to exactly one primary section. Priority: A > B > C > D > E. **Mandatory self-check:** after writing all sections, list every event/source/product name and check for cross-section duplicates. If one event appears in two or more sections, keep the highest-priority section and delete or reduce the rest to a one-line reference (≤15 chars).\n\n#### Title & Opening\n\nTitle format: `# <Brand> Daily Brief | YYYY-MM-DD` (Monday marked as covering the weekend).\n\n**Fixed opening structure:**\n```markdown\n**Top 3 takeaways:**\n1. [a single trend judgment — direction not full event, 15–30 chars]\n2. [a single trend judgment — direction not full event, 15–30 chars]\n3. [a single trend judgment — direction not full event, 15–30 chars]\n\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]\n```\n\n**Key distinction:** the \"Top 3 takeaways\" are *not* a summary of Top Signals nor three event headlines. They are three cross-event \"directions worth taking away today.\"\n\n**Hard constraints:**\n- Each takeaway 15–30 chars; no full product names, version numbers, or specific figures; no bold.\n- A good takeaway lets the reader grasp *what direction changed* and *so what*.\n\n**Verdict constraints:** ≤120 chars; a directional judgment, not a repeat of the takeaways or of Section A event details.\n\n**Self-check:** after writing the 3 takeaways, cover Section A and read only the takeaways. If the reader can reconstruct each Section A headline and key figure from them, the takeaways read too much like a summary — rewrite.\n\n#### Sections\n\nThe five sections use **English titles** and are mandatory (a section may be empty but its header stays).\n\n**A. Top Signals (3 items).** The day's most important events; first-hand source required.\n```markdown\n### 1. Event title\n**来源：** [specific source](url)\n**摘要：** 2–3 sentences\n**为什么对数据平台重要：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**B. Product & Tech (0–6 items, less-is-more).** Strictly product & tech moves in the target industry. Each item: title, source, summary (1–2 sentences), impact judgment, WeChat summary.\n\n**C. Views & Research (0–5 items).** Two kinds of high-value content: original views from key people (founders/CEOs/CTOs in interviews, talks, blogs, X, LinkedIn) and formal research from high-credibility institutions (Gartner/Forrester/IDC/Omdia/etc., regional research bodies, top brokerages), plus officially-released policy & standards relevant to the industry. Each item: name, source, core view, mapping-to-industry judgment, WeChat summary.\n\n**D. Capital & Corporate (0–4 items, less-is-more).** Capital/company events directly relevant to the industry, with inline type tags: **【Funding】 / 【Earnings】 / 【IPO】 / 【M&A】**.\n```markdown\n### 1. 【Funding】Event title\n**来源：** [specific source](url)\n**核心数据：** amount / valuation / revenue / growth\n**摘要：** 2–3 sentences\n**对数据平台的影响：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**E. Watchlist (1–3 items).** Three kinds: **【Preview】** upcoming events, **【Demoted】** valuable items not meeting A–D bars, **【Tracking】** follow-ups whose impact is still unverified. Each item: title, source, why it's worth watching, what signal to wait for, WeChat summary.\n\n#### WeChat-Summary Field (all sections)\n\nAfter all detailed fields, every item must carry one line: `> 企微摘要：one-sentence semantic compression`.\n\nRules:\n- Semantic compression of the whole item, **≤120 chars**.\n- A standalone, self-contained complete sentence.\n- No links, no source labels.\n- **Markdown only** — never rendered in the HTML output.\n\n> The `**来源：**` and `> 企微摘要：` field markers are kept in their original Chinese form because the WeChat-push and HTML-conversion scripts (`scripts/`) parse these exact strings. When localizing the brief to another language, keep these two markers as-is or update the scripts in lockstep.\n\n#### Output Requirements\n\n- **Rank by importance, differentiate by channel.** Wider search means more candidates — rank strictly by real industry impact > source authority > topic heat; never lower the bar because more sources appeared.\n- **WeChat concise version:** keep section caps (A≤3, B≤6, C≤5, D≤4, E≤3); pick only the most important items.\n- **HTML full version:** sections may relax by 2–3 items (A still ≤3, B≤8, C≤7, D≤6, E≤5).\n- Professional, concise, restrained tone. Every item must have source, summary, and impact judgment. Total 10–14 items (Monday 14–20). Never fabricate data.\n\n### Step 4: Generate Output Files [Deterministic + LLM]\n\n1. **Markdown** `<Brand>_Daily_Brief_{date}.md`:\n   - Every item carries a `> 企微摘要：...` line.\n   - Contains all items (incl. HTML-extended ones); the WeChat-summary line marks which enter the concise push.\n   - **Source links must use Markdown link syntax `[text](url)`** — never bare text `（https://...）`. Bare URLs render as plain text in HTML and break clickable links.\n2. **HTML** `<Brand>_Daily_Brief_{date}.html`, styled per `assets/report-template.html`:\n   - Each source is a clickable hyperlink.\n   - Capital section uses colored type tags (Funding/Earnings/IPO/M&A).\n   - **No WeChat-summary lines.**\n   - Contains all items.\n\n### Step 4.5: Format Pre-flight (machine self-check, mandatory) [Deterministic]\n\n⚠️ **Run immediately after generating the MD. Must print three counts + all assertions. No output = fail = return to Step 3 and regenerate.** Do the counts with actual `grep -c`, never by eye.\n\n```\n📐 Format pre-flight\n- item count (^### \\d+\\.)            = N1\n- WeChat-summary count (^> 企微摘要：) = N2\n- section count (^## [A-E]\\.)         = N3\n- assert N1 > 0 ?                     ✅ / ❌   (at least 1; N1=0 → fail)\n- assert N1 == N2 ?                   ✅ / ❌   (if N2<N1, check for fullwidth/halfwidth colon variants, then return to Step 3)\n- assert N3 == 5 ?                    ✅ / ❌\n- section-title language (5 English) ✅ / ❌\n- numbering: each section restarts at 1, no cross-section continuation ✅ / ❌\n- item separators: a standalone `---` between every two items          ✅ / ❌\n- source-link format: every `**来源：**` line is `[text](url)`, no bare `（http...）` ✅ / ❌\n- \"Top 3\" format: `**Top 3 takeaways:**` + ordered list 1./2./3.       ✅ / ❌\n- \"Top 3\" char count: each takeaway 15–30 chars                        ✅ / ❌\n- \"Top 3\" contains product names / versions / figures / bold ?         ❌ clean / ⚠️ hit\n- verdict char count = X (≤120)                                        ✅ / ❌\n- WeChat-summary char count: each ≤120                                 ✅ / ❌\n- field-name compliance (per section, four required fields, no invented field names) ✅ / ❌\n- field order: source line first after title, WeChat-summary line last ✅ / ❌\n- conclusion: ✅ pass → Step 5 / ❌ fail → regenerate\n```\n\n**Any ❌ → return to Step 3 and regenerate the affected content.** Never patch item-count gaps or backfill summaries during the Step 5 review. This gate exists to stop \"format drift causing missing WeChat-push content\" at the root.\n\n### Step 5: Review & Fix (business layer, 7 checks) [LLM]\n\nAfter generation and before push, run one full review. Fail → no push. **Precondition: Step 4.5 must pass.**\n\n1. **Recency compliance** — verify each item's publish date against the window (forced date derivation + per-item verification table).\n2. **Cross-section dedup** — one event in two+ sections → merge into highest-priority section.\n3. **Section-admission compliance** — each item fits its section's admission bar.\n4. **Source quality** — each item has a clear first-hand source link (C may allow high-trust secondary).\n5. **Content quality** — takeaways are trend judgments (15–30 chars, not event summaries); verdict ≤120 chars, no event-detail repetition; each item follows fact → impact-judgment.\n6. **Search coverage** — every Tier-1 vendor was targeted; thin content means expand search, not pad.\n7. **Less-is-more** — item counts within range, no padding with low-quality items.\n\n> Format integrity is backstopped by the Step 4.5 machine pre-flight. On any format problem, return to Step 3 to regenerate rather than patching in review.\n\n### Step 6: Deliver (per config) [Deterministic]\n\nPer `config.json`, push to any of **9 channels** (✅ verified / 📦 community-contributed, unverified):\n\n**Regional:** ✅ **WeChat Work** (`scripts/send_wecom.py` — concise summary first <4096 bytes, then full HTML; 3-layer priority fill; no links in summary; duplicate-push lock), 📦 **DingTalk** (`send_dingtalk.py`), 📦 **Feishu/Lark** (`send_feishu.py`).\n**Global:** 📦 **Slack** (`send_slack.py`), 📦 **Discord** (`send_discord.py`), 📦 **Telegram** (`send_telegram.py`), 📦 **Microsoft Teams** (`send_teams.py`).\n**Universal:** 📦 **Email** (`send_email.py`, SMTP), ✅ **GitHub Pages** (`deploy_github.py`, auto-archives history).\n\n> **Encoding note (Windows):** under a GBK locale, running the push script directly can raise `UnicodeEncodeError` on emoji output and crash a channel mid-print. Run with `PYTHONIOENCODING=utf-8 python -X utf8 <script>` or add `sys.stdout.reconfigure(encoding='utf-8')` at the top of the entry script. If some channels fail, re-push only the failed channel with `--force` to avoid duplicate sends.\n\n## Hard Rules\n\n> These cannot be violated. They override all other guidance.\n\n1. **Stability first.** The system's only goal is zero format drift, zero missed push, zero manual repair. Do not add features, change structure, or \"optimize\" existing rules unless explicitly requested.\n2. **Recency red line.** Items whose original publish date is outside the window (weekday 24h / Monday 72h) are never admitted, no exceptions.\n3. **First-hand source required.** Every item traces to a first-hand source; no pure secondhand media analysis.\n4. **Never fabricate.** All figures, dates, versions come from the source text; no guessing.\n5. **Dedup self-check.** After all sections, run cross-section dedup; one event in at most one section.\n6. **Step 4.5 pre-flight.** After generating MD, print the counts + all assertions; any ❌ → return to Step 3. Never patch in review.\n7. **Review gate.** Step 5 must pass before push; better unsent than flawed.\n8. **Less is more.** No section lowers its bar for item count; an empty section beats a padded one.\n9. **Push authority tiers.** In automation mode, business-layer review issues may be self-corrected then pushed; a generation-stage crash (Step 4.5 ❌) must be regenerated, never self-patched; in manual mode, issues await user confirmation.\n10. **Source links are Markdown.** Source lines must use `[text](url)`; bare `（http...）` is forbidden (it breaks HTML clickable links).\n\n## Failure Handling\n\n| Scenario | Action |\n|----------|--------|\n| **Generation-stage format crash (Step 4.5 ❌)** | Return to Step 3 and regenerate the affected section or whole doc; never patch item-count gaps in review |\n| Search yields nothing | Report \"no qualifying information today\", generate an empty template (title + date only), do not push |\n| A single source is unavailable | Skip it, continue other searches, note \"⚠️ {source} unreachable\" |\n| All candidates fail review | Output the review detail, do not push, await user decision |\n| Candidates severely insufficient (A–D total < 5) | Expand search first; if still short, demote borderline items to E (tagged 【Demoted】); if still short, report and pause for user decision |\n| Push fails (webhook timeout / 403) | Retry once; if it still fails, save files to workspace and notify user to push manually |\n| Config missing | Generate defaults via `scripts/init_config.py`, then continue |\n| HTML template missing | Generate Markdown only, skip HTML, state so in output |\n| File detection with non-ASCII (e.g. Chinese) filenames | Use `find`, not `ls` — shells like Git Bash mishandle quoting of non-ASCII paths and produce false \"file missing\" results |\n\n## Output Format\n\nEach run produces, per the configured adapters:\n- **Markdown brief** (`outputs/YYYY-MM-DD/brief.md`) — the canonical source of truth\n- **HTML page** (optional) — rendered from the Markdown for web/archive viewing\n- **Channel payloads** — per-channel digests (e.g., IM summary within length limits) generated by enabled adapters\n\nStructure of the brief itself (sections, length caps, judgment placement) is defined by the profile config and enforced by the format-check step; a brief that fails format-check is not delivered.\n\n## Customization\n\n### Switch industry\nEdit `config.json` `customization`: focus areas (default Data+AI), vendor priority list, open-source project list, output language and format. Then replace the `[Default Profile: Data+AI]` block in this SKILL.md with your domain's vendors, sources, and search queries.\n\n### Add a delivery channel\nEnable it in `config.json` `adapters` and set its config:\n\n| Channel | Key | Type | Main env vars |\n|---------|-----|------|---------------|\n| WeChat Work | `wechatwork` | Webhook | `WECOM_WEBHOOK_URL` |\n| DingTalk | `dingtalk` | Webhook | `DINGTALK_WEBHOOK_URL`, `DINGTALK_SECRET` |\n| Feishu | `feishu` | Webhook | `FEISHU_WEBHOOK_URL`, `FEISHU_SECRET` |\n| Slack | `slack` | Webhook | `SLACK_WEBHOOK_URL` |\n| Discord | `discord` | Webhook | `DISCORD_WEBHOOK_URL` |\n| Telegram | `telegram` | Bot API | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` |\n| Teams | `teams` | Webhook | `TEAMS_WEBHOOK_URL` |\n| Email | `email` | SMTP | `SMTP_HOST`, `SMTP_USER`, `SMTP_PASSWORD` |\n| GitHub | `github` | API | `GITHUB_TOKEN`, `GITHUB_USER` |\n\n### Adjust the schedule\nEdit `config.json` `cron`:\n```json\n{ \"schedule\": \"0 8 * * 1-5\", \"timezone\": \"Asia/Shanghai\" }\n```\n\n---\n\n*Default profile: Data+AI infrastructure. Framework is industry-agnostic — configure for any domain with public news sources.*\n\nFile v5.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn70yg6zwmkftx4939qrs89awx82rr9a\",\n  \"slug\": \"data-ai-daily-brief\",\n  \"version\": \"5.0.3\",\n  \"publishedAt\": 1788837227482\n}\n\nFile v5.0.3:skill-card.md\n\n## Description:\n\nTurn any industry into a daily intelligence briefing by searching, filtering, writing, and delivering structured daily briefs through configured channels with formatting checks and a business review gate.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[haiyangchenbj](https://clawhub.ai/user/haiyangchenbj)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and operations teams use this skill to generate recurring industry intelligence briefs from public sources, with a default Data+AI profile that can be adapted to other domains. The skill creates reviewed Markdown and HTML reports and can deliver channel-specific digests through configured adapters.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Briefs may include sensitive internal content or be pushed to unintended delivery channels.\n\nMitigation: Review generated briefs before delivery and check config.json so only intended delivery channels are enabled.\n\nRisk: Webhook, API, SMTP, or GitHub credentials may be exposed or over-privileged.\n\nMitigation: Store credentials in a secure secret store and grant only the least privilege needed for each channel.\n\nRisk: Generated industry summaries can be incorrect, stale, duplicated, or insufficiently sourced.\n\nMitigation: Use the skill's recency, source-quality, deduplication, and business review gates before publishing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/haiyangchenbj/skills/data-ai-daily-brief)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Files, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown and HTML report files with channel-specific delivery payloads]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes format pre-flight checks, source-link requirements, recency review, duplicate-push controls for supported channels, and configurable delivery adapters.]\n\n## Skill Version(s):\n\n5.0.3 (source: server release evidence and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v5.0.2: 3 files, 11199 bytes\n\nFiles: skill-card.md (2117b), SKILL.md (21914b), _meta.json (138b)\n\nFile v5.0.2:SKILL.md\n\n---\nslug: data-ai-daily-brief\ndisplayName: Data AI Daily Brief\nname: data-ai-daily-brief\nversion: \"5.0.2\"\ndescription: >\n  Turn any industry into a daily intelligence briefing. An AI agent searches,\n  filters, writes, and delivers structured daily briefs to 9 channels — with\n  machine-checked formatting and a business review gate. Ships with a Data+AI\n  profile out of the box; switch to any domain via config.\n  中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道，\n  含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief.\ndescription_zh: \"行业日报生成器：将任意行业转为每日情报简报，AI agent 搜索、筛选、编写并投递至 9 个渠道，含机器格式校验与业务评审门禁；自带 Data+AI 配置，可切换任意领域。\"\nnot_for:\n  - One-off research reports or market analysis (daily recurring briefs focus)\n  - Real-time alerting or breaking-news push (batched daily digest)\n  - Original investigative journalism (aggregation and synthesis of existing sources)\n  - Publishing without the business review gate (the gate cannot be skipped)\n\nread_when:\n  - daily brief\n  - industry report\n  - industry newsletter\n  - intelligence brief\n  - 日报\n  - 行业日报\n  - 情报简报\nallowed-tools:\n  - read_file\n  - write_to_file\n  - replace_in_file\n  - execute_command\n  - web_search\n  - web_fetch\ndisable: false\n---\n\n# Industry Daily Brief\n\nAn AI-driven skill that generates a high-quality industry intelligence brief: it automatically searches, filters, writes, and delivers a structured daily report. It ships with a **Data+AI profile** as the working example, and can be switched to **any industry** through the configuration file.\n\n> **How to read this document**\n> The **Workflow**, **Confidence Tiers**, **Section Definitions**, **Format Contract**, and **Hard Rules** below are **industry-agnostic** — they are the engine. Everything inside a block marked **`[Default Profile: Data+AI]`** is an **example configuration** (vendor lists, search queries, focus areas) that you replace when targeting another domain. Do not treat the Data+AI specifics as part of the framework.\n\n## Workflow\n\nWhen the user requests a daily brief, execute the following steps in order.\n\n### Step 1: Confirm Configuration [Deterministic]\n\n1. Read the workspace `config.json` (if present).\n2. If absent, initialize defaults via `scripts/init_config.py`.\n3. Confirm the target date (default: today) and the output channels.\n\n### Step 2: Collect & Filter Information [Deterministic + LLM]\n\nUse `web_search` to gather information, applying the following priorities and filters.\n\n#### Core Principles\n\n**Relevance first, filter ruthlessly.** Every item must clearly answer: *does this affect the product roadmap, architecture, cost structure, governance, operational efficiency, or real-world adoption within the target industry?* If the answer is not a clear **yes**, exclude it.\n\n**Less is more.** Never lower the admission bar just because a section has few items. The value of the brief is precision, not item count.\n\n#### Three-Phase Search Strategy\n\n**Phase 1 — Targeted first-hand source search (mandatory).**\nFor each Tier-1 vendor in the active profile, search its official channels (site blog, release notes, GitHub releases, press wires) one by one. Also run dedicated funding / M&A / earnings queries for the tracked companies.\n\n**Phase 2 — Expanded discovery (supplementary coverage).**\nBroaden with topic keyword searches across the profile's focus areas and the date range, to catch items the targeted search missed.\n\n**Phase 3 — Source tracing (mandatory).**\nFor any item discovered via secondary media, use `web_fetch` or an additional `site:` search to trace it back to a first-hand source. Items with no traceable first-hand source are flagged **⚠️ unverified** or demoted to the Watchlist.\n\n**Coverage requirement:** every Tier-1 vendor in the active profile must receive at least one targeted search.\n\n#### Recency Window (red line)\n\n**Weekdays (Tue–Fri):** strictly cover only information **first published within the last 24 hours** (08:00 the previous day → 08:00 today, target timezone).\n\n**Monday special rule:** the window expands to **72 hours** (Friday 08:00 → Monday 08:00), covering Fri–Sun. Monday item cap is raised, and the title is marked as covering the weekend.\n\n⚠️ **Recency red line — never admit any of the following:**\n- Information whose original publish date falls outside the current window\n- Information that appeared in a previous brief\n- Stale announcements from days or weeks ago\n- Pre-announced schedules (conferences/summits) that are not a *today* first disclosure\n\n✅ **How to verify recency:**\n1. Check the original page's publish date.\n2. If it falls outside the window → exclude.\n3. Before writing, list each candidate's publish date and confirm item by item.\n\n> **Stale-news guard:** a \"big news\" item surfacing in search results must have its *original* publish date independently confirmed before admission — search ranking is not recency.\n\n#### `[Default Profile: Data+AI]` — Focus, Vendors, Sources\n\n> Replace this entire block when targeting another industry.\n\n**Focus areas:** big data, data platforms, data infrastructure, data governance, data engineering, lakehouse architecture, query engines, stream/batch processing, vector search infrastructure, open-source data ecosystem. AI items are admitted **only when they clearly affect the data platform**.\n\n**Strictly exclude:** pure-AI news (model releases, benchmarks, consumer AI), AI items with no direct data-platform link, secondhand financial/mass-media analysis, content farms / clickbait / unsourced rewrites.\n\n**Tier-1 vendors:** AWS, Google Cloud, Microsoft Azure, Databricks, Snowflake, Alibaba Cloud, Tencent Cloud, Huawei Cloud, Volcengine.\n**Tier-2 vendors:** Confluent, MongoDB, Elastic, ClickHouse, Cloudera, Starburst/Trino, dbt Labs, Fivetran, Airbyte, Dataiku, Palantir, Baidu AI Cloud, JD Cloud.\n**Chip vendors (only if directly data-platform related):** NVIDIA, Intel, AMD.\n\n**Open-source projects:** Iceberg, Hudi, Paimon, Delta Lake, Trino, Spark, Flink, Ray, Airflow, Kafka, dbt, ClickHouse, DuckDB, Milvus, Weaviate, Lance/LanceDB, StarRocks, Doris, SeaTunnel, Amoro.\n\n**Funding/IR sources:** SiliconANGLE Big Data, DBTA, InfoQ, PR Newswire, Business Wire, SEC EDGAR, company IR pages, Crunchbase News, CB Insights, PitchBook News, TechCrunch Venture.\n\n**Analyst firms:** Gartner, Forrester, IDC, a16z, Sequoia, Bessemer, Futurum Group, Constellation Research, Wikibon/SiliconANGLE Research; plus regional research institutes and policy/standards bodies relevant to the market.\n\n**Source rules:** accept only first-hand sources (official sites/blogs/release notes, GitHub repos, original posts on X/LinkedIn/blogs, earnings-call transcripts, analyst reports, PR Newswire/Business Wire). Do **not** accept secondhand financial-media analysis (analyst reports excepted).\n\n### Step 3: Write the Brief [LLM]\n\nProduce a professional brief for practitioners in the target industry, based only on the filtered items.\n\n#### Confidence Tiers\n\n- **Level A — confirmed fact:** first-hand source (official site/blog, GitHub release, earnings filing, live event). → may go into A / B / C / D.\n- **Level B — high-trust secondary:** reliable media (Reuters, Bloomberg, TechCrunch) but no first-hand doc yet. → may cautiously go into A / C with a \"media report / no official filing\" label; prefer the Watchlist.\n- **Level C — indirect signal / unverified rumor:** social leaks, community chatter, unmerged-PR speculation. → Watchlist only.\n\n#### Deduplication\n\nEach item belongs to exactly one primary section. Priority: A > B > C > D > E. **Mandatory self-check:** after writing all sections, list every event/source/product name and check for cross-section duplicates. If one event appears in two or more sections, keep the highest-priority section and delete or reduce the rest to a one-line reference (≤15 chars).\n\n#### Title & Opening\n\nTitle format: `# <Brand> Daily Brief | YYYY-MM-DD` (Monday marked as covering the weekend).\n\n**Fixed opening structure:**\n```markdown\n**Top 3 takeaways:**\n1. [a single trend judgment — direction not full event, 15–30 chars]\n2. [a single trend judgment — direction not full event, 15–30 chars]\n3. [a single trend judgment — direction not full event, 15–30 chars]\n\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]\n```\n\n**Key distinction:** the \"Top 3 takeaways\" are *not* a summary of Top Signals nor three event headlines. They are three cross-event \"directions worth taking away today.\"\n\n**Hard constraints:**\n- Each takeaway 15–30 chars; no full product names, version numbers, or specific figures; no bold.\n- A good takeaway lets the reader grasp *what direction changed* and *so what*.\n\n**Verdict constraints:** ≤120 chars; a directional judgment, not a repeat of the takeaways or of Section A event details.\n\n**Self-check:** after writing the 3 takeaways, cover Section A and read only the takeaways. If the reader can reconstruct each Section A headline and key figure from them, the takeaways read too much like a summary — rewrite.\n\n#### Sections\n\nThe five sections use **English titles** and are mandatory (a section may be empty but its header stays).\n\n**A. Top Signals (3 items).** The day's most important events; first-hand source required.\n```markdown\n### 1. Event title\n**来源：** [specific source](url)\n**摘要：** 2–3 sentences\n**为什么对数据平台重要：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**B. Product & Tech (0–6 items, less-is-more).** Strictly product & tech moves in the target industry. Each item: title, source, summary (1–2 sentences), impact judgment, WeChat summary.\n\n**C. Views & Research (0–5 items).** Two kinds of high-value content: original views from key people (founders/CEOs/CTOs in interviews, talks, blogs, X, LinkedIn) and formal research from high-credibility institutions (Gartner/Forrester/IDC/Omdia/etc., regional research bodies, top brokerages), plus officially-released policy & standards relevant to the industry. Each item: name, source, core view, mapping-to-industry judgment, WeChat summary.\n\n**D. Capital & Corporate (0–4 items, less-is-more).** Capital/company events directly relevant to the industry, with inline type tags: **【Funding】 / 【Earnings】 / 【IPO】 / 【M&A】**.\n```markdown\n### 1. 【Funding】Event title\n**来源：** [specific source](url)\n**核心数据：** amount / valuation / revenue / growth\n**摘要：** 2–3 sentences\n**对数据平台的影响：** ...\n> 企微摘要：one-line semantic compression\n```\n\n**E. Watchlist (1–3 items).** Three kinds: **【Preview】** upcoming events, **【Demoted】** valuable items not meeting A–D bars, **【Tracking】** follow-ups whose impact is still unverified. Each item: title, source, why it's worth watching, what signal to wait for, WeChat summary.\n\n#### WeChat-Summary Field (all sections)\n\nAfter all detailed fields, every item must carry one line: `> 企微摘要：one-sentence semantic compression`.\n\nRules:\n- Semantic compression of the whole item, **≤120 chars**.\n- A standalone, self-contained complete sentence.\n- No links, no source labels.\n- **Markdown only** — never rendered in the HTML output.\n\n> The `**来源：**` and `> 企微摘要：` field markers are kept in their original Chinese form because the WeChat-push and HTML-conversion scripts (`scripts/`) parse these exact strings. When localizing the brief to another language, keep these two markers as-is or update the scripts in lockstep.\n\n#### Output Requirements\n\n- **Rank by importance, differentiate by channel.** Wider search means more candidates — rank strictly by real industry impact > source authority > topic heat; never lower the bar because more sources appeared.\n- **WeChat concise version:** keep section caps (A≤3, B≤6, C≤5, D≤4, E≤3); pick only the most important items.\n- **HTML full version:** sections may relax by 2–3 items (A still ≤3, B≤8, C≤7, D≤6, E≤5).\n- Professional, concise, restrained tone. Every item must have source, summary, and impact judgment. Total 10–14 items (Monday 14–20). Never fabricate data.\n\n### Step 4: Generate Output Files [Deterministic + LLM]\n\n1. **Markdown** `<Brand>_Daily_Brief_{date}.md`:\n   - Every item carries a `> 企微摘要：...` line.\n   - Contains all items (incl. HTML-extended ones); the WeChat-summary line marks which enter the concise push.\n   - **Source links must use Markdown link syntax `[text](url)`** — never bare text `（https://...）`. Bare URLs render as plain text in HTML and break clickable links.\n2. **HTML** `<Brand>_Daily_Brief_{date}.html`, styled per `assets/report-template.html`:\n   - Each source is a clickable hyperlink.\n   - Capital section uses colored type tags (Funding/Earnings/IPO/M&A).\n   - **No WeChat-summary lines.**\n   - Contains all items.\n\n### Step 4.5: Format Pre-flight (machine self-check, mandatory) [Deterministic]\n\n⚠️ **Run immediately after generating the MD. Must print three counts + all assertions. No output = fail = return to Step 3 and regenerate.** Do the counts with actual `grep -c`, never by eye.\n\n```\n📐 Format pre-flight\n- item count (^### \\d+\\.)            = N1\n- WeChat-summary count (^> 企微摘要：) = N2\n- section count (^## [A-E]\\.)         = N3\n- assert N1 > 0 ?                     ✅ / ❌   (at least 1; N1=0 → fail)\n- assert N1 == N2 ?                   ✅ / ❌   (if N2<N1, check for fullwidth/halfwidth colon variants, then return to Step 3)\n- assert N3 == 5 ?                    ✅ / ❌\n- section-title language (5 English) ✅ / ❌\n- numbering: each section restarts at 1, no cross-section continuation ✅ / ❌\n- item separators: a standalone `---` between every two items          ✅ / ❌\n- source-link format: every `**来源：**` line is `[text](url)`, no bare `（http...）` ✅ / ❌\n- \"Top 3\" format: `**Top 3 takeaways:**` + ordered list 1./2./3.       ✅ / ❌\n- \"Top 3\" char count: each takeaway 15–30 chars                        ✅ / ❌\n- \"Top 3\" contains product names / versions / figures / bold ?         ❌ clean / ⚠️ hit\n- verdict char count = X (≤120)                                        ✅ / ❌\n- WeChat-summary char count: each ≤120                                 ✅ / ❌\n- field-name compliance (per section, four required fields, no invented field names) ✅ / ❌\n- field order: source line first after title, WeChat-summary line last ✅ / ❌\n- conclusion: ✅ pass → Step 5 / ❌ fail → regenerate\n```\n\n**Any ❌ → return to Step 3 and regenerate the affected content.** Never patch item-count gaps or backfill summaries during the Step 5 review. This gate exists to stop \"format drift causing missing WeChat-push content\" at the root.\n\n### Step 5: Review & Fix (business layer, 7 checks) [LLM]\n\nAfter generation and before push, run one full review. Fail → no push. **Precondition: Step 4.5 must pass.**\n\n1. **Recency compliance** — verify each item's publish date against the window (forced date derivation + per-item verification table).\n2. **Cross-section dedup** — one event in two+ sections → merge into highest-priority section.\n3. **Section-admission compliance** — each item fits its section's admission bar.\n4. **Source quality** — each item has a clear first-hand source link (C may allow high-trust secondary).\n5. **Content quality** — takeaways are trend judgments (15–30 chars, not event summaries); verdict ≤120 chars, no event-detail repetition; each item follows fact → impact-judgment.\n6. **Search coverage** — every Tier-1 vendor was targeted; thin content means expand search, not pad.\n7. **Less-is-more** — item counts within range, no padding with low-quality items.\n\n> Format integrity is backstopped by the Step 4.5 machine pre-flight. On any format problem, return to Step 3 to regenerate rather than patching in review.\n\n### Step 6: Deliver (per config) [Deterministic]\n\nPer `config.json`, push to any of **9 channels** (✅ verified / 📦 community-contributed, unverified):\n\n**Regional:** ✅ **WeChat Work** (`scripts/send_wecom.py` — concise summary first <4096 bytes, then full HTML; 3-layer priority fill; no links in summary; duplicate-push lock), 📦 **DingTalk** (`send_dingtalk.py`), 📦 **Feishu/Lark** (`send_feishu.py`).\n**Global:** 📦 **Slack** (`send_slack.py`), 📦 **Discord** (`send_discord.py`), 📦 **Telegram** (`send_telegram.py`), 📦 **Microsoft Teams** (`send_teams.py`).\n**Universal:** 📦 **Email** (`send_email.py`, SMTP), ✅ **GitHub Pages** (`deploy_github.py`, auto-archives history).\n\n> **Encoding note (Windows):** under a GBK locale, running the push script directly can raise `UnicodeEncodeError` on emoji output and crash a channel mid-print. Run with `PYTHONIOENCODING=utf-8 python -X utf8 <script>` or add `sys.stdout.reconfigure(encoding='utf-8')` at the top of the entry script. If some channels fail, re-push only the failed channel with `--force` to avoid duplicate sends.\n\n## Hard Rules\n\n> These cannot be violated. They override all other guidance.\n\n1. **Stability first.** The system's only goal is zero format drift, zero missed push, zero manual repair. Do not add features, change structure, or \"optimize\" existing rules unless explicitly requested.\n2. **Recency red line.** Items whose original publish date is outside the window (weekday 24h / Monday 72h) are never admitted, no exceptions.\n3. **First-hand source required.** Every item traces to a first-hand source; no pure secondhand media analysis.\n4. **Never fabricate.** All figures, dates, versions come from the source text; no guessing.\n5. **Dedup self-check.** After all sections, run cross-section dedup; one event in at most one section.\n6. **Step 4.5 pre-flight.** After generating MD, print the counts + all assertions; any ❌ → return to Step 3. Never patch in review.\n7. **Review gate.** Step 5 must pass before push; better unsent than flawed.\n8. **Less is more.** No section lowers its bar for item count; an empty section beats a padded one.\n9. **Push authority tiers.** In automation mode, business-layer review issues may be self-corrected then pushed; a generation-stage crash (Step 4.5 ❌) must be regenerated, never self-patched; in manual mode, issues await user confirmation.\n10. **Source links are Markdown.** Source lines must use `[text](url)`; bare `（http...）` is forbidden (it breaks HTML clickable links).\n\n## Failure Handling\n\n| Scenario | Action |\n|----------|--------|\n| **Generation-stage format crash (Step 4.5 ❌)** | Return to Step 3 and regenerate the affected section or whole doc; never patch item-count gaps in review |\n| Search yields nothing | Report \"no qualifying information today\", generate an empty template (title + date only), do not push |\n| A single source is unavailable | Skip it, continue other searches, note \"⚠️ {source} unreachable\" |\n| All candidates fail review | Output the review detail, do not push, await user decision |\n| Candidates severely insufficient (A–D total < 5) | Expand search first; if still short, demote borderline items to E (tagged 【Demoted】); if still short, report and pause for user decision |\n| Push fails (webhook timeout / 403) | Retry once; if it still fails, save files to workspace and notify user to push manually |\n| Config missing | Generate defaults via `scripts/init_config.py`, then continue |\n| HTML template missing | Generate Markdown only, skip HTML, state so in output |\n| File detection with non-ASCII (e.g. Chinese) filenames | Use `find`, not `ls` — shells like Git Bash mishandle quoting of non-ASCII paths and produce false \"file missing\" results |\n\n## Output Format\n\nEach run produces, per the configured adapters:\n- **Markdown brief** (`outputs/YYYY-MM-DD/brief.md`) — the canonical source of truth\n- **HTML page** (optional) — rendered from the Markdown for web/archive viewing\n- **Channel payloads** — per-channel digests (e.g., IM summary within length limits) generated by enabled adapters\n\nStructure of the brief itself (sections, length caps, judgment placement) is defined by the profile config and enforced by the format-check step; a brief that fails format-check is not delivered.\n\n## Customization\n\n### Switch industry\nEdit `config.json` `customization`: focus areas (default Data+AI), vendor priority list, open-source project list, output language and format. Then replace the `[Default Profile: Data+AI]` block in this SKILL.md with your domain's vendors, sources, and search queries.\n\n### Add a delivery channel\nEnable it in `config.json` `adapters` and set its config:\n\n| Channel | Key | Type | Main env vars |\n|---------|-----|------|---------------|\n| WeChat Work | `wechatwork` | Webhook | `WECOM_WEBHOOK_URL` |\n| DingTalk | `dingtalk` | Webhook | `DINGTALK_WEBHOOK_URL`, `DINGTALK_SECRET` |\n| Feishu | `feishu` | Webhook | `FEISHU_WEBHOOK_URL`, `FEISHU_SECRET` |\n| Slack | `slack` | Webhook | `SLACK_WEBHOOK_URL` |\n| Discord | `discord` | Webhook | `DISCORD_WEBHOOK_URL` |\n| Telegram | `telegram` | Bot API | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` |\n| Teams | `teams` | Webhook | `TEAMS_WEBHOOK_URL` |\n| Email | `email` | SMTP | `SMTP_HOST`, `SMTP_USER`, `SMTP_PASSWORD` |\n| GitHub | `github` | API | `GITHUB_TOKEN`, `GITHUB_USER` |\n\n### Adjust the schedule\nEdit `config.json` `cron`:\n```json\n{ \"schedule\": \"0 8 * * 1-5\", \"timezone\": \"Asia/Shanghai\" }\n```\n\n---\n\n*Default profile: Data+AI infrastructure. Framework is industry-agnostic — configure for any domain with public news sources.*\n\nFile v5.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn70yg6zwmkftx4939qrs89awx82rr9a\",\n  \"slug\": \"data-ai-daily-brief\",\n  \"version\": \"5.0.2\",\n  \"publishedAt\": 1787551785927\n}\n\nFile v5.0.2:skill-card.md\n\n## Description:\n\nTurn any industry into a daily intelligence briefing: an AI agent searches, filters, writes, and delivers structured daily briefs to configured channels with machine-checked formatting and a business review gate.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[haiyangchenbj](https://clawhub.ai/user/haiyangchenbj)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to produce recurring industry intelligence briefs from public sources, with a Data+AI profile included as the default configuration. It supports brief generation, format checks, review before publishing, and delivery to configured channels.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Generated briefs may be delivered to third-party chat, email, or publishing services using configured credentials.\n\nMitigation: Review config.json destinations and enable only intended channels before running delivery.\n\nRisk: Industry summaries can include incorrect, stale, or weakly sourced information if review is skipped.\n\nMitigation: Use the built-in business review gate, recency checks, and source-quality checks before publishing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/haiyangchenbj/skills/data-ai-daily-brief)\n- [Publisher profile](https://clawhub.ai/user/haiyangchenbj)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Files, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown brief, optional HTML page, channel payloads, and review guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated briefs include source links, sectioned summaries, format checks, and channel-specific delivery payloads when configured.]\n\n## Skill Version(s):\n\n5.0.2 (source: server release evidence and frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v5.0.1: 19 files, 67275 bytes\n\nFiles: _meta.json (138b), assets/report-template.html (5625b), CHANGELOG.md (11449b), cn_description.txt (251b), CONTRIBUTING.md (1936b), README_zh.md (17444b), README.md (17219b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2364b), SKILL.md (21052b)\n\nFile v5.0.1:SKILL.md\n\n---\r\nname: data-ai-daily-brief\r\nversion: \"5.0.1\"\r\ndescription: >\r\n  Turn any industry into a daily intelligence briefing. An AI agent searches,\r\n  filters, writes, and delivers structured daily briefs to 9 channels — with\r\n  machine-checked formatting and a business review gate. Ships with a Data+AI\r\n  profile out of the box; switch to any domain via config.\r\ndescription_zh: \"行业日报生成器：将任意行业转为每日情报简报，AI agent 搜索、筛选、编写并投递至 9 个渠道，含机器格式校验与业务评审门禁；自带 Data+AI 配置，可切换任意领域。\"\r\n\r\nread_when:\r\n  - daily brief\r\n  - industry report\r\n  - industry newsletter\r\n  - intelligence brief\r\n  - 日报\r\n  - 行业日报\r\n  - 情报简报\r\nallowed-tools:\r\n  - read_file\r\n  - write_to_file\r\n  - replace_in_file\r\n  - execute_command\r\n  - web_search\r\n  - web_fetch\r\ndisable: false\r\n---\r\n\r\n# Industry Daily Brief\r\n\r\nAn AI-driven skill that generates a high-quality industry intelligence brief: it automatically searches, filters, writes, and delivers a structured daily report. It ships with a **Data+AI profile** as the working example, and can be switched to **any industry** through the configuration file.\r\n\r\n> **How to read this document**\r\n> The **Workflow**, **Confidence Tiers**, **Section Definitions**, **Format Contract**, and **Hard Rules** below are **industry-agnostic** — they are the engine. Everything inside a block marked **`[Default Profile: Data+AI]`** is an **example configuration** (vendor lists, search queries, focus areas) that you replace when targeting another domain. Do not treat the Data+AI specifics as part of the framework.\r\n\r\n## Workflow\r\n\r\nWhen the user requests a daily brief, execute the following steps in order.\r\n\r\n### Step 1: Confirm Configuration [Deterministic]\r\n\r\n1. Read the workspace `config.json` (if present).\r\n2. If absent, initialize defaults via `scripts/init_config.py`.\r\n3. Confirm the target date (default: today) and the output channels.\r\n\r\n### Step 2: Collect & Filter Information [Deterministic + LLM]\r\n\r\nUse `web_search` to gather information, applying the following priorities and filters.\r\n\r\n#### Core Principles\r\n\r\n**Relevance first, filter ruthlessly.** Every item must clearly answer: *does this affect the product roadmap, architecture, cost structure, governance, operational efficiency, or real-world adoption within the target industry?* If the answer is not a clear **yes**, exclude it.\r\n\r\n**Less is more.** Never lower the admission bar just because a section has few items. The value of the brief is precision, not item count.\r\n\r\n#### Three-Phase Search Strategy\r\n\r\n**Phase 1 — Targeted first-hand source search (mandatory).**\r\nFor each Tier-1 vendor in the active profile, search its official channels (site blog, release notes, GitHub releases, press wires) one by one. Also run dedicated funding / M&A / earnings queries for the tracked companies.\r\n\r\n**Phase 2 — Expanded discovery (supplementary coverage).**\r\nBroaden with topic keyword searches across the profile's focus areas and the date range, to catch items the targeted search missed.\r\n\r\n**Phase 3 — Source tracing (mandatory).**\r\nFor any item discovered via secondary media, use `web_fetch` or an additional `site:` search to trace it back to a first-hand source. Items with no traceable first-hand source are flagged **⚠️ unverified** or demoted to the Watchlist.\r\n\r\n**Coverage requirement:** every Tier-1 vendor in the active profile must receive at least one targeted search.\r\n\r\n#### Recency Window (red line)\r\n\r\n**Weekdays (Tue–Fri):** strictly cover only information **first published within the last 24 hours** (08:00 the previous day → 08:00 today, target timezone).\r\n\r\n**Monday special rule:** the window expands to **72 hours** (Friday 08:00 → Monday 08:00), covering Fri–Sun. Monday item cap is raised, and the title is marked as covering the weekend.\r\n\r\n⚠️ **Recency red line — never admit any of the following:**\r\n- Information whose original publish date falls outside the current window\r\n- Information that appeared in a previous brief\r\n- Stale announcements from days or weeks ago\r\n- Pre-announced schedules (conferences/summits) that are not a *today* first disclosure\r\n\r\n✅ **How to verify recency:**\r\n1. Check the original page's publish date.\r\n2. If it falls outside the window → exclude.\r\n3. Before writing, list each candidate's publish date and confirm item by item.\r\n\r\n> **Stale-news guard:** a \"big news\" item surfacing in search results must have its *original* publish date independently confirmed before admission — search ranking is not recency.\r\n\r\n#### `[Default Profile: Data+AI]` — Focus, Vendors, Sources\r\n\r\n> Replace this entire block when targeting another industry.\r\n\r\n**Focus areas:** big data, data platforms, data infrastructure, data governance, data engineering, lakehouse architecture, query engines, stream/batch processing, vector search infrastructure, open-source data ecosystem. AI items are admitted **only when they clearly affect the data platform**.\r\n\r\n**Strictly exclude:** pure-AI news (model releases, benchmarks, consumer AI), AI items with no direct data-platform link, secondhand financial/mass-media analysis, content farms / clickbait / unsourced rewrites.\r\n\r\n**Tier-1 vendors:** AWS, Google Cloud, Microsoft Azure, Databricks, Snowflake, Alibaba Cloud, Tencent Cloud, Huawei Cloud, Volcengine.\r\n**Tier-2 vendors:** Confluent, MongoDB, Elastic, ClickHouse, Cloudera, Starburst/Trino, dbt Labs, Fivetran, Airbyte, Dataiku, Palantir, Baidu AI Cloud, JD Cloud.\r\n**Chip vendors (only if directly data-platform related):** NVIDIA, Intel, AMD.\r\n\r\n**Open-source projects:** Iceberg, Hudi, Paimon, Delta Lake, Trino, Spark, Flink, Ray, Airflow, Kafka, dbt, ClickHouse, DuckDB, Milvus, Weaviate, Lance/LanceDB, StarRocks, Doris, SeaTunnel, Amoro.\r\n\r\n**Funding/IR sources:** SiliconANGLE Big Data, DBTA, InfoQ, PR Newswire, Business Wire, SEC EDGAR, company IR pages, Crunchbase News, CB Insights, PitchBook News, TechCrunch Venture.\r\n\r\n**Analyst firms:** Gartner, Forrester, IDC, a16z, Sequoia, Bessemer, Futurum Group, Constellation Research, Wikibon/SiliconANGLE Research; plus regional research institutes and policy/standards bodies relevant to the market.\r\n\r\n**Source rules:** accept only first-hand sources (official sites/blogs/release notes, GitHub repos, original posts on X/LinkedIn/blogs, earnings-call transcripts, analyst reports, PR Newswire/Business Wire). Do **not** accept secondhand financial-media analysis (analyst reports excepted).\r\n\r\n### Step 3: Write the Brief [LLM]\r\n\r\nProduce a professional brief for practitioners in the target industry, based only on the filtered items.\r\n\r\n#### Confidence Tiers\r\n\r\n- **Level A — confirmed fact:** first-hand source (official site/blog, GitHub release, earnings filing, live event). → may go into A / B / C / D.\r\n- **Level B — high-trust secondary:** reliable media (Reuters, Bloomberg, TechCrunch) but no first-hand doc yet. → may cautiously go into A / C with a \"media report / no official filing\" label; prefer the Watchlist.\r\n- **Level C — indirect signal / unverified rumor:** social leaks, community chatter, unmerged-PR speculation. → Watchlist only.\r\n\r\n#### Deduplication\r\n\r\nEach item belongs to exactly one primary section. Priority: A > B > C > D > E. **Mandatory self-check:** after writing all sections, list every event/source/product name and check for cross-section duplicates. If one event appears in two or more sections, keep the highest-priority section and delete or reduce the rest to a one-line reference (≤15 chars).\r\n\r\n#### Title & Opening\r\n\r\nTitle format: `# <Brand> Daily Brief | YYYY-MM-DD` (Monday marked as covering the weekend).\r\n\r\n**Fixed opening structure:**\r\n```markdown\r\n**Top 3 takeaways:**\r\n1. [a single trend judgment — direction not full event, 15–30 chars]\r\n2. [a single trend judgment — direction not full event, 15–30 chars]\r\n3. [a single trend judgment — direction not full event, 15–30 chars]\r\n\r\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]\r\n```\r\n\r\n**Key distinction:** the \"Top 3 takeaways\" are *not* a summary of Top Signals nor three event headlines. They are three cross-event \"directions worth taking away today.\"\r\n\r\n**Hard constraints:**\r\n- Each takeaway 15–30 chars; no full product names, version numbers, or specific figures; no bold.\r\n- A good takeaway lets the reader grasp *what direction changed* and *so what*.\r\n\r\n**Verdict constraints:** ≤120 chars; a directional judgment, not a repeat of the takeaways or of Section A event details.\r\n\r\n**Self-check:** after writing the 3 takeaways, cover Section A and read only the takeaways. If the reader can reconstruct each Section A headline and key figure from them, the takeaways read too much like a summary — rewrite.\r\n\r\n#### Sections\r\n\r\nThe five sections use **English titles** and are mandatory (a section may be empty but its header stays).\r\n\r\n**A. Top Signals (3 items).** The day's most important events; first-hand source required.\r\n```markdown\r\n### 1. Event title\r\n**来源：** [specific source](url)\r\n**摘要：** 2–3 sentences\r\n**为什么对数据平台重要：** ...\r\n> 企微摘要：one-line semantic compression\r\n```\r\n\r\n**B. Product & Tech (0–6 items, less-is-more).** Strictly product & tech moves in the target industry. Each item: title, source, summary (1–2 sentences), impact judgment, WeChat summary.\r\n\r\n**C. Views & Research (0–5 items).** Two kinds of high-value content: original views from key people (founders/CEOs/CTOs in interviews, talks, blogs, X, LinkedIn) and formal research from high-credibility institutions (Gartner/Forrester/IDC/Omdia/etc., regional research bodies, top brokerages), plus officially-released policy & standards relevant to the industry. Each item: name, source, core view, mapping-to-industry judgment, WeChat summary.\r\n\r\n**D. Capital & Corporate (0–4 items, less-is-more).** Capital/company events directly relevant to the industry, with inline type tags: **【Funding】 / 【Earnings】 / 【IPO】 / 【M&A】**.\r\n```markdown\r\n### 1. 【Funding】Event title\r\n**来源：** [specific source](url)\r\n**核心数据：** amount / valuation / revenue / growth\r\n**摘要：** 2–3 sentences\r\n**对数据平台的影响：** ...\r\n> 企微摘要：one-line semantic compression\r\n```\r\n\r\n**E. Watchlist (1–3 items).** Three kinds: **【Preview】** upcoming events, **【Demoted】** valuable items not meeting A–D bars, **【Tracking】** follow-ups whose impact is still unverified. Each item: title, source, why it's worth watching, what signal to wait for, WeChat summary.\r\n\r\n#### WeChat-Summary Field (all sections)\r\n\r\nAfter all detailed fields, every item must carry one line: `> 企微摘要：one-sentence semantic compression`.\r\n\r\nRules:\r\n- Semantic compression of the whole item, **≤120 chars**.\r\n- A standalone, self-contained complete sentence.\r\n- No links, no source labels.\r\n- **Markdown only** — never rendered in the HTML output.\r\n\r\n> The `**来源：**` and `> 企微摘要：` field markers are kept in their original Chinese form because the WeChat-push and HTML-conversion scripts (`scripts/`) parse these exact strings. When localizing the brief to another language, keep these two markers as-is or update the scripts in lockstep.\r\n\r\n#### Output Requirements\r\n\r\n- **Rank by importance, differentiate by channel.** Wider search means more candidates — rank strictly by real industry impact > source authority > topic heat; never lower the bar because more sources appeared.\r\n- **WeChat concise version:** keep section caps (A≤3, B≤6, C≤5, D≤4, E≤3); pick only the most important items.\r\n- **HTML full version:** sections may relax by 2–3 items (A still ≤3, B≤8, C≤7, D≤6, E≤5).\r\n- Professional, concise, restrained tone. Every item must have source, summary, and impact judgment. Total 10–14 items (Monday 14–20). Never fabricate data.\r\n\r\n### Step 4: Generate Output Files [Deterministic + LLM]\r\n\r\n1. **Markdown** `<Brand>_Daily_Brief_{date}.md`:\r\n   - Every item carries a `> 企微摘要：...` line.\r\n   - Contains all items (incl. HTML-extended ones); the WeChat-summary line marks which enter the concise push.\r\n   - **Source links must use Markdown link syntax `[text](url)`** — never bare text `（https://...）`. Bare URLs render as plain text in HTML and break clickable links.\r\n2. **HTML** `<Brand>_Daily_Brief_{date}.html`, styled per `assets/report-template.html`:\r\n   - Each source is a clickable hyperlink.\r\n   - Capital section uses colored type tags (Funding/Earnings/IPO/M&A).\r\n   - **No WeChat-summary lines.**\r\n   - Contains all items.\r\n\r\n### Step 4.5: Format Pre-flight (machine self-check, mandatory) [Deterministic]\r\n\r\n⚠️ **Run immediately after generating the MD. Must print three counts + all assertions. No output = fail = return to Step 3 and regenerate.** Do the counts with actual `grep -c`, never by eye.\r\n\r\n```\r\n📐 Format pre-flight\r\n- item count (^### \\d+\\.)            = N1\r\n- WeChat-summary count (^> 企微摘要：) = N2\r\n- section count (^## [A-E]\\.)         = N3\r\n- assert N1 > 0 ?                     ✅ / ❌   (at least 1; N1=0 → fail)\r\n- assert N1 == N2 ?                   ✅ / ❌   (if N2<N1, check for fullwidth/halfwidth colon variants, then return to Step 3)\r\n- assert N3 == 5 ?                    ✅ / ❌\r\n- section-title language (5 English) ✅ / ❌\r\n- numbering: each section restarts at 1, no cross-section continuation ✅ / ❌\r\n- item separators: a standalone `---` between every two items          ✅ / ❌\r\n- source-link format: every `**来源：**` line is `[text](url)`, no bare `（http...）` ✅ / ❌\r\n- \"Top 3\" format: `**Top 3 takeaways:**` + ordered list 1./2./3.       ✅ / ❌\r\n- \"Top 3\" char count: each takeaway 15–30 chars                        ✅ / ❌\r\n- \"Top 3\" contains product names / versions / figures / bold ?         ❌ clean / ⚠️ hit\r\n- verdict char count = X (≤120)                                        ✅ / ❌\r\n- WeChat-summary char count: each ≤120                                 ✅ / ❌\r\n- field-name compliance (per section, four required fields, no invented field names) ✅ / ❌\r\n- field order: source line first after title, WeChat-summary line last ✅ / ❌\r\n- conclusion: ✅ pass → Step 5 / ❌ fail → regenerate\r\n```\r\n\r\n**Any ❌ → return to Step 3 and regenerate the affected content.** Never patch item-count gaps or backfill summaries during the Step 5 review. This gate exists to stop \"format drift causing missing WeChat-push content\" at the root.\r\n\r\n### Step 5: Review & Fix (business layer, 7 checks) [LLM]\r\n\r\nAfter generation and before push, run one full review. Fail → no push. **Precondition: Step 4.5 must pass.**\r\n\r\n1. **Recency compliance** — verify each item's publish date against the window (forced date derivation + per-item verification table).\r\n2. **Cross-section dedup** — one event in two+ sections → merge into highest-priority section.\r\n3. **Section-admission compliance** — each item fits its section's admission bar.\r\n4. **Source quality** — each item has a clear first-hand source link (C may allow high-trust secondary).\r\n5. **Content quality** — takeaways are trend judgments (15–30 chars, not event summaries); verdict ≤120 chars, no event-detail repetition; each item follows fact → impact-judgment.\r\n6. **Search coverage** — every Tier-1 vendor was targeted; thin content means expand search, not pad.\r\n7. **Less-is-more** — item counts within range, no padding with low-quality items.\r\n\r\n> Format integrity is backstopped by the Step 4.5 machine pre-flight. On any format problem, return to Step 3 to regenerate rather than patching in review.\r\n\r\n### Step 6: Deliver (per config) [Deterministic]\r\n\r\nPer `config.json`, push to any of **9 channels** (✅ verified / 📦 community-contributed, unverified):\r\n\r\n**Regional:** ✅ **WeChat Work** (`scripts/send_wecom.py` — concise summary first <4096 bytes, then full HTML; 3-layer priority fill; no links in summary; duplicate-push lock), 📦 **DingTalk** (`send_dingtalk.py`), 📦 **Feishu/Lark** (`send_feishu.py`).\r\n**Global:** 📦 **Slack** (`send_slack.py`), 📦 **Discord** (`send_discord.py`), 📦 **Telegram** (`send_telegram.py`), 📦 **Microsoft Teams** (`send_teams.py`).\r\n**Universal:** 📦 **Email** (`send_email.py`, SMTP), ✅ **GitHub Pages** (`deploy_github.py`, auto-archives history).\r\n\r\n> **Encoding note (Windows):** under a GBK locale, running the push script directly can raise `UnicodeEncodeError` on emoji output and crash a channel mid-print. Run with `PYTHONIOENCODING=utf-8 python -X utf8 <script>` or add `sys.stdout.reconfigure(encoding='utf-8')` at the top of the entry script. If some channels fail, re-push only the failed channel with `--force` to avoid duplicate sends.\r\n\r\n## Hard Rules\r\n\r\n> These cannot be violated. They override all other guidance.\r\n\r\n1. **Stability first.** The system's only goal is zero format drift, zero missed push, zero manual repair. Do not add features, change structure, or \"optimize\" existing rules unless explicitly requested.\r\n2. **Recency red line.** Items whose original publish date is outside the window (weekday 24h / Monday 72h) are never admitted, no exceptions.\r\n3. **First-hand source required.** Every item traces to a first-hand source; no pure secondhand media analysis.\r\n4. **Never fabricate.** All figures, dates, versions come from the source text; no guessing.\r\n5. **Dedup self-check.** After all sections, run cross-section dedup; one event in at most one section.\r\n6. **Step 4.5 pre-flight.** After generating MD, print the counts + all assertions; any ❌ → return to Step 3. Never patch in review.\r\n7. **Review gate.** Step 5 must pass before push; better unsent than flawed.\r\n8. **Less is more.** No section lowers its bar for item count; an empty section beats a padded one.\r\n9. **Push authority tiers.** In automation mode, business-layer review issues may be self-corrected then pushed; a generation-stage crash (Step 4.5 ❌) must be regenerated, never self-patched; in manual mode, issues await user confirmation.\r\n10. **Source links are Markdown.** Source lines must use `[text](url)`; bare `（http...）` is forbidden (it breaks HTML clickable links).\r\n\r\n## Failure Handling\r\n\r\n| Scenario | Action |\r\n|----------|--------|\r\n| **Generation-stage format crash (Step 4.5 ❌)** | Return to Step 3 and regenerate the affected section or whole doc; never patch item-count gaps in review |\r\n| Search yields nothing | Report \"no qualifying information today\", generate an empty template (title + date only), do not push |\r\n| A single source is unavailable | Skip it, continue other searches, note \"⚠️ {source} unreachable\" |\r\n| All candidates fail review | Output the review detail, do not push, await user decision |\r\n| Candidates severely insufficient (A–D total < 5) | Expand search first; if still short, demote borderline items to E (tagged 【Demoted】); if still short, report and pause for user decision |\r\n| Push fails (webhook timeout / 403) | Retry once; if it still fails, save files to workspace and notify user to push manually |\r\n| Config missing | Generate defaults via `scripts/init_config.py`, then continue |\r\n| HTML template missing | Generate Markdown only, skip HTML, state so in output |\r\n| File detection with non-ASCII (e.g. Chinese) filenames | Use `find`, not `ls` — shells like Git Bash mishandle quoting of non-ASCII paths and produce false \"file missing\" results |\r\n\r\n## Customization\r\n\r\n### Switch industry\r\nEdit `config.json` `customization`: focus areas (default Data+AI), vendor priority list, open-source project list, output language and format. Then replace the `[Default Profile: Data+AI]` block in this SKILL.md with your domain's vendors, sources, and search queries.\r\n\r\n### Add a delivery channel\r\nEnable it in `config.json` `adapters` and set its config:\r\n\r\n| Channel | Key | Type | Main env vars |\r\n|---------|-----|------|---------------|\r\n| WeChat Work | `wechatwork` | Webhook | `WECOM_WEBHOOK_URL` |\r\n| DingTalk | `dingtalk` | Webhook | `DINGTALK_WEBHOOK_URL`, `DINGTALK_SECRET` |\r\n| Feishu | `feishu` | Webhook | `FEISHU_WEBHOOK_URL`, `FEISHU_SECRET` |\r\n| Slack | `slack` | Webhook | `SLACK_WEBHOOK_URL` |\r\n| Discord | `discord` | Webhook | `DISCORD_WEBHOOK_URL` |\r\n| Telegram | `telegram` | Bot API | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` |\r\n| Teams | `teams` | Webhook | `TEAMS_WEBHOOK_URL` |\r\n| Email | `email` | SMTP | `SMTP_HOST`, `SMTP_USER`, `SMTP_PASSWORD` |\r\n| GitHub | `github` | API | `GITHUB_TOKEN`, `GITHUB_USER` |\r\n\r\n### Adjust the schedule\r\nEdit `config.json` `cron`:\r\n```json\r\n{ \"schedule\": \"0 8 * * 1-5\", \"timezone\": \"Asia/Shanghai\" }\r\n```\r\n\r\n---\r\n\r\n*Default profile: Data+AI infrastructure. Framework is industry-agnostic — configure for any domain with public news sources.*\n\nFile v5.0.1:README.md\n\n# 📰 Industry Daily Brief\r\n\r\n> **Turn any industry into a daily intelligence briefing — automated search, filtering, writing, and multi-channel delivery.**\r\n>\r\n> **[中文文档 / Chinese docs →](README_zh.md)**\r\n\r\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\r\n[![Version](https://img.shields.io/badge/version-5.0.0-brightgreen.svg)](#changelog)\r\n[![Platform](https://img.shields.io/badge/platform-CodeBuddy%20%7C%20WorkBuddy-green.svg)](#)\r\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink.svg)](../../sponsors)\r\n[![Bilingual](https://img.shields.io/badge/docs-EN%20%7C%20中文-orange.svg)](README_zh.md)\r\n\r\n---\r\n\r\n## 🤔 The Problem\r\n\r\nYou want a daily industry briefing — curated, structured, sourced, delivered to your team every morning. But building one means:\r\n\r\n- **Hours of manual searching** across dozens of sources every day\r\n- **No reliable filtering** — noise drowns out real signals\r\n- **Copy-paste hell** — reformatting for Slack, email, WeChat, Teams...\r\n- **No consistency** — some days you skip it, the habit breaks\r\n\r\n**What if an AI agent could do all of this in 3 minutes?**\r\n\r\n## 💡 The Solution\r\n\r\nThis is a **ready-to-use Skill** for [CodeBuddy](https://www.codebuddy.ai/) / WorkBuddy that turns your AI assistant into a professional industry intelligence analyst. Just say:\r\n\r\n> *\"Generate today's industry daily brief\"*\r\n\r\nThe AI will automatically:\r\n\r\n1. 🔍 **Search** the web using a 3-phase strategy (targeted → expanded → source-traced)\r\n2. 🎯 **Filter** ruthlessly — only first-hand sources, no noise, no clickbait\r\n3. 📝 **Write** a structured briefing with sources, summaries, and impact analysis\r\n4. 📤 **Deliver** to 9 channels — Slack, Teams, email, WeChat, DingTalk, and more\r\n\r\n### 🏭 Works for Any Industry\r\n\r\nThe default configuration covers **Data + AI infrastructure** (data platforms, lakehouse, streaming, governance, etc.) — but **you can customize it for any domain**:\r\n\r\n| Your Industry | Just Change `focus_areas` + `SKILL.md` Prompt |\r\n|---|---|\r\n| FinTech / Banking | Payments, digital banking, RegTech, DeFi |\r\n| HealthTech / BioAI | Clinical AI, drug discovery, EHR, FDA approvals |\r\n| Cybersecurity | Threat intel, zero-trust, CVEs, vendor updates |\r\n| DevTools / Platform Eng | CI/CD, observability, IaC, developer experience |\r\n| E-commerce / Retail Tech | Personalization, logistics tech, marketplace |\r\n| *Your niche here* | Any industry with public news sources |\r\n\r\n👉 See [Customization](#-customization) for a step-by-step guide.\r\n\r\n## ✨ Features\r\n\r\n- 🔍 **3-phase search strategy** — targeted vendor search → expanded discovery → mandatory source tracing\r\n- 🎯 **Strict signal-to-noise filtering** — first-hand sources only, no rewrites or clickbait\r\n- 📝 **Structured output** — Top Signals, Product & Tech, Views & Research, Capital & Corporate, Watchlist\r\n- 🎯 **Quality over quantity** — sections left empty rather than filled with low-relevance content (\"less is more\" principle)\r\n- 🌐 **9 delivery channels** — WeChat Work · DingTalk · Feishu · Slack · Discord · Telegram · Teams · Email · GitHub Pages\r\n- 🎨 **Beautiful HTML reports** — card-based layout with clickable source links (links only in HTML, summaries stay clean text)\r\n- 📊 **Smart 3-layer summary extraction** — title + top changes + section headlines + per-item sentence summaries, strictly within 4096-byte WeChat limit\r\n- 🔒 **Duplicate push prevention** — lock-file mechanism prevents re-sending the same day's brief\r\n- 📅 **Monday weekend catch-up** — 72-hour window on Mondays covers Friday–Sunday, with expanded item limits\r\n- ⚙️ **Fully customizable** — industry focus, vendor lists, output language, delivery channels\r\n- 🌍 **Bilingual** — works in Chinese or English (or any language you configure)\r\n\r\n## 📦 Project Structure\r\n\r\n```\r\ndata-ai-daily-brief-skill/\r\n├── SKILL.md                    # Skill definition (core instructions)\r\n├── README.md                   # This file (English)\r\n├── README_zh.md                # 中文文档\r\n├── LICENSE                     # MIT License\r\n├── CONTRIBUTING.md             # Contribution guide\r\n├── scripts/\r\n│   ├── init_config.py          # Initialize default config\r\n│   ├── send_wecom.py           # 🇨🇳 WeChat Work (3-layer summary + lock)\r\n│   ├── send_dingtalk.py        # 🇨🇳 DingTalk\r\n│   ├── send_feishu.py          # 🇨🇳 Feishu / Lark\r\n│   ├── send_slack.py           # 🌍 Slack\r\n│   ├── send_discord.py         # 🌍 Discord\r\n│   ├── send_telegram.py        # 🌍 Telegram\r\n│   ├── send_teams.py           # 🌍 Microsoft Teams\r\n│   ├── send_email.py           # 📧 Email (SMTP)\r\n│   └── deploy_github.py        # 🌐 GitHub Pages\r\n├── .github/\r\n│   └── FUNDING.yml             # GitHub Sponsors config\r\n└── assets/\r\n    └── report-template.html    # HTML report template\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n### Option 1: As a CodeBuddy / WorkBuddy Skill\r\n\r\n1. **Copy the Skill into your project**:\r\n   ```bash\r\n   cp -r data-ai-daily-brief-skill .codebuddy/skills/data-ai-daily-brief\r\n   ```\r\n\r\n2. **Talk to your AI**:\r\n   - *\"Generate today's Data+AI daily brief\"*\r\n   - *\"Create a daily report for 2026-03-10\"*\r\n   - The Skill triggers automatically and runs the full pipeline.\r\n\r\n3. **Configure delivery** (optional):\r\n   ```bash\r\n   python .codebuddy/skills/data-ai-daily-brief/scripts/init_config.py\r\n   ```\r\n   Edit the generated `daily-brief-config.json` to add your webhook URLs.\r\n\r\n### Option 2: Import the Skill\r\n\r\n1. Open CodeBuddy / WorkBuddy Settings\r\n2. Navigate to **Skills** management\r\n3. Click **\"Import Skill\"**\r\n4. Select this folder\r\n\r\n### Option 3: Use Scripts Standalone\r\n\r\n```bash\r\n# Initialize config\r\npython scripts/init_config.py\r\n\r\n# === China channels ===\r\npython scripts/send_wecom.py 2026-03-11          # WeChat Work\r\npython scripts/send_wecom.py 2026-03-11 --force   # Force re-send\r\npython scripts/send_dingtalk.py 2026-03-11       # DingTalk\r\npython scripts/send_feishu.py 2026-03-11         # Feishu\r\npython scripts/send_feishu.py --card --link-url https://...  # Feishu interactive card\r\n\r\n# === Global channels ===\r\npython scripts/send_slack.py 2026-03-11          # Slack\r\npython scripts/send_discord.py 2026-03-11        # Discord\r\npython scripts/send_telegram.py 2026-03-11       # Telegram\r\npython scripts/send_teams.py 2026-03-11          # Microsoft Teams\r\n\r\n# === Universal ===\r\npython scripts/send_email.py 2026-03-11          # Email\r\npython scripts/deploy_github.py 2026-03-11       # GitHub Pages\r\n```\r\n\r\n## ⚙️ Configuration\r\n\r\n### daily-brief-config.json\r\n\r\n```json\r\n{\r\n  \"version\": \"2.0\",\r\n  \"adapters\": {\r\n    \"wechatwork\": { \"enabled\": true, \"webhook_url\": \"YOUR_WEBHOOK_URL\" },\r\n    \"dingtalk\":   { \"enabled\": true, \"webhook_url\": \"YOUR_URL\", \"secret\": \"optional\" },\r\n    \"feishu\":     { \"enabled\": true, \"webhook_url\": \"YOUR_URL\", \"secret\": \"optional\" },\r\n    \"slack\":      { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"discord\":    { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"telegram\":   { \"enabled\": true, \"bot_token\": \"YOUR_TOKEN\", \"chat_id\": \"YOUR_ID\" },\r\n    \"teams\":      { \"enabled\": true, \"webhook_url\": \"YOUR_URL\" },\r\n    \"email\":      { \"enabled\": true, \"smtp_host\": \"smtp.example.com\", \"smtp_user\": \"...\" },\r\n    \"github\":     { \"enabled\": true, \"github_user\": \"your_username\", \"github_repo\": \"daily-brief\" }\r\n  },\r\n  \"customization\": {\r\n    \"language\": \"zh-CN\",\r\n    \"max_items\": 12,\r\n    \"max_items_monday\": 18,\r\n    \"monday_window_hours\": 72,\r\n    \"focus_areas\": [\"Big Data\", \"Data Platform\", \"Data Governance\", \"...\"]\r\n  }\r\n}\r\n```\r\n\r\n### Environment Variables\r\n\r\n#### 🇨🇳 China Channels\r\n\r\n| Vari\n\nArchive v5.0.0: 19 files, 67022 bytes\n\nFiles: assets/report-template.html (5625b), CHANGELOG.md (11449b), cn_description.txt (251b), CONTRIBUTING.md (1936b), README_zh.md (17444b), README.md (17219b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2352b), SKILL.md (20811b), _meta.json (138b)\n\nArchive v4.3.5: 19 files, 67257 bytes\n\nFiles: assets/report-template.html (5625b), CHANGELOG.md (9017b), cn_description.txt (57b), CONTRIBUTING.md (1936b), README_zh.md (16570b), README.md (16328b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2528b), SKILL.md (26271b), _meta.json (138b)\n\nArchive v4.3.4: 19 files, 67266 bytes\n\nFiles: assets/report-template.html (5625b), CHANGELOG.md (9017b), cn_description.txt (57b), CONTRIBUTING.md (1936b), README_zh.md (16570b), README.md (16328b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2561b), SKILL.md (26271b), _meta.json (138b)\n\nArchive v4.3.3: 17 files, 61995 bytes\n\nFiles: assets/report-template.html (5625b), CONTRIBUTING.md (1936b), README_zh.md (16570b), README.md (16328b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2638b), SKILL.md (24197b), _meta.json (138b)\n\nArchive v4.3.2: 19 files, 61687 bytes\n\nFiles: assets/report-template.html (5625b), CHANGELOG.md (2361b), cn_description.txt (57b), CONTRIBUTING.md (1936b), README_zh.md (15504b), README.md (15383b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), skill-card.md (2782b), SKILL.md (21892b), _meta.json (138b)\n\nArchive v4.3.1: 18 files, 59533 bytes\n\nFiles: assets/report-template.html (5625b), CHANGELOG.md (2361b), cn_description.txt (57b), CONTRIBUTING.md (1936b), README_zh.md (15504b), README.md (15383b), scripts/deploy_github.py (7931b), scripts/init_config.py (5355b), scripts/send_dingtalk.py (6681b), scripts/send_discord.py (6381b), scripts/send_email.py (6137b), scripts/send_feishu.py (8198b), scripts/send_slack.py (6157b), scripts/send_teams.py (6426b), scripts/send_telegram.py (8422b), scripts/send_wecom.py (26796b), SKILL.md (20073b), _meta.json (138b)","readmeExcerpt":"Skill: data-ai-daily-brief Owner: haiyangchenbj Summary: Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简","codeSnippets":[],"executableExamples":[{"language":"markdown","snippet":"**Top 3 takeaways:**\n1. [a single trend judgment — direction not full event, 15–30 chars]\n2. [a single trend judgment — direction not full event, 15–30 chars]\n3. [a single trend judgment — direction not full event, 15–30 chars]\n\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]"},{"language":"markdown","snippet":"### 1. Event title\n**来源：** [specific source](url)\n**摘要：** 2–3 sentences\n**为什么对数据平台重要：** ...\n> 企微摘要：one-line semantic compression"},{"language":"markdown","snippet":"### 1. 【Funding】Event title\n**来源：** [specific source](url)\n**核心数据：** amount / valuation / revenue / growth\n**摘要：** 2–3 sentences\n**对数据平台的影响：** ...\n> 企微摘要：one-line semantic compression"},{"language":"text","snippet":"📐 Format pre-flight\n- item count (^### \\d+\\.)            = N1\n- WeChat-summary count (^> 企微摘要：) = N2\n- section count (^## [A-E]\\.)         = N3\n- assert N1 > 0 ?                     ✅ / ❌   (at least 1; N1=0 → fail)\n- assert N1 == N2 ?                   ✅ / ❌   (if N2<N1, check for fullwidth/halfwidth colon variants, then return to Step 3)\n- assert N3 == 5 ?                    ✅ / ❌\n- section-title language (5 English) ✅ / ❌\n- numbering: each section restarts at 1, no cross-section continuation ✅ / ❌\n- item separators: a standalone `---` between every two items          ✅ / ❌\n- source-link format: every `**来源：**` line is `[text](url)`, no bare `（http...）` ✅ / ❌\n- \"Top 3\" format: `**Top 3 takeaways:**` + ordered list 1./2./3.       ✅ / ❌\n- \"Top 3\" char count: each takeaway 15–30 chars                        ✅ / ❌\n- \"Top 3\" contains product names / versions / figures / bold ?         ❌ clean / ⚠️ hit\n- verdict char count = X (≤120)                                        ✅ / ❌\n- WeChat-summary char count: each ≤120                                 ✅ / ❌\n- field-name compliance (per section, four required fields, no invented field names) ✅ / ❌\n- field order: source line first after title, WeChat-summary line last ✅ / ❌\n- conclusion: ✅ pass → Step 5 / ❌ fail → regenerate"},{"language":"json","snippet":"{ \"schedule\": \"0 8 * * 1-5\", \"timezone\": \"Asia/Shanghai\" }"},{"language":"markdown","snippet":"**Top 3 takeaways:**\n1. [a single trend judgment — direction not full event, 15–30 chars]\n2. [a single trend judgment — direction not full event, 15–30 chars]\n3. [a single trend judgment — direction not full event, 15–30 chars]\n\n**Verdict:** [the single most important industry judgment of the day, 1–2 sentences, ≤120 chars, landing on direction / investment focus / market shift]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nslug: data-ai-daily-brief\ndisplayName: Data AI Daily Brief\nname: data-ai-daily-brief\nversion: \"5.0.4\"\ndescription: >\n  Turn any industry into a daily intelligence briefing. An AI agent searches,\n  filters, writes, and delivers structured daily briefs to 9 channels — with\n  machine-checked formatting and a business review gate. Ships with a Data+AI\n  profile out of the box; switch to any domain via config.\n  中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道，\n  含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief.\ndescription_zh: \"行业日报生成器：将任意行业转为每日情报简报，AI agent 搜索、筛选、编写并投递至 9 个渠道，含机器格式校验与业务评审门禁；自带 Data+AI 配置，可切换任意领域。\"\nnot_for:\n  - One-off research reports or market analysis (daily recurring briefs focus)\n  - Real-time alerting or breaking-news push (batched daily digest)\n  - Original investigative journalism (aggregation and synthesis of existing sources)\n  - Publishing without the business review gate (the gate cannot be skipped)\n\nread_when:\n  - daily brief\n  - industry report\n  - industry newsletter\n  - intelligence brief\n  - 日报\n  - 行业日报\n  - 情报简报\nallowed-tools:\n  - read_file\n  - write_to_file\n  - replace_in_file\n  - execute_command\n  - web_search\n  - web_fetch\ndisable: false\n---\n\n# Industry Daily Brief\n\nAn AI-driven skill that generates a high-quality industry intelligence brief: it automatically searches, filters, writes, and delivers a structured daily report. It ships with a **Data+AI profile** as the working example, and can be switched to **any industry** through the configuration file.\n\n> **How to read this document**\n> The **Workflow**, **Confidence Tiers**, **Section Definitions**, **Format Contract**, and **Hard Rules** below are **industry-agnostic** — they are the engine. Everything inside a block marked **`[Default Profile: Data+AI]`** is an **example configuration** (vendor lists, search queries, focus areas) that you replace when targeting another domain. Do not treat the Data+AI specifics as part of the framework.\n\n## Workflow\n\nWhen the user requests a daily brief, execute the following steps in order.\n\n### Step 1: Confirm Configuration [Deterministic]\n\n1. Read the workspace `config.json` (if present).\n2. If absent, initialize defaults via `scripts/init_config.py`.\n3. Confirm the target date (default: today) and the output channels.\n\n### Step 2: Collect & Filter Information [Deterministic + LLM]\n\nUse `web_search` to gather information, applying the following priorities and filters.\n\n#### Core Principles\n\n**Relevance first, filter ruthlessly.** Every item must clearly answer: *does this affect the product roadmap, architecture, cost structure, governance, operational efficiency, or real-world adoption within the target industry?* If the answer is not a clear **yes**, exclude it.\n\n**Less is more.** Never lower the admission bar just because a section has few items. The value of the brief is precision, not item count.\n\n#### Three-Phase Search Strategy\n\n**Phase 1 — Targeted first-hand source search (mandatory).**\nFor each Tier-1 vendor i"},{"path":"README.md","content":"# 📰 Industry Daily Brief\r\n\r\n> **Turn any industry into a daily intelligence briefing — automated search, filtering, writing, and multi-channel delivery.**\r\n>\r\n> **[中文文档 / Chinese docs →](README_zh.md)**\r\n\r\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\r\n[![Version](https://img.shields.io/badge/version-5.0.0-brightgreen.svg)](#changelog)\r\n[![Platform](https://img.shields.io/badge/platform-CodeBuddy%20%7C%20WorkBuddy-green.svg)](#)\r\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink.svg)](../../sponsors)\r\n[![Bilingual](https://img.shields.io/badge/docs-EN%20%7C%20中文-orange.svg)](README_zh.md)\r\n\r\n---\r\n\r\n## 🤔 The Problem\r\n\r\nYou want a daily industry briefing — curated, structured, sourced, delivered to your team every morning. But building one means:\r\n\r\n- **Hours of manual searching** across dozens of sources every day\r\n- **No reliable filtering** — noise drowns out real signals\r\n- **Copy-paste hell** — reformatting for Slack, email, WeChat, Teams...\r\n- **No consistency** — some days you skip it, the habit breaks\r\n\r\n**What if an AI agent could do all of this in 3 minutes?**\r\n\r\n## 💡 The Solution\r\n\r\nThis is a **ready-to-use Skill** for [CodeBuddy](https://www.codebuddy.ai/) / WorkBuddy that turns your AI assistant into a professional industry intelligence analyst. Just say:\r\n\r\n> *\"Generate today's industry daily brief\"*\r\n\r\nThe AI will automatically:\r\n\r\n1. 🔍 **Search** the web using a 3-phase strategy (targeted → expanded → source-traced)\r\n2. 🎯 **Filter** ruthlessly — only first-hand sources, no noise, no clickbait\r\n3. 📝 **Write** a structured briefing with sources, summaries, and impact analysis\r\n4. 📤 **Deliver** to 9 channels — Slack, Teams, email, WeChat, DingTalk, and more\r\n\r\n### 🏭 Works for Any Industry\r\n\r\nThe default configuration covers **Data + AI infrastructure** (data platforms, lakehouse, streaming, governance, etc.) — but **you can customize it for any domain**:\r\n\r\n| Your Industry | Just Change `focus_areas` + `SKILL.md` Prompt |\r\n|---|---|\r\n| FinTech / Banking | Payments, digital banking, RegTech, DeFi |\r\n| HealthTech / BioAI | Clinical AI, drug discovery, EHR, FDA approvals |\r\n| Cybersecurity | Threat intel, zero-trust, CVEs, vendor updates |\r\n| DevTools / Platform Eng | CI/CD, observability, IaC, developer experience |\r\n| E-commerce / Retail Tech | Personalization, logistics tech, marketplace |\r\n| *Your niche here* | Any industry with public news sources |\r\n\r\n👉 See [Customization](#-customization) for a step-by-step guide.\r\n\r\n## ✨ Features\r\n\r\n- 🔍 **3-phase search strategy** — targeted vendor search → expanded discovery → mandatory source tracing\r\n- 🎯 **Strict signal-to-noise filtering** — first-hand sources only, no rewrites or clickbait\r\n- 📝 **Structured output** — Top Signals, Product & Tech, Views & Research, Capital & Corporate, Watchlist\r\n- 🎯 **Quality over quantity** — sections left empty rather than filled with low-relevance content (\"less is more\" principle)\r\n- 🌐 **"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70yg6zwmkftx4939qrs89awx82rr9a\",\n  \"slug\": \"data-ai-daily-brief\",\n  \"version\": \"5.0.4\",\n  \"publishedAt\": 1789876709882\n}"},{"path":"CHANGELOG.md","content":"# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\r\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\r\n\r\n## [5.0.0] - 2026-06-23\r\n\r\n### Changed\r\n- **English-first SKILL.md.** The full body is rewritten in English. The framework — workflow, confidence tiers, section definitions, format contract, hard rules, failure handling — is now industry-agnostic, with all Data+AI specifics isolated into a clearly-marked `[Default Profile: Data+AI]` block that users replace when targeting another domain.\r\n- **Display name → \"Industry Daily Brief\".** Repositions the skill as a general engine that ships with a Data+AI example, rather than a Data+AI-only tool. Slug remains `data-ai-daily-brief` to preserve version history.\r\n- **Value-first description.** Rewritten to lead with the outcome (any industry → daily brief, 9 channels, machine-checked formatting) instead of a feature/keyword list.\r\n- **WeChat-summary cap relaxed 30–80 → ≤120 chars.** The 80-char ceiling could not accommodate high-density days (e.g. major vendor summits); 120 covers >90% of cases and the WeChat push script adaptively trims overflow.\r\n\r\n### Added (backfilled rules accumulated since 4.3.5)\r\n- **Source links must be Markdown `[text](url)`** — Hard Rule #10 + Step 4.5 assertion. Bare `（https://...）` text passes the old \"source line exists\" check but renders as non-clickable plain text in HTML.\r\n- **Step 4.5 expanded** with four machine-checkable assertions: source-link format, `---` item separator presence, WeChat-summary ≤120 chars, and Top-3 char-count (15–30). Plus numbering-reset (each section restarts at 1) and field-order assertions.\r\n- **Stale-news guard** — a \"big news\" item from search results must have its *original* publish date independently confirmed; search ranking is not recency.\r\n- **Stability-first** promoted to Hard Rule #1 — zero format drift / zero missed push / zero manual repair; no new features or structural changes unless explicitly requested.\r\n- **Non-ASCII filename detection** — Failure Handling note to use `find` not `ls`, because shells like Git Bash mishandle quoting of Chinese/non-ASCII paths and report false \"file missing\".\r\n\r\n### Preserved\r\n- All 4.3.x rules, search strategy, vendor/source lists, section definitions, item-count limits, confidence tiers, and failure handling are preserved — reorganized and translated, not removed. 5.0.0 is a structural + language rework with additive rule backfill.\r\n\r\n## [4.3.5] - 2026-06-01\r\n\r\n### Changed\r\n- **Republish only** to fix display-name regression introduced in 4.3.4 (the `+` in \"Data+AI\" was lost when ClawHub auto-derived the display name from a temporary working directory). Display name explicitly pinned to \"Data+AI Daily Brief Skill\" via `--name` flag. Content identical to 4.3.4.\r\n\r\n## [4.3.4] - 2026-06-01\r\n\r\n### Added\r\n- **Step 4.5 — three new field-level asser"},{"path":"CONTRIBUTING.md","content":"# Contributing to AI Industry Intelligence Daily Brief\r\n\r\nThank you for your interest in contributing! 🎉\r\n\r\n## How to Contribute\r\n\r\n### 🐛 Bug Reports\r\n\r\n- Open an [Issue](../../issues) with a clear description\r\n- Include steps to reproduce, expected vs actual behavior\r\n- Mention your environment (OS, Python version, etc.)\r\n\r\n### 💡 Feature Requests\r\n\r\n- Open an [Issue](../../issues) with the `enhancement` label\r\n- Describe the use case and why it would be valuable\r\n- Bonus: suggest an implementation approach\r\n\r\n### 🔧 Pull Requests\r\n\r\n1. **Fork** the repository\r\n2. **Create a branch**: `git checkout -b feature/your-feature`\r\n3. **Make changes** and test them\r\n4. **Commit** with clear messages: `git commit -m \"Add: new delivery channel for LINE\"`\r\n5. **Push** and open a Pull Request\r\n\r\n### 📝 Code Style\r\n\r\n- Python scripts: follow PEP 8\r\n- Include docstrings with usage instructions in each script\r\n- Support both environment variables and command-line arguments\r\n- Add error handling with helpful messages\r\n\r\n### 🌐 Adding a New Delivery Channel\r\n\r\nTo add a new push channel (e.g., LINE, WhatsApp):\r\n\r\n1. Create `scripts/send_yourplatform.py` following the existing pattern\r\n2. Include a comprehensive docstring with setup guide\r\n3. Support environment variables for credentials\r\n4. Add the channel to `init_config.py` default config\r\n5. Update both `README.md` and `README_zh.md`\r\n6. Update `SKILL.md` with the new channel info\r\n\r\n### 🏭 Adding Industry Templates\r\n\r\nTo contribute a new industry template:\r\n\r\n1. Describe the industry focus areas, key vendors, and sources\r\n2. Provide a sample `SKILL.md` prompt section\r\n3. Include example `focus_areas` configuration\r\n\r\n## Code of Conduct\r\n\r\nBe respectful, inclusive, and constructive. We're all here to build something useful together.\r\n\r\n## License\r\n\r\nBy contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE)."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简报、自动日报、daily brief. Skill: data-ai-daily-brief Owner: haiyangchenbj Summary: Turn any industry into a daily intelligence briefing. An AI agent searches, filters, writes, and delivers structured daily briefs to 9 channels — with machine-checked formatting and a business review gate. Ships with a Data+AI profile out of the box; switch to any domain via config. 中文摘要：行业日报生成器——AI agent 搜索、筛选、编写并投递结构化每日简报至 9 个渠道， 含机器格式校验与业务评审门禁。触发词：行业日报、每日情报简","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1959,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T16:42:16.013Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:24:30.560Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}