Install
openclaw skills install instagram-content-studioManage an Instagram account. View profile, list posts, publish images/carousels, publish videos/Reels, and read/write comments. Use when the user requests any Instagram-related task.
openclaw skills install instagram-content-studioA skill for managing an Instagram account via the Instagram Graph API. Supports profile viewing, post management, image publishing, video/Reels publishing, and comment operations.
.env file with credentials must be configured.
INSTAGRAM_ACCESS_TOKENFACEBOOK_USER_ACCESS_TOKENFACEBOOK_APP_ID, FACEBOOK_APP_SECRETcloudflared must be installed for local image/video posting..env file path, append --env <path> to every command.
node scripts/get-profile.js --env /home/user/.instagram-envAll commands automatically refresh the token before execution. No manual refresh needed.
# Instagram token refresh
node scripts/refresh-token.js
# Facebook user token refresh (for comments/replies flow)
node scripts/refresh-facebook-token.js
Manually refreshes token(s) and returns expiration info.
node scripts/get-profile.js
Returns profile info (name, username, account type, media count).
node scripts/get-posts.js [--limit 10]
Returns the user's post list. Use --limit to set the count (default: 10).
node scripts/get-post.js <media-id>
Returns post detail including like count and comment count.
# Single image (URL)
node scripts/post-image.js --caption "Caption" https://example.com/photo.jpg
# Single image (local file)
node scripts/post-image.js --caption "Caption" ./photos/image.png
# Carousel — multiple images (URL)
node scripts/post-image.js --caption "Caption" https://example.com/a.jpg https://example.com/b.jpg
# Carousel — multiple images (local files)
node scripts/post-image.js --caption "Caption" ./img1.png ./img2.png ./img3.jpg
http://, https://) and local file paths are supported, but mixing is not allowed.# Single video (URL)
node scripts/post-video.js --caption "Caption" https://example.com/video.mp4
# Single video (local file)
node scripts/post-video.js --caption "Caption" ./videos/clip.mp4
# With cover image and options
node scripts/post-video.js --caption "Caption" --cover https://example.com/cover.jpg --thumb-offset 5000 --share-to-feed true https://example.com/video.mp4
# Video carousel — multiple videos (URL)
node scripts/post-video.js --caption "Caption" https://example.com/a.mp4 https://example.com/b.mp4
# Video carousel — multiple videos (local files)
node scripts/post-video.js --caption "Caption" ./clip1.mp4 ./clip2.mov
--cover, --thumb-offset, --share-to-feed options are only available for single video posts (not carousels).node scripts/get-comments.js <media-id>
Returns comments and replies for a specific post.
node scripts/post-comment.js <media-id> --text "Comment text"
node scripts/reply-comment.js <comment-id> --text "Reply text"
If the output contains an error field, an error has occurred. Explain the cause to the user and suggest a resolution.
{ "error": "error message" }
refreshIgToken() and refreshFbToken() overwrite tokens in the .env file in plaintext. Do not commit .env to version control.When creating your Meta app, grant only these permissions:
instagram_business_basic — profile and media readinstagram_content_publish — image/video publishinginstagram_manage_comments — comment read/writepages_read_engagement — required for comment API via Facebook Graphpages_show_list — required for page-linked Instagram accounts