Share Of Voice Snapshot
Compute brand SOV using latest FullMention result snapshots.
Share Of Voice Snapshot
What it does
Compute brand Share of Voice (SOV) metrics based on the latest result snapshots fetched from the FullMention API, and persist analytical outputs locally.
Execution Contract
Every execution of this skill must operate under the following contract:
- **ingestion_plan**: A documented plan for pulling data.
- **max_api_calls**: 3 (default, strictly enforced).
- **cache_key**: A unique key identifying the cached API dataset.
- **dataset_timestamp**: ISO timestamp of the ingested dataset.
- **analysis_mode**: `offline_only`
Data Access Policy
- API Target: Consume data from the FullMention API at
GET /v2/runs/{runId}. - Controlled Ingestion: Perform exactly one controlled ingestion pull from the FullMention API. Paginated batch fetching is preferred.
- API Decoupling: Do NOT treat the FullMention API as a persistent database or state-store; it is a read-only snapshot provider.
- 24-Hour TTL: FullMention v2 deletes run data after 24 hours, meaning offline persistence/database caching is a strict requirement for historical tracking.
- Local Persistence: Save all analytical outputs locally in the current workspace directory.
- Raw structured JSON must be saved to
[skill_name].json(e.g.share-of-voice-snapshot.json). - A premium, beautifully styled markdown report must be saved to
[skill_name].md(e.g.share-of-voice-snapshot.md).
- Raw structured JSON must be saved to
- Caching: Reuse the same stored dataset across iterative prompts. Do not repeat identical API calls.
- Refresh Window: Make additional API calls only if the user explicitly requests a refresh window or a missing page fetch.
- Rate Limits & Backoff: Respect API rate limits and backoff policies. Never run open-ended call loops.
- Allowed Sources:
- Local working dataset produced from one ingestion pull of FullMention API data.
- Optional user-provided local file/DB snapshot (read-only).
- No repeated API fetching during analysis.
Required Input Fields & Parameters
The input dataset from the API/file must map to these fields:
id(string, unique result identifier)keyword(string, searched keyword)brandRankings[].name(string, brand name)brandRankings[].position(integer, brand rank position)
Analytical Method
Follow these step-by-step logic rules during analysis:
- Source Selection: Use
brandRankings[]data directly. - Weighting Mentions: Weight each brand mention by the formula
1 / rank(e.g., Rank 1 has weight 1.0, Rank 2 has weight 0.5, Rank 3 has weight 0.33, etc.). - Normalization & Aggregation: Normalize brand names (trim whitespace, convert to lowercase for comparison, but preserve readable casing in output) and aggregate their total weighted scores.
- SOV Percentage Calculation: Convert the aggregated score of each brand to a percentage of the total weighted score of all brands in the dataset.
Expected Output
The skill must generate two outputs in the local workspace:
-
share-of-voice-snapshot.json: Contains the raw structured analytical output, including the execution contract metadata, the final leaderboard, insights, confidence metrics, and the evidence map. -
share-of-voice-snapshot.md: A premium, beautiful human-readable report. This report must contain:- Leaderboard: Formatted table with columns:
Brand | Weighted Score | SOV % - Top 3 Insights: Strategic take-aways, brand dominance notes, or market anomalies.
- Confidence & Limitations:
- A confidence score from 0-100.
- Confidence Rationale: Explanation of how the confidence score was derived.
- Limitations: A list of data limitations or gaps.
- Evidence Map: An array of objects
evidence_map[]with:finding_idmetric_namesource_field_paths[]sample_result_ids[]
- Leaderboard: Formatted table with columns:
Guardrails & Constraints
- No Web Lookups: Do not perform external web lookups or enrichment of brand data.
- No Hallucination: Do not invent brands, rankings, recommendations, or hidden fields that are not present in the ingested dataset.
- Sample Constraints: If the ingested dataset contains fewer than 10 results, the confidence score must be significantly lower, and a clear explanation of this limitation must be included in the report.
Copy-ready Skill Prompt
Use this as a full copy/paste prompt in your AI tool:
Skill: Share Of Voice Snapshot
Goal: Compute brand SOV using latest FullMention result snapshots.
Data Access Policy:
- **API Target**: Consume data from the FullMention API at `GET /v2/runs/{runId}`.
- **Controlled Ingestion**: Perform exactly one controlled ingestion pull from the FullMention API. Paginated batch fetching is preferred.
- **API Decoupling**: Do NOT treat the FullMention API as a persistent database or state-store; it is a read-only snapshot provider.
- **24-Hour TTL**: FullMention v2 deletes run data after 24 hours, meaning offline persistence/database caching is a strict requirement for historical tracking.
- **Local Persistence**: Save all analytical outputs locally in the current workspace directory.
- Raw structured JSON must be saved to `[skill_name].json` (e.g. `share-of-voice-snapshot.json`).
- A premium, beautifully styled markdown report must be saved to `[skill_name].md` (e.g. `share-of-voice-snapshot.md`).
- **Caching**: Reuse the same stored dataset across iterative prompts. Do not repeat identical API calls.
- **Refresh Window**: Make additional API calls only if the user explicitly requests a refresh window or a missing page fetch.
- **Rate Limits & Backoff**: Respect API rate limits and backoff policies. Never run open-ended call loops.
- **Allowed Sources**:
- Local working dataset produced from one ingestion pull of FullMention API data.
- Optional user-provided local file/DB snapshot (read-only).
- No repeated API fetching during analysis.
Input Fields & Params:
The input dataset from the API/file must map to these fields:
- `id` (string, unique result identifier)
- `keyword` (string, searched keyword)
- `brandRankings[].name` (string, brand name)
- `brandRankings[].position` (integer, brand rank position)
Method:
Follow these step-by-step logic rules during analysis:
1. **Source Selection**: Use `brandRankings[]` data directly.
2. **Weighting Mentions**: Weight each brand mention by the formula `1 / rank` (e.g., Rank 1 has weight 1.0, Rank 2 has weight 0.5, Rank 3 has weight 0.33, etc.).
3. **Normalization & Aggregation**: Normalize brand names (trim whitespace, convert to lowercase for comparison, but preserve readable casing in output) and aggregate their total weighted scores.
4. **SOV Percentage Calculation**: Convert the aggregated score of each brand to a percentage of the total weighted score of all brands in the dataset.
Expected Output:
The skill must generate two outputs in the local workspace:
1. **`share-of-voice-snapshot.json`**:
Contains the raw structured analytical output, including the execution contract metadata, the final leaderboard, insights, confidence metrics, and the evidence map.
2. **`share-of-voice-snapshot.md`**:
A premium, beautiful human-readable report. This report must contain:
- **Leaderboard**: Formatted table with columns: `Brand | Weighted Score | SOV %`
- **Top 3 Insights**: Strategic take-aways, brand dominance notes, or market anomalies.
- **Confidence & Limitations**:
- A confidence score from 0-100.
- **Confidence Rationale**: Explanation of how the confidence score was derived.
- **Limitations**: A list of data limitations or gaps.
- **Evidence Map**: An array of objects `evidence_map[]` with:
- `finding_id`
- `metric_name`
- `source_field_paths[]`
- `sample_result_ids[]`
Guardrails:
- **No Web Lookups**: Do not perform external web lookups or enrichment of brand data.
- **No Hallucination**: Do not invent brands, rankings, recommendations, or hidden fields that are not present in the ingested dataset.
- **Sample Constraints**: If the ingested dataset contains fewer than 10 results, the confidence score must be significantly lower, and a clear explanation of this limitation must be included in the report. Run This Skill
Copies the full skill prompt, including data policy and output contract.