Run My Exact Instagram Audit.
The prompt that analysed 100 posts and 3.1 million views, and found the 90% that came from trial reels. Paste it into Claude Code and run it on your own account in under 30 minutes.
You'll also receive my content strategy newsletter with more free breakdowns.
Run the audit on your account
Install Claude Code (2 minutes)
Claude Code is Anthropic's AI coding agent; it does all the technical work and you just talk to it. Install it from claude.com/claude-code (Mac, Windows, or Linux; the desktop app is the simplest path), sign in with your Anthropic account, then create a new empty folder called ig-audit and open it in Claude Code. Type hello and send it. If Claude responds, you are ready.
claude.com/claude-code→Switch Instagram to a Professional account (1 minute)
The Graph API can only read Professional accounts. If yours is personal, open Instagram, go to Settings, then Account, then Switch to Professional Account, and pick Creator or Business. It is free and changes nothing about how your profile looks. Your account also needs to be connected to a Facebook Page; Instagram walks you through that during the switch. Already professional and connected? Skip to the next step.
Create your Meta developer app
Go to developers.facebook.com and log in with the same Facebook account that is connected to your Instagram. Click My Apps in the top right, then Create App. When it asks what your app does, choose the Business type. Name it anything (My IG Audit works), enter your email, and click Create App. You will land on your new app's dashboard.
developers.facebook.com→Add the Instagram Graph API product
On the app dashboard, scroll down to the Add products section. Find Instagram Graph API in the list and click Set Up. That is the whole step; there is nothing to configure yet. This just tells Meta your app is allowed to talk to Instagram.
Generate your access token
Open the Graph API Explorer at developers.facebook.com/tools/explorer and select your new app in the application dropdown on the right. Click Get Token, then Get User Access Token. In the permissions box tick instagram_basic, instagram_manage_insights, pages_show_list and pages_read_engagement. Click Generate Access Token and authorise with your Facebook account when the popup appears. Copy the token it gives you.
The token is short-lived and expires in about an hour. That is fine; Claude Code exchanges it for a 60-day one in the next step.
Grab your App ID and App Secret
Back on your app's dashboard, open Settings, then Basic, in the left sidebar. Your App ID sits at the top of the page. Next to App Secret, click Show and copy it. You now have the three values Claude Code needs: the token, the App ID, and the App Secret.
Let Claude Code do the token exchange
Send Claude Code the message below, then paste in your three values when it asks. They stay in a local .env file on your machine and never leave it.
I have a short-lived Instagram Graph API token, an app ID, and an app secret. Create a .env file, store them there, and exchange the token for a long-lived token using the Meta API. Then find my Instagram user ID via my connected Facebook Page and save it to the .env too.Run the audit (1 paste)
Copy the whole prompt below and paste it into the same Claude Code session, then go make a coffee. When it finishes it hands you an HTML report; open it in your browser.
I want you to run a full audit of my Instagram account using the official Instagram Graph API, and produce a single self-contained HTML report. Work through this step by step and verify each stage before moving on.
**Setup.** Ask me for my long-lived Instagram Graph API access token and my Instagram user ID. Store both in a local `.env` file in this folder and read them from there. Never hardcode them into any script, and never print the token back to me.
**Pull the data.** Using the Graph API (graph.facebook.com, latest stable version), page through my `/media` edge and fetch EVERY post with these fields: id, media_type, media_product_type, is_shared_to_feed, caption, permalink, timestamp, like_count, comments_count. Then fetch per-post insights for each post using metric_type=total_value: reach, saved, shares, total_interactions, and total_views for videos and carousels (fall back to views if total_views is rejected). Use lifetime totals. Also fetch my account fields: username, followers_count, media_count.
**Classify each post.**
- Trial reel: media_product_type is REELS and is_shared_to_feed is false
- Grid reel: media_product_type is REELS and is_shared_to_feed is true
- Carousel or feed post: media_product_type is FEED
Cross-check: grid reels plus feed posts should equal my profile media_count. Report the check.
- Comment-CTA post: the caption asks people to comment a keyword (match "comment" followed by a word, near the start of the caption). Extract the keyword.
- Hook A/B group: posts published on the same day or adjacent days with near-identical captions or the same CTA keyword are variants of one concept.
**Compute these blocks.**
1. Total views, and view share by format: trials vs grid reels vs carousels
2. A full battery table per format: posts, views, comments, saves, likes, shares, engagement rate (interactions divided by reach), each with MEAN and MEDIAN. Show mean and median side by side; the gap between them matters
3. CTA analysis: average and median views and comments for comment-CTA posts vs posts with no ask, and the multiples between them
4. Hook A/B groups: for each group, list the variants with views, and the lift multiple between best and worst
5. A DM keyword table: for each detected keyword, posts, total views, total comments, best post
6. Top 10 posts by views, with format and permalink
7. If I give you a follower baseline (count plus date), add follower growth and views per new follower
**Output.** One self-contained HTML file, cleanly styled with a simple type scale, readable tables, and no external dependencies. Every number in the report must be traceable: link each post row to its real permalink. Open it in my browser when done.
**Honesty rules, non-negotiable.**
- If any number is modeled or estimated rather than measured, label it "modeled" where it appears
- Note in the report that the API only exposes each post's CURRENT feed status, not its history, so a trial that was later pushed to the grid counts by its current state
- If a metric is unavailable for a post type, say so; never invent or backfill a stat
- If the API rejects a call, show me the error instead of guessing
Ask me now for the token and user ID, then run the whole thing.Reading your report
Three numbers to look at first. One, your view share by format: if trial reels are not carrying most of your views yet, that is your single biggest lever. Two, your CTA multiple: if captions with a comment ask beat captions without one by 5x or more, every post you ship without a CTA is a leak. Three, your hook A/B gaps: if the same concept swings 10x on the hook alone, never again post to your grid without trialling the hook first.
What's inside
- The exact audit prompt: trial reels vs grid, view share, CTA multiples, hook A/B gaps, all with means and medians
- The 12-minute setup: Claude Code, your Meta app, and your access token, step by step with zero coding
- How to read the three numbers that matter most in your report, and what to change first