$npx -y skills add indranilbanerjee/contentforge --skill cf-auditAudit content library for freshness decay, coverage gaps, and optimization opportunities.
| 1 | # Content Library Audit |
| 2 | |
| 3 | Audit your existing content library for freshness decay, coverage gaps, and optimization opportunities. The audit scores every piece for freshness, identifies content that needs refreshing, maps coverage gaps against keyword opportunities, and produces a prioritized action list with projected impact. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | Use `/contentforge:cf-audit` when: |
| 8 | - You need a **quarterly or annual content health check** across your library |
| 9 | - Search rankings are declining and you need to **identify which content to refresh first** |
| 10 | - You want to find **coverage gaps** — topics your competitors rank for but you don't |
| 11 | - You need to **prioritize refresh candidates** for `/contentforge:content-refresh` based on data |
| 12 | - A new client wants an **audit before production** to avoid duplicating existing content |
| 13 | - You're planning next quarter's content calendar and need to **balance new vs refresh** |
| 14 | |
| 15 | **For refreshing specific pieces**, use `/contentforge:content-refresh` after the audit identifies candidates. |
| 16 | **For producing new content** for identified gaps, use `/contentforge:cf-brief` then `/contentforge:create-content`. |
| 17 | |
| 18 | All example blocks below are **SYNTHETIC EXAMPLES — fabricated for illustration**. Never reuse their numbers, titles, or URLs in real output. |
| 19 | |
| 20 | ## What This Command Does |
| 21 | |
| 22 | 1. **Load Content Inventory** — Import content list from Google Drive folder, WordPress site, or CSV |
| 23 | 2. **Freshness Scoring** — Score each piece 0-100 based on publication date, statistic currency, link health, and citation recency |
| 24 | 3. **Coverage Gap Analysis** — Compare topics covered against keyword opportunities to find missing content |
| 25 | 4. **Performance Analysis** — Pull traffic and engagement data if analytics are connected |
| 26 | 5. **Prioritize Refresh Candidates** — Rank pieces by (high original value) + (low freshness score) to find the best ROI refreshes |
| 27 | 6. **Generate Recommendations** — Produce actionable audit report with top 10 refresh candidates, coverage gaps, optimization recommendations, and projected impact |
| 28 | |
| 29 | ## Required Inputs |
| 30 | |
| 31 | **Content Source (one of):** |
| 32 | - **Google Drive Folder URL** — Folder containing .docx files (e.g., `ContentForge Output/AcmeMed/`) |
| 33 | - **WordPress Site URL** — WordPress REST API endpoint (e.g., `https://blog.acme.com`) |
| 34 | - **CSV List** — CSV file with columns: `title`, `url`, `publish_date`, `content_type`, `word_count` |
| 35 | |
| 36 | **Audit Scope:** |
| 37 | - **freshness** — Freshness scoring and refresh candidate identification only |
| 38 | - **gaps** — Coverage gap analysis only (compares your topics against keyword opportunities) |
| 39 | - **both** (default) — Full audit: freshness scoring + coverage gap analysis |
| 40 | |
| 41 | **Optional:** |
| 42 | - **Time Threshold** — How many months old before content is considered "aging" (default: 12 months) |
| 43 | - **Brand** — Filter audit to a specific brand (if multi-brand library) |
| 44 | - **Target Keywords** — CSV of keywords to check coverage against (for gap analysis) |
| 45 | |
| 46 | ## How to Use |
| 47 | |
| 48 | ### Basic Usage (Google Drive) |
| 49 | ``` |
| 50 | /contentforge:cf-audit https://drive.google.com/drive/folders/ABC123 |
| 51 | ``` |
| 52 | **Prompt:** "Audit scope? (freshness / gaps / both)" |
| 53 | |
| 54 | ### WordPress Site Audit |
| 55 | ``` |
| 56 | /contentforge:cf-audit https://blog.acme.com --scope=both --threshold=12 |
| 57 | ``` |
| 58 | |
| 59 | ### CSV Inventory Audit |
| 60 | ``` |
| 61 | /contentforge:cf-audit content-inventory.csv --scope=freshness --threshold=6 |
| 62 | ``` |
| 63 | |
| 64 | ### Freshness-Only Audit |
| 65 | ``` |
| 66 | /contentforge:cf-audit https://drive.google.com/drive/folders/ABC123 --scope=freshness --threshold=18 |
| 67 | ``` |
| 68 | |
| 69 | ### Gap Analysis Only |
| 70 | ``` |
| 71 | /contentforge:cf-audit https://drive.google.com/drive/folders/ABC123 --scope=gaps --keywords=target-keywords.csv |
| 72 | ``` |
| 73 | |
| 74 | ## What Happens |
| 75 | |
| 76 | ### Step 1: Load Content Inventory (1-3 minutes) |
| 77 | |
| 78 | Load content metadata from the specified source. |
| 79 | |
| 80 | **From Google Drive:** |
| 81 | - List all .docx files in the specified folder (and subfolders) |
| 82 | - Extract metadata: title, publish date, word count, brand, content type |
| 83 | - Read ContentForge quality scores from document properties (if originally produced by ContentForge) |
| 84 | |
| 85 | **From WordPress:** |
| 86 | - Call WordPress REST API (`/wp-json/wp/v2/posts?per_page=100`) |
| 87 | - Extract: title, URL, publish date, modified date, word count, categories, tags |
| 88 | - Paginate through all posts if >100 |
| 89 | |
| 90 | **From CSV:** |
| 91 | - Parse CSV with required columns: title, url, publish_date |
| 92 | - Optional columns: content_type, word_count, quality_score, brand |
| 93 | |
| 94 | **Example Inventory Output:** |
| 95 | ``` |
| 96 | Content Inventory Loaded |
| 97 | ================================================================ |
| 98 | |
| 99 | Source: Google Drive / ContentForge Output / AcmeMed |
| 100 | Total Pieces: 47 |
| 101 | Content Types: 22 articles, 15 blogs, 6 whitepapers, 4 FAQs |
| 102 | |
| 103 | Date Range: 2024-06-15 to 2026-01-20 |
| 104 | Published in last 6 months: 12 (26%) |
| 105 | Published 6-12 months ago: 18 (38%) |
| 106 | Published 12-24 months ago: 14 (30%) |
| 107 | Published 24+ months ago: 3 (6%) |
| 108 | |
| 109 | Brands: AcmeMed (32), AcmePharma (15) |
| 110 | Average Original Quali |