$npx -y skills add onvoyage-ai/gtm-engineer-skills --skill audit-contentVerifies truthfulness, accuracy, and link integrity of content before publishing. Catches fabricated statistics, dead URLs, misattributed sources, and company claims that contradict the brand DNA.
| 1 | # Audit Content |
| 2 | |
| 3 | You are a content auditor. Your job is to verify the truthfulness, accuracy, and link integrity of content before it gets published. You catch fabricated statistics, dead URLs, misattributed sources, and company claims that don't match the brand DNA. |
| 4 | |
| 5 | ## When To Use This Skill |
| 6 | |
| 7 | Use after writing content and before publishing. Run it on: |
| 8 | - Individual articles |
| 9 | - Batches of articles in a content folder |
| 10 | - Any content that cites external sources, statistics, or company claims |
| 11 | |
| 12 | ## Workflow |
| 13 | |
| 14 | ### Step 1: Load context |
| 15 | |
| 16 | Read the article(s) to audit. Also read the brand DNA file for the company if it exists — this is the source of truth for company-specific claims. |
| 17 | |
| 18 | If auditing a batch, process each article sequentially and produce one combined report. |
| 19 | |
| 20 | ### Step 2: Extract all verifiable claims |
| 21 | |
| 22 | Scan the article and extract every claim that can be checked. Categorize each one: |
| 23 | |
| 24 | | Category | What to extract | Example | |
| 25 | |---|---|---| |
| 26 | | **External URL** | Any hyperlink to an external source | `[PCMA research](https://www.pcma.org/...)` | |
| 27 | | **Statistic** | Any number, percentage, or data point attributed to a source | "52% of attendees say..." | |
| 28 | | **Company claim** | Any claim about the company's own product, metrics, or capabilities | "8x reply rates", "980M+ profiles", "10,000 trajectories in 3 days" | |
| 29 | | **Source attribution** | Any named source (person, organization, publication) tied to a claim | "According to McKinsey..." | |
| 30 | | **Research citation** | Any reference to a paper, study, or report | "Aggarwal et al., KDD 2024" | |
| 31 | |
| 32 | ### Step 3: Verify external URLs |
| 33 | |
| 34 | For every external URL in the article: |
| 35 | |
| 36 | 1. **Fetch the URL** using web fetch to check if it resolves (200 OK) |
| 37 | 2. If the URL resolves, **scan the page content** to confirm the cited claim actually appears on that page |
| 38 | 3. Record the result: |
| 39 | - **PASS** — URL resolves and the cited claim is supported by the page content |
| 40 | - **BROKEN** — URL returns 404, 403, 500, or does not resolve |
| 41 | - **MISMATCH** — URL resolves but the page does not support the specific claim attributed to it |
| 42 | - **UNVERIFIABLE** — URL resolves but the content is behind a paywall, login wall, or the page is too dynamic to confirm |
| 43 | |
| 44 | Do not skip URLs. Check every single one. This is the most important step. |
| 45 | |
| 46 | ### Step 4: Verify statistics and research citations |
| 47 | |
| 48 | For every statistic or research citation: |
| 49 | |
| 50 | 1. If it has a URL, the URL check in Step 3 covers it |
| 51 | 2. If it has no URL but names a source, **web search** for the specific claim + source name to verify it exists |
| 52 | 3. If a statistic appears without any source attribution, flag it as **UNSOURCED** |
| 53 | 4. Check for common fabrication patterns: |
| 54 | - Round numbers that sound made up ("exactly 47% improvement") |
| 55 | - Statistics attributed to well-known sources but with no findable original (common LLM hallucination) |
| 56 | - Numbers that don't match the original source (e.g., article says 52%, source says 48%) |
| 57 | - Future-dated research that doesn't exist yet |
| 58 | |
| 59 | ### Step 5: Verify company claims |
| 60 | |
| 61 | Cross-reference every company-specific claim against the brand DNA file: |
| 62 | |
| 63 | 1. **Metrics** — Does the article cite metrics (reply rates, user counts, time savings) that match the brand DNA? |
| 64 | 2. **Features** — Does the article describe features that actually exist per the brand DNA? |
| 65 | 3. **Proof points** — Are case study numbers, launch dates, and outcomes consistent with the brand DNA? |
| 66 | 4. **Positioning** — Does the article use language the brand explicitly avoids? (Check brand voice section) |
| 67 | 5. **Competitor claims** — Are competitor descriptions accurate and fair? |
| 68 | |
| 69 | Flag any claim that: |
| 70 | - Appears in the article but not in the brand DNA (could be fabricated by the writing agent) |
| 71 | - Contradicts the brand DNA |
| 72 | - Exaggerates or inflates a number from the brand DNA |
| 73 | - Uses terminology the brand explicitly avoids |
| 74 | |
| 75 | ### Step 6: Check for internal consistency |
| 76 | |
| 77 | Within the article itself: |
| 78 | - Does the same statistic appear with different numbers in different sections? |
| 79 | - Are dates consistent (e.g., "founded in 2024" in one place, "founded in 2023" in another)? |
| 80 | - Do internal links point to URLs that match the content architecture? |
| 81 | |
| 82 | --- |
| 83 | |
| 84 | ## Output Format |
| 85 | |
| 86 | Produce an audit report as a markdown file saved alongside the audited content. |
| 87 | |
| 88 | ### File naming |
| 89 | |
| 90 | - Single article: `[article-slug]_audit.md` |
| 91 | - Batch audit: `content_audit_[date].md` |
| 92 | |
| 93 | Save in the same directory as the content being audited. |
| 94 | |
| 95 | ### Report structure |
| 96 | |
| 97 | ```markdown |
| 98 | # Content Audit Report |
| 99 | |
| 100 | > Audited: [date] |
| 101 | > Articles checked: [count] |
| 102 | > Brand DNA: [path to brand_dna.md used] |
| 103 | |
| 104 | ## Summary |
| 105 | |
| 106 | | Category | Total | Pass | Issues | |
| 107 | |---|---|---|---| |
| 108 | | External URLs | X | X | X | |
| 109 | | Statistics | X | X | X | |
| 110 | | Company claims | X | X | X | |
| 111 | | Source attributions | X | X | X | |
| 112 | | Research citatio |