New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Manage Instagram professional accounts via the Hyper MCP

by hyperfx-ai · MIT license · ★ 90 on GitHub

Instagram cover

Manage Instagram professional accounts via the Hyper MCP — publish photos, Reels, Stories, and carousels; moderate comments and mentions; send Direct Messages; pull account and media insights. Uses the Instagram API with Instagram Login…

---
name: instagram
description: Manage Instagram professional accounts via the Hyper MCP — publish photos, Reels, Stories, and carousels; moderate comments and mentions; send Direct Messages; pull account and media insights. Uses the Instagram API with Instagram Login (Business Login). Use when the user mentions Instagram posts, Reels, Stories, carousels, IG DMs, Instagram comments, mentions, profile, or analytics. For paid Instagram advertising, use `meta-ads`.
requires_toolkits:
  - instagram_toolkit
icon: instagram
short_description: Publish photos, Reels, Stories, and carousels, moderate comments, send DMs, and pull insights.
---

# Instagram

Complete skill for managing Instagram professional accounts through the Instagram API with Instagram Login (Business Login). Covers content publishing, messaging, comment moderation, insights, and profile management.

## Out of scope — defer to other skills

| Request | Send them to |
| --- | --- |
| Paid Instagram / Facebook ads, boosting a post, Advantage+ | `meta-ads` |

Overview

Complete skill for managing Instagram professional accounts through the Instagram API with Instagram Login (Business Login). Covers content publishing, messaging, comment moderation, insights, and profile management.

Manual install (npx, ZIP)
Claude Codenpx skills add hyperfx-ai/marketing-skills --skill instagram -g -a claude-code
Claude Code (degit)npx degit hyperfx-ai/marketing-skills/skills/instagram#main ~/.claude/skills/instagram
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md14.5 KB
Read SKILL.md here
hyperfx-ai/main1 file shown
SKILL.md
Show the full text350 lines

Instagram

Complete skill for managing Instagram professional accounts through the Instagram API with Instagram Login (Business Login). Covers content publishing, messaging, comment moderation, insights, and profile management.

Out of scope — defer to other skills

Request Send them to
Paid Instagram / Facebook ads, boosting a post, Advantage+ meta-ads
Competitor ad research from the Meta Ad Library meta-ads-library
TikTok publishing tiktok
LinkedIn document or carousel posts linkedin

Requirements

  • Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
  • Instagram integration connected at https://app.hyperfx.ai/apps — this skill uses the Instagram API with Instagram Login (NOT the older Instagram Graph API via Facebook Login).
  • For organization posts to a company page, the connected account must have permission to post for that organization.

If search("instagram_current_user_get") does not find instagram_current_user_get, stop and tell the user to enable Hyper MCP and connect Instagram.

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

Surface Find a tool Run it
MCP client (Claude, Cursor, Codex, ChatGPT) search("<what you want to do>"), then describe("<name>") call("<name>", {...})
Hyper CLI hyperai search "<what you want to do>", then hyperai describe <name> hyperai call <name> --json '{...}'

If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.

Tool surface

Tool group Tools
Account instagram_current_user_get, instagram_users_get (look up any public IG profile by username or ID — useful for researching commenters and DM contacts)
Publishing instagram_photo_containers_create, instagram_reel_containers_create, instagram_carousel_containers_create, instagram_container_status_check, instagram_media_publish, instagram_publishing_limits_check
Media library instagram_media_list, instagram_media_get, instagram_album_children_get, instagram_stories_list, instagram_tagged_media_get
Comments instagram_comments_list, instagram_comments_send, instagram_comments_reply, instagram_comments_hide, instagram_comments_delete, instagram_comments_toggle
Direct Messages instagram_conversations_list, instagram_conversation_messages_get, instagram_messages_get, instagram_messages_send, instagram_media_messages_send, instagram_post_messages_send, instagram_messages_react
Insights instagram_account_insights_get, instagram_media_insights_get

Critical Rules

CRITICAL: This toolkit uses the Instagram API with Instagram Login (not the older Instagram Graph API via Facebook Login). Metric names and available fields differ from the older API. Always use the metric names documented in this skill.

CRITICAL: The engagement metric does NOT exist in this API. Use individual metrics like likes, comments, shares, total_interactions instead.

CRITICAL: The impressions metric is NOT valid for account-level insights. Use reach or views instead.

CRITICAL: Content publishing uses a two-step container workflow: (1) create a media container, (2) publish it. For video content, poll the container status until FINISHED before publishing.

CRITICAL: Instagram DM responses must be sent within 24 hours of the user's last message (standard messaging window). The Human Agent tag extends this to 7 days if approved.

IMPORTANT: Publishing rate limit is 100 API-published posts per 24-hour rolling window. Carousels count as 1 post. Always call instagram_publishing_limits_check before bulk publishing.

CRITICAL: Do NOT use the location_id parameter on photo, reel, or carousel containers unless the user explicitly provides a verified Facebook Page ID. This integration uses Instagram Business Login which cannot look up or validate location IDs. Passing an invalid or guessed ID will cause a 400 error (Param location_id is not a valid location page ID). If a user asks for location tagging, explain that they need to provide their Facebook Page ID with location data.

CRITICAL: When passing media URLs (image_url, video_url, cover_url, media_url) to any Instagram tool, use the URL exactly as returned by the source tool — most commonly the url field from read_file or display_file. Do NOT:

  • Reconstruct or shorten the URL.
  • Drop, change, or invent any query parameters (signatures, timestamps, etc.).
  • Substitute a different host.
  • Copy a URL from memory or transcribe it character-by-character — call read_file again instead.

Hyper-hosted CDN URLs are automatically resized and re-signed for Meta when needed, so just hand them through verbatim. A single-character corruption in a presigned signature causes Meta to return a misleading 9004 / 2207052: Only photo or video can be accepted as media type error.

IMPORTANT: Most tools act on the authenticated account automatically — you do NOT need to pass a user_id. The toolkit resolves it from the access token internally. Only call instagram_current_user_get when you actually need profile details (username, follower counts, etc.) to display to the user. Use instagram_users_get(user_id=...) only when looking up a different account.

Phase 1: Account Lookup (optional)

Get the connected account's profile
instagram_current_user_get()

Returns: user_id, username, name, account_type, profile_picture_url, followers_count, follows_count, media_count, biography, website.

You do not need to thread the user_id into other tool calls — they resolve it automatically.

Phase 2: Content Publishing

Publishing workflow
  1. Create a media container (photo, reel, story, or carousel).
  2. Check container status (required for video / reels — poll until FINISHED).
  3. Publish the container.
  4. Verify by listing recent media.
Single photo post
instagram_photo_containers_create(
    image_url="https://example.com/photo.jpg",   # Public JPEG URL, max 8MB
    caption="Your caption here #hashtag",
    alt_text="Accessibility description",
)
# Returns container ID

instagram_media_publish(
    creation_id="<container_id>",
)
Reel (short-form video)
instagram_reel_containers_create(
    video_url="https://example.com/video.mp4",   # Public MP4/MOV, max 300MB, 3s-15min
    caption="Reel caption #reels",
    cover_url="https://example.com/cover.jpg",   # Optional cover image
    share_to_feed=True,
)

# MUST poll status for video content
instagram_container_status_check(container_id="<container_id>")
# Wait until status_code == "FINISHED", poll once per minute, max 5 minutes

instagram_media_publish(creation_id="<container_id>")
Story (24-hour expiry)

Note: Story publishing is not yet supported by this MCP integration. To read currently active stories use:

instagram_stories_list()

If the user asks to post a story, inform them this capability is not yet available and suggest posting a Reel with share_to_feed=True as an alternative.

# Step 1: create child containers (each with is_carousel_item=True for photos)
instagram_photo_containers_create(
    image_url="https://example.com/photo1.jpg",
    is_carousel_item=True,
)
# Repeat for each image / video

# Step 2: create the carousel container with child IDs
instagram_carousel_containers_create(
    children=["<child_id_1>", "<child_id_2>", "<child_id_3>"],
    caption="Carousel caption",
)

# Step 3: publish
instagram_media_publish(creation_id="<carousel_container_id>")
Content limits
Type Format Max size Duration
Photo JPEG 8MB —
Reel MP4 / MOV 300MB 3s – 15min
Story image JPEG 8MB —
Story video MP4 / MOV 100MB 3s – 60s
Caption Text 2200 chars 30 hashtags, 20 @tags
Carousel Mixed 2 – 10 items —

Phase 3: Comment Moderation

Read comments
instagram_comments_list(media_id="<media_id>")
Post a comment
instagram_comments_send(media_id="<media_id>", message="Great post!")
Reply to a comment
instagram_comments_reply(comment_id="<comment_id>", message="Thanks!")
Moderate comments
# Hide spam / inappropriate comments
instagram_comments_hide(comment_id="<comment_id>", hide=True)

# Delete a comment (only the media owner can delete)
instagram_comments_delete(comment_id="<comment_id>")

# Toggle comments on / off for a post
instagram_comments_toggle(media_id="<media_id>", comment_enabled=False)
Respond to mentions

Note: Mention-specific tools (instagram_reply_to_mention, instagram_get_mentioned_media, instagram_get_mentioned_comment) are not yet available in this MCP integration. Mentions appear as comments on your media — respond to them using instagram_comments_reply with the comment ID from instagram_comments_list.

Phase 4: Direct Messages (CRM)

List conversations
instagram_conversations_list()
Read messages
# Get message IDs from a conversation
instagram_conversation_messages_get(conversation_id="<conversation_id>")

# Get full message details (only 20 most recent are queryable)
instagram_messages_get(message_id="<message_id>")
Send messages
# Text message
instagram_messages_send(
    recipient_id="<recipient_igsid>",   # From the message's 'from' field
    text="Thanks for reaching out!",
)

# Media attachment (image, video, audio, PDF)
instagram_media_messages_send(
    recipient_id="<recipient_igsid>",
    media_type="image",                 # image, video, audio, or file
    media_url="https://example.com/photo.jpg",
)

# Share a published post via DM
instagram_post_messages_send(
    recipient_id="<recipient_igsid>",
    post_id="<media_id>",               # Must be your own post
)

# React to a message
instagram_messages_react(
    recipient_id="<recipient_igsid>",
    message_id="<message_id>",
    reaction="love",
)
Messaging constraints
  • The recipient must have initiated the conversation first.
  • 24-hour response window from the user's last message (7 days with the Human Agent tag).
  • Text messages: UTF-8, max 1000 bytes.
  • Media limits: images (PNG / JPEG, 8MB), videos (MP4 / OGG, 25MB), audio (AAC / WAV, 25MB), files (PDF, 25MB).

Phase 5: Analytics & Insights

Account-level insights
instagram_account_insights_get(
    metric=["reach", "profile_views", "follower_count", "accounts_engaged", "total_interactions"],
    period="week",
)

Note: Some metrics (profile_views, total_interactions, demographic metrics) require instagram_business_manage_insights permission and a Business account — they will be silently omitted for Creator accounts. If a metric is missing from the response, check the account type returned by instagram_current_user_get.

Valid account metrics:

Metric Description
reach Unique accounts that saw any content.
follower_count Total followers (lifetime period only).
website_clicks Clicks on the website link in the profile.
profile_views Profile page views.
online_followers Followers online at a given time.
accounts_engaged Unique accounts that interacted.
total_interactions Total likes, comments, shares, saves, replies.
likes Total likes across all content.
comments Total comments across all content.
shares Total shares across all content.
saves Total saves across all content.
replies Total replies (stories / messages).
follows_and_unfollows Net follower changes.
profile_links_taps Taps on profile links.
views Total content views.
engaged_audience_demographics Demographics of the engaged audience.
reached_audience_demographics Demographics of the reached audience.
follower_demographics Demographics of followers.

Invalid account metrics: impressions, email_contacts, phone_call_clicks, text_message_clicks, get_directions_clicks.

Media-level insights
instagram_media_insights_get(
    media_id="<media_id>",
    metric=["reach", "likes", "comments", "saved", "shares", "total_interactions"],
)
  • Common metrics (all non-Story media): reach, saved, likes, comments, shares, total_interactions, views.
  • Reel-only extras (auto-stripped for non-Reels): ig_reels_avg_watch_time, ig_reels_video_view_total_time, clips_replays_count, ig_reels_aggregated_all_plays_count.
  • Story-only metrics: reach, replies, follows, navigation, profile_visits, profile_activity, views.

Tip: When unsure if media is a Reel, just use the common metrics. Reel-only metrics sent to non-Reel media will be auto-stripped by the server.

Invalid media metrics: engagement, impressions, plays, saves — for media use saved (not saves; saves is account-level only).

Period values
Period Description
day Daily breakdown.
week Weekly breakdown.
days_28 28-day breakdown.
month Monthly breakdown.
lifetime All time (required for follower_count).

Phase 6: Media & Story Management

Browse media library
# List recent posts (up to 10K)
instagram_media_list(limit=25)

# Get details of a specific post
instagram_media_get(media_id="<media_id>")

# Get carousel children
instagram_album_children_get(media_id="<carousel_media_id>")

# List active stories (24h window)
instagram_stories_list()

# Get tagged media
instagram_tagged_media_get()
1---
2name: instagram
3description: Manage Instagram professional accounts via the Hyper MCP — publish photos, Reels, Stories, and carousels; moderate comments and mentions; send Direct Messages; pull account and media insights. Uses the Instagram API with Instagram Login (Business Login). Use when the user mentions Instagram posts, Reels, Stories, carousels, IG DMs, Instagram comments, mentions, profile, or analytics. For paid Instagram advertising, use `meta-ads`.
4requires_toolkits:
5 - instagram_toolkit
6icon: instagram
7short_description: Publish photos, Reels, Stories, and carousels, moderate comments, send DMs, and pull insights.
8---
9 
10# Instagram
11 
12Complete skill for managing Instagram professional accounts through the Instagram API with Instagram Login (Business Login). Covers content publishing, messaging, comment moderation, insights, and profile management.
13 
14## Out of scope — defer to other skills
15 
16| Request | Send them to |
17| --- | --- |
18| Paid Instagram / Facebook ads, boosting a post, Advantage+ | `meta-ads` |
19| Competitor ad research from the Meta Ad Library | `meta-ads-library` |
20| TikTok publishing | `tiktok` |
21| LinkedIn document or carousel posts | `linkedin` |
22 
23## Requirements
24 
25- **Hyper MCP installed and connected.** [https://app.hyperfx.ai/mcp](https://app.hyperfx.ai/mcp)
26- **Instagram integration connected** at [https://app.hyperfx.ai/apps](https://app.hyperfx.ai/apps) — this skill uses the **Instagram API with Instagram Login** (NOT the older Instagram Graph API via Facebook Login).
27- For organization posts to a company page, the connected account must have permission to post for that organization.
28 
29If `search("instagram_current_user_get")` does not find `instagram_current_user_get`, stop and tell the user to enable Hyper MCP and connect Instagram.
30 
31### How to run the tools in this skill
32 
33Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
34 
35| Surface | Find a tool | Run it |
36| --- | --- | --- |
37| MCP client (Claude, Cursor, Codex, ChatGPT) | `search("<what you want to do>")`, then `describe("<name>")` | `call("<name>", {...})` |
38| Hyper CLI | `hyperai search "<what you want to do>"`, then `hyperai describe <name>` | `hyperai call <name> --json '{...}'` |
39 
40If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.
41 
42## Tool surface
43 
44| Tool group | Tools |
45| --- | --- |
46| Account | `instagram_current_user_get`, `instagram_users_get` *(look up any public IG profile by username or ID — useful for researching commenters and DM contacts)* |
47| Publishing | `instagram_photo_containers_create`, `instagram_reel_containers_create`, `instagram_carousel_containers_create`, `instagram_container_status_check`, `instagram_media_publish`, `instagram_publishing_limits_check` |
48| Media library | `instagram_media_list`, `instagram_media_get`, `instagram_album_children_get`, `instagram_stories_list`, `instagram_tagged_media_get` |
49| Comments | `instagram_comments_list`, `instagram_comments_send`, `instagram_comments_reply`, `instagram_comments_hide`, `instagram_comments_delete`, `instagram_comments_toggle` |
50| Direct Messages | `instagram_conversations_list`, `instagram_conversation_messages_get`, `instagram_messages_get`, `instagram_messages_send`, `instagram_media_messages_send`, `instagram_post_messages_send`, `instagram_messages_react` |
51| Insights | `instagram_account_insights_get`, `instagram_media_insights_get` |
52 
53## Critical Rules
54 
55> **CRITICAL**: This toolkit uses the **Instagram API with Instagram Login** (not the older Instagram Graph API via Facebook Login). Metric names and available fields differ from the older API. Always use the metric names documented in this skill.
56 
57> **CRITICAL**: The `engagement` metric does NOT exist in this API. Use individual metrics like `likes`, `comments`, `shares`, `total_interactions` instead.
58 
59> **CRITICAL**: The `impressions` metric is NOT valid for account-level insights. Use `reach` or `views` instead.
60 
61> **CRITICAL**: Content publishing uses a two-step container workflow: (1) create a media container, (2) publish it. For video content, poll the container status until `FINISHED` before publishing.
62 
63> **CRITICAL**: Instagram DM responses must be sent within 24 hours of the user's last message (standard messaging window). The Human Agent tag extends this to 7 days if approved.
64 
65> **IMPORTANT**: Publishing rate limit is 100 API-published posts per 24-hour rolling window. Carousels count as 1 post. Always call `instagram_publishing_limits_check` before bulk publishing.
66 
67> **CRITICAL**: Do NOT use the `location_id` parameter on photo, reel, or carousel containers unless the user explicitly provides a verified Facebook Page ID. This integration uses Instagram Business Login which cannot look up or validate location IDs. Passing an invalid or guessed ID will cause a 400 error (`Param location_id is not a valid location page ID`). If a user asks for location tagging, explain that they need to provide their Facebook Page ID with location data.
68 
69> **CRITICAL**: When passing media URLs (`image_url`, `video_url`, `cover_url`, `media_url`) to any Instagram tool, use the URL **exactly as returned** by the source tool — most commonly the `url` field from `read_file` or `display_file`. Do NOT:
70> - Reconstruct or shorten the URL.
71> - Drop, change, or invent any query parameters (signatures, timestamps, etc.).
72> - Substitute a different host.
73> - Copy a URL from memory or transcribe it character-by-character — call `read_file` again instead.
74>
75> Hyper-hosted CDN URLs are automatically resized and re-signed for Meta when needed, so just hand them through verbatim. A single-character corruption in a presigned signature causes Meta to return a misleading `9004 / 2207052: Only photo or video can be accepted as media type` error.
76 
77> **IMPORTANT**: Most tools act on the authenticated account automatically — you do NOT need to pass a `user_id`. The toolkit resolves it from the access token internally. Only call `instagram_current_user_get` when you actually need profile details (username, follower counts, etc.) to display to the user. Use `instagram_users_get(user_id=...)` only when looking up a *different* account.
78 
79## Phase 1: Account Lookup (optional)
80 
81### Get the connected account's profile
82 
83```python
84instagram_current_user_get()
85```
86 
87Returns: `user_id`, `username`, `name`, `account_type`, `profile_picture_url`, `followers_count`, `follows_count`, `media_count`, `biography`, `website`.
88 
89You do not need to thread the `user_id` into other tool calls — they resolve it automatically.
90 
91## Phase 2: Content Publishing
92 
93### Publishing workflow
94 
951. **Create a media container** (photo, reel, story, or carousel).
962. **Check container status** (required for video / reels — poll until `FINISHED`).
973. **Publish the container.**
984. **Verify** by listing recent media.
99 
100### Single photo post
101 
102```python
103instagram_photo_containers_create(
104 image_url="https://example.com/photo.jpg", # Public JPEG URL, max 8MB
105 caption="Your caption here #hashtag",
106 alt_text="Accessibility description",
107)
108# Returns container ID
109 
110instagram_media_publish(
111 creation_id="<container_id>",
112)
113```
114 
115### Reel (short-form video)
116 
117```python
118instagram_reel_containers_create(
119 video_url="https://example.com/video.mp4", # Public MP4/MOV, max 300MB, 3s-15min
120 caption="Reel caption #reels",
121 cover_url="https://example.com/cover.jpg", # Optional cover image
122 share_to_feed=True,
123)
124 
125# MUST poll status for video content
126instagram_container_status_check(container_id="<container_id>")
127# Wait until status_code == "FINISHED", poll once per minute, max 5 minutes
128 
129instagram_media_publish(creation_id="<container_id>")
130```
131 
132### Story (24-hour expiry)
133 
134> **Note:** Story *publishing* is not yet supported by this MCP integration. To read currently active stories use:
135>
136> ```python
137> instagram_stories_list()
138> ```
139>
140> If the user asks to post a story, inform them this capability is not yet available and suggest posting a Reel with `share_to_feed=True` as an alternative.
141 
142### Carousel (2-10 items)
143 
144```python
145# Step 1: create child containers (each with is_carousel_item=True for photos)
146instagram_photo_containers_create(
147 image_url="https://example.com/photo1.jpg",
148 is_carousel_item=True,
149)
150# Repeat for each image / video
151 
152# Step 2: create the carousel container with child IDs
153instagram_carousel_containers_create(
154 children=["<child_id_1>", "<child_id_2>", "<child_id_3>"],
155 caption="Carousel caption",
156)
157 
158# Step 3: publish
159instagram_media_publish(creation_id="<carousel_container_id>")
160```
161 
162### Content limits
163 
164| Type | Format | Max size | Duration |
165| --- | --- | --- | --- |
166| Photo | JPEG | 8MB | — |
167| Reel | MP4 / MOV | 300MB | 3s – 15min |
168| Story image | JPEG | 8MB | — |
169| Story video | MP4 / MOV | 100MB | 3s – 60s |
170| Caption | Text | 2200 chars | 30 hashtags, 20 @tags |
171| Carousel | Mixed | 2 – 10 items | — |
172 
173## Phase 3: Comment Moderation
174 
175### Read comments
176 
177```python
178instagram_comments_list(media_id="<media_id>")
179```
180 
181### Post a comment
182 
183```python
184instagram_comments_send(media_id="<media_id>", message="Great post!")
185```
186 
187### Reply to a comment
188 
189```python
190instagram_comments_reply(comment_id="<comment_id>", message="Thanks!")
191```
192 
193### Moderate comments
194 
195```python
196# Hide spam / inappropriate comments
197instagram_comments_hide(comment_id="<comment_id>", hide=True)
198 
199# Delete a comment (only the media owner can delete)
200instagram_comments_delete(comment_id="<comment_id>")
201 
202# Toggle comments on / off for a post
203instagram_comments_toggle(media_id="<media_id>", comment_enabled=False)
204```
205 
206### Respond to mentions
207 
208> **Note:** Mention-specific tools (`instagram_reply_to_mention`, `instagram_get_mentioned_media`, `instagram_get_mentioned_comment`) are not yet available in this MCP integration. Mentions appear as comments on your media — respond to them using `instagram_comments_reply` with the comment ID from `instagram_comments_list`.
209 
210## Phase 4: Direct Messages (CRM)
211 
212### List conversations
213 
214```python
215instagram_conversations_list()
216```
217 
218### Read messages
219 
220```python
221# Get message IDs from a conversation
222instagram_conversation_messages_get(conversation_id="<conversation_id>")
223 
224# Get full message details (only 20 most recent are queryable)
225instagram_messages_get(message_id="<message_id>")
226```
227 
228### Send messages
229 
230```python
231# Text message
232instagram_messages_send(
233 recipient_id="<recipient_igsid>", # From the message's 'from' field
234 text="Thanks for reaching out!",
235)
236 
237# Media attachment (image, video, audio, PDF)
238instagram_media_messages_send(
239 recipient_id="<recipient_igsid>",
240 media_type="image", # image, video, audio, or file
241 media_url="https://example.com/photo.jpg",
242)
243 
244# Share a published post via DM
245instagram_post_messages_send(
246 recipient_id="<recipient_igsid>",
247 post_id="<media_id>", # Must be your own post
248)
249 
250# React to a message
251instagram_messages_react(
252 recipient_id="<recipient_igsid>",
253 message_id="<message_id>",
254 reaction="love",
255)
256```
257 
258### Messaging constraints
259 
260- The recipient must have initiated the conversation first.
261- 24-hour response window from the user's last message (7 days with the Human Agent tag).
262- Text messages: UTF-8, max 1000 bytes.
263- Media limits: images (PNG / JPEG, 8MB), videos (MP4 / OGG, 25MB), audio (AAC / WAV, 25MB), files (PDF, 25MB).
264 
265## Phase 5: Analytics & Insights
266 
267### Account-level insights
268 
269```python
270instagram_account_insights_get(
271 metric=["reach", "profile_views", "follower_count", "accounts_engaged", "total_interactions"],
272 period="week",
273)
274```
275 
276> **Note:** Some metrics (`profile_views`, `total_interactions`, demographic metrics) require `instagram_business_manage_insights` permission and a **Business** account — they will be silently omitted for Creator accounts. If a metric is missing from the response, check the account type returned by `instagram_current_user_get`.
277 
278**Valid account metrics:**
279 
280| Metric | Description |
281| --- | --- |
282| `reach` | Unique accounts that saw any content. |
283| `follower_count` | Total followers (lifetime period only). |
284| `website_clicks` | Clicks on the website link in the profile. |
285| `profile_views` | Profile page views. |
286| `online_followers` | Followers online at a given time. |
287| `accounts_engaged` | Unique accounts that interacted. |
288| `total_interactions` | Total likes, comments, shares, saves, replies. |
289| `likes` | Total likes across all content. |
290| `comments` | Total comments across all content. |
291| `shares` | Total shares across all content. |
292| `saves` | Total saves across all content. |
293| `replies` | Total replies (stories / messages). |
294| `follows_and_unfollows` | Net follower changes. |
295| `profile_links_taps` | Taps on profile links. |
296| `views` | Total content views. |
297| `engaged_audience_demographics` | Demographics of the engaged audience. |
298| `reached_audience_demographics` | Demographics of the reached audience. |
299| `follower_demographics` | Demographics of followers. |
300 
301**Invalid account metrics:** `impressions`, `email_contacts`, `phone_call_clicks`, `text_message_clicks`, `get_directions_clicks`.
302 
303### Media-level insights
304 
305```python
306instagram_media_insights_get(
307 media_id="<media_id>",
308 metric=["reach", "likes", "comments", "saved", "shares", "total_interactions"],
309)
310```
311 
312- **Common metrics (all non-Story media):** `reach`, `saved`, `likes`, `comments`, `shares`, `total_interactions`, `views`.
313- **Reel-only extras** (auto-stripped for non-Reels): `ig_reels_avg_watch_time`, `ig_reels_video_view_total_time`, `clips_replays_count`, `ig_reels_aggregated_all_plays_count`.
314- **Story-only metrics:** `reach`, `replies`, `follows`, `navigation`, `profile_visits`, `profile_activity`, `views`.
315 
316> **Tip:** When unsure if media is a Reel, just use the common metrics. Reel-only metrics sent to non-Reel media will be auto-stripped by the server.
317 
318**Invalid media metrics:** `engagement`, `impressions`, `plays`, `saves` — for media use `saved` (not `saves`; `saves` is account-level only).
319 
320### Period values
321 
322| Period | Description |
323| --- | --- |
324| `day` | Daily breakdown. |
325| `week` | Weekly breakdown. |
326| `days_28` | 28-day breakdown. |
327| `month` | Monthly breakdown. |
328| `lifetime` | All time (required for `follower_count`). |
329 
330## Phase 6: Media & Story Management
331 
332### Browse media library
333 
334```python
335# List recent posts (up to 10K)
336instagram_media_list(limit=25)
337 
338# Get details of a specific post
339instagram_media_get(media_id="<media_id>")
340 
341# Get carousel children
342instagram_album_children_get(media_id="<carousel_media_id>")
343 
344# List active stories (24h window)
345instagram_stories_list()
346 
347# Get tagged media
348instagram_tagged_media_get()
349```
350 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 90
Checked
Source
hyperfx-ai/marketing-skills ↗
Creator
hyperfx-ai · 11 listings
View creator

Similar skills

See all →
SkillResearch what people actually say about any topicSTEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOWmvanhorn/last30days-skill · by mvanhornResearch what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web. Includes a doctor health check to diagnose broken or missing sources.★ 63.5k GitHub starsSkillScrapes social platforms, business dataApifydanielmiessler/LifeOS · by danielmiesslerScrapes social platforms, business data, and e-commerce via Apify actors — Instagram, LinkedIn, TikTok, YouTube, Facebook, Google Maps, Amazon, and web crawls — filtering in code. USE WHEN scrape Instagram, scrape LinkedIn, scrape TikTok, scrape YouTube, scrape Facebook, Google Maps leads, Amazon reviews, business intelligence, multi-platform social listening, competitive analysis, lead generation, social monitoring, Apify actors, web crawl, extract contacts. NOT FOR X/Twitter account operations like posting, threads, or bookmarks (those need a dedicated X API client), 4-tier progressive scraping with proxy escalation (use BrightData), or real-Chrome bot bypass and computer use (use Interceptor).★ 19.3k GitHub starsSkill微信公众号长文增长闭环 ——tsingyuai/growth-lab · by tsingyuai微信公众号长文增长闭环 —— 从读者问题与复刻锚选题、写出可验证的公众号长文、预览与合规检查、同步微信草稿、三重确认下受控发布,到回收阅读与转化数据并复盘。用户要求写公众号、把内容改成公众号、同步或发布微信草稿、查看公众号数据或复盘时使用。★ 2k GitHub starsSkillSearch and retrieve content from Twitter/XTwitter/X SkillReScienceLab/opc-skills · by ReScienceLabSearch and retrieve content from Twitter/X. Get user info, tweets, replies, followers, communities, spaces, and trends via twitterapi.io. Use when user mentions Twitter, X, or tweets.★ 1.8k GitHub starsSkillSays 'YouTube script', 'video script'🎬 YouTube Script: Writing retention-optimized video script...cwinvestments/memstack · by cwinvestmentsUse this skill when the user says 'YouTube script', 'video script', 'write script for YouTube', 'YouTube video outline', or is creating scripted content for a YouTube video with hooks, chapters, and CTAs. Do NOT use for TikTok/Reels short-form scripts or webinar presentations.★ 423 GitHub starsSkillAgent Reach — 互联网能力路由器Ootto-AI/claude-content-skills · by Ootto-AIMUST USE when user wants to 调研/research/搜索/search/查/找/look up anything on the internet — e.g. 全网调研 X / 帮我调研一下 X / 查一下 X / 搜搜 X / 看看大家怎么评价 X / X 上有什么讨论 / research this topic。 Also MUST USE when user mentions any platform or shares any URL/链接: 小红书/xiaohongshu/xhs, Twitter/推特/X, B站/bilibili, Reddit, V2EX, LinkedIn/领英/招聘/求职/jobs, YouTube, GitHub code search, 小宇宙播客, 雪球/股票行情, RSS feeds, or any web URL. 13 platforms, multi-backend routing (OpenCLI / per-platform CLIs / APIs). Zero config for 6 channels. Run `agent-reach doctor --json` to see which backend serves each platform right now. NOT for: 写报告/数据分析/翻译等内容加工(本 skill 只负责从互联网获取内容); 发帖/评论/点赞等写操作;已有专门 skill 的平台(先用专门 skill)。 【路由方式】SKILL.md 包含路由表和常用命令,复杂场景需按需阅读对应分类的 references/*.md。 分类:search / social (小红书/推特/B站/V2EX/Reddit) / career(LinkedIn) / dev(github) / web(网页/文章/RSS) / video(YouTube/B站/播客)。★ 139 GitHub stars

More from hyperfx-ai

SkillGenerate on-brand ad creativesAd creative generationhyperfx-ai/marketing-skills · by hyperfx-aiGenerate on-brand ad creatives — visuals + copy — for Google, Meta (Facebook / Instagram), and other paid platforms via the Hyper MCP. Extracts brand identity from a website, writes ad copy variants, and produces brand-consistent images using reference-based image generation. Use when the user asks for ad creative, ad copy variants, RSA headlines, Meta ad creative, display ads, carousel ads, or A/B test variants.★ 90 GitHub starsSkillPlan and create Amazon Sponsored Products campaignsAmazon adshyperfx-ai/marketing-skills · by hyperfx-aiPlan and create Amazon Sponsored Products campaigns end-to-end via the Hyper MCP. Use when the user wants to launch Amazon Ads, set up Sponsored Products, manage keyword targeting and bids, configure ASIN or category product targeting, add negative keywords, automate budget rules, analyze ACoS / ROAS, or generate Sponsored Products reports. Also triggers on amazon ppc, amazon campaign, amazon keywords, or amazon report.★ 90 GitHub starsSkillRun end-to-end B2B cold-email outreach through the Hyper MCPhyperfx-ai/marketing-skills · by hyperfx-aiRun end-to-end B2B cold-email outreach through the Hyper MCP — enrich prospects with Apollo, scrape per-prospect signals from company sites and LinkedIn, draft personalized emails using proven hook frameworks, send via Gmail with safe defaults, and route replies into labeled folders. Use when the user wants to write cold emails, run an outbound sequence, prospect a list, build a follow-up cadence, "reach out to leads," or asks why nobody is replying to their cold emails.★ 90 GitHub starsSkillPlan and create new Google Ads campaignshyperfx-ai/marketing-skills · by hyperfx-aiPlan and create new Google Ads campaigns and report on existing accounts via the Hyper MCP. Use when the user wants to launch Search, Display, Performance Max, Video, Demand Gen, Shopping, or App campaigns, build Google Ads reports or dashboards, diagnose conversion tracking, or mentions Google Ads, AdWords, search ads, display ads, Performance Max, PMax, PPC, Google campaigns, search term reports, budget analysis, conversion funnels, negative keywords, or manager accounts (MCC).★ 90 GitHub starsSkillPublish and manage LinkedIn content via the Hyper MCPhyperfx-ai/marketing-skills · by hyperfx-aiPublish and manage LinkedIn content via the Hyper MCP — text posts, article / link previews, document and PDF posts, organization (company page) posts, and AI-generated text-to-carousel posts. Use when the user wants to post on LinkedIn, share an article on LinkedIn, post to a LinkedIn company page, upload a PDF / document to LinkedIn, or build a LinkedIn carousel from text.★ 90 GitHub starsSkillPlan and create Meta advertising campaigns end-to-endMeta adshyperfx-ai/marketing-skills · by hyperfx-aiPlan and create Meta (Facebook + Instagram) advertising campaigns end-to-end via the Hyper MCP, defaulting to Advantage+ automation. Use when the user wants to launch Meta ads, Facebook ads, Instagram ads, Advantage+ campaigns, carousel ads, dynamic creative ads, set up Meta conversion tracking, analyze performance, audit a Meta ads account, or build Meta performance dashboards. Also triggers on phrases like meta campaign, facebook campaign, advantage+, or meta account audit.★ 90 GitHub stars