Review Social Media CSVs: Weighted Rates, Comparable Windows and Next Tests
Reconcile post-level source rows, compare equal date windows and separate engagement from clicks. Deliver an editable review with traceable calculations instead of inferring sales or causal lift.
Fastest way
Ask your AI to do it
Paste this into the AI agent you already use:
Use Social Performance Studio to review my permitted post CSV with equal, nonoverlapping inclusive windows. Reconcile all required counts and mapped columns; missing is not zero. Calculate engagement from summed likes, comments and shares over impressions, keep clicks separate and preserve unknown rates. Inspect source lines, rebuild edited source and deliver a traceable review plus a bounded next test. Do not fetch accounts, post content, infer sales or claim causal lift.
What does Social Performance Studio calculate from a CSV?
Social Performance Studio v1.1.0 builds an offline social review from a project brief and post CSV: current/previous totals, weighted engagement and click rates, channel/format summaries, a source ledger, test proposals, native editable PowerPoint and an optional 30-second result film. The package costs USD 4.99 individually. It does not connect to a social account, fetch private analytics or require a paid API.
Use python3 scripts/start.py for the standard-library visual input editor; it runs on 127.0.0.1 while its terminal remains open. Import your permitted CSV, review the column mapping and keep all required counts explicit. Rendering and PPTX generation require the pinned local dependencies; the editor alone does not produce those files.
Freeze the CSV definitions and two inclusive date windows
Read references/input-and-review.md. The builder accepts 1–10000 post records in a regular CSV up to 5 MB, with unique slug IDs, ISO dates and this exact header order. Counts must be nonnegative integers; a blank metric is not zero. Keep original exports privately and reconcile mapped columns before generating the review.
Choose equal-length, nonoverlapping inclusive windows. The practice uses August 1–30 and September 1–30, 2026: both contain 30 days. August 31 is outside that comparison. Equal duration does not establish equal posting mix, exposure or audience. Dates outside both windows are listed as excluded, not silently added to totals.
id,date,channel,format,title,impressions,likes,comments,shares,clicks,spendCentsRun the source-backed FIELDNOTES practice review
From the complete installed skill, install the pinned packages and run into a fresh output folder. Open social-review/index.html, inspect analysis.json and source.csv, and check the source line numbers. FIELDNOTES is a fictional dataset, not our own customer performance. On Windows use .venv\Scripts\python.exe.
| Metric or source boundary | Expected source-derived value |
|---|---|
| Included September posts | 5 rows, including one zero-impression fixture |
| Impressions and engagements | 85000 impressions; 3530 likes + comments + shares |
| Weighted engagement rate | Rate: 3530 / 85000 × 100 = 4.1529% |
| Clicks and click-through rate | 1060 clicks; 1.2471% of impressions |
| Outside-window source record | outside is excluded; sep-zero has unknown per-post rates |
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python scripts/build-report.py --input examples/project.json --csv examples/posts.csv --output ./social-reviewKeep weighted rates, click counts and unknowns distinct
Aggregate engagement is sum(likes + comments + shares) / sum(impressions) × 100, not the mean of individual post rates. Clicks are a separate numerator. With zero impressions, a post rate is null/Unknown rather than 0%. Do not sum unique reach, use follower counts as these denominators or treat click counts as purchases.
The fictional previous window has 1570 engagements and 56000 impressions, or 2.8036%. The change is 1.3493 percentage points, not a causal lift estimate. The 3.5% goal is an authored planning target. Different channels, formats, paid spend and observation cutoffs can explain differences; review them before proposing an experiment.
Change one source count and verify the rebuilt analysis
For a controlled practice, change sep-video-1 clicks from 245 to 255 in a copied CSV. Export the edited source bundle or keep the reviewed CSV beside project.json, then rebuild with --csv pointing to that file into a new folder. Expected total clicks become 1070 while engagements remain 3530 and engagement rate remains 4.1529%. The resulting click-through rate is 1.2588%. This checks the calculation path, not real campaign improvement.
In a separate copy, leave a required count blank or overlap the date windows. The builder should fail without creating a delivery. Do not repair unknown metrics by filling zeros merely to get a report. In the room, filter channels and inspect source records; a display filter does not recalculate the complete report’s totals.
Deliver the review and define one falsifiable next test
Deliver analysis.json, source.csv, channel/format CSVs, experiments.csv, project.json, input evidence, presentation and the SHA-256 manifest. State each test’s hypothesis, action, owner, source post IDs and guardrail. Editing deck wording via --edits changes prose only; it does not change the CSV calculations. Existing PPTX/video links remain from the prior build until regenerated.
Add --render --formats landscape --edge 720 --fps 24 to a new build for the optional 30-second source-derived film. Review actual playback, captions and crops; it is not a live operation recording. This workflow does not publish social posts, access analytics accounts or attribute revenue.