원클릭으로
instagram-access
Permanent capability skill for authenticated Instagram data extraction using instaloader and a reusable session cookie file
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Permanent capability skill for authenticated Instagram data extraction using instaloader and a reusable session cookie file
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Auto-review planning pipeline - runs CEO then design then eng reviews sequentially with auto-decisions. CARL TRIGGERS: autoplan, run the planning pipeline, full plan review, auto plan, plan everything. SOURCE: garrytan/gstack/autoplan, integrated as gs-autoplan on 2026-05-29.
Performance regression detection - baseline page load, Core Web Vitals, resource sizes. CARL TRIGGERS: benchmark, performance check, page speed, core web vitals, perf baseline. SOURCE: garrytan/gstack/benchmark, integrated as gs-benchmark on 2026-05-29.
Post-deploy canary monitoring - watches console errors, perf regressions, page failures. CARL TRIGGERS: canary monitor, post-deploy watch, after deploy check, monitor production, watch the deploy. SOURCE: garrytan/gstack/canary, integrated as gs-canary on 2026-05-29.
Safety guardrails - warns before destructive commands (rm -rf, DROP TABLE, force-push). CARL TRIGGERS: be careful, careful mode, destructive command warning, safety warning. SOURCE: garrytan/gstack/careful, integrated as gs-careful on 2026-05-29.
Chief Security Officer security audit - OWASP Top 10 plus STRIDE threat modeling. CARL TRIGGERS: security audit, OWASP audit, STRIDE, vulnerability check, security review, threat model, pen test mindset. SOURCE: garrytan/gstack/cso, integrated as gs-cso on 2026-05-29.
Generate missing documentation from scratch using the Diataxis framework. CARL TRIGGERS: generate docs, create documentation, draft docs, diataxis, write missing docs. SOURCE: garrytan/gstack/document-generate, integrated as gs-doc-generate on 2026-05-29.
| name | Instagram Access |
| description | Permanent capability skill for authenticated Instagram data extraction using instaloader and a reusable session cookie file |
| recall_keywords | ["instagram","instaloader","download post","download reel","instagram profile","instagram research","social media download","shortcode","instagram asset"] |
You need a dedicated Instagram account for scraping (DO NOT use your main account — Instagram may rate-limit or ban scraper accounts). Create a secondary account, then:
Install instaloader:
pip install instaloader --break-system-packages # Linux/WSL
pip install instaloader # Windows/macOS
Generate a session cookie file (run in a separate terminal, NOT through Claude Code's Bash tool):
instaloader --login <your-scraper-username>
Instaloader stores the session at:
%LOCALAPPDATA%\Instaloader\session-<username>.pg (e.g. C:\Users\<you>\AppData\Local\Instaloader\session-<username>.pg)~/.config/instaloader/session-<username>.pgRecord the username and session path in your project's configuration (NOT in this skill — keep credentials out of version control).
The session eventually expires. When instaloader throws LoginRequiredException or ConnectionException with "redirected to login":
instaloader --login <username>
NEVER attempt interactive login through the Bash tool. It cannot handle password prompts.
import instaloader
L = instaloader.Instaloader(
download_videos=True,
download_video_thumbnails=False,
compress_json=False,
save_metadata=False,
download_geotags=False,
download_comments=False,
post_metadata_txt_pattern=""
)
# Replace <username> with the scraper account username
L.load_session_from_file("<username>")
profile = instaloader.Profile.from_username(L.context, "<target-username>")
print(f"Followers: {profile.followers}, Posts: {profile.mediacount}")
print(f"Bio: {profile.biography}")
post = instaloader.Post.from_shortcode(L.context, "<shortcode>")
print(f"Date: {post.date_utc}, Likes: {post.likes}, Type: {post.typename}")
print(f"Caption: {post.caption}")
L.download_post(post, target="output_directory")
for post in profile.get_posts():
print(post.shortcode, post.caption[:50])
time.sleep(2)
hashtag = instaloader.Hashtag.from_name(L.context, "<hashtag>")
for post in hashtag.get_posts():
print(post.shortcode)
time.sleep(2)
import re
url = "https://www.instagram.com/p/<shortcode>/"
shortcode = re.search(r'/(p|reel)/([A-Za-z0-9_-]+)', url).group(2)
Always add at the top of any script:
import sys, io, os
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
os.environ["PYTHONIOENCODING"] = "utf-8"
Instaloader creates files with timestamps containing colons — invalid on Windows. Always sanitize filenames:
import re
safe_name = re.sub(r'[<>:"/\\|?*]', '_', original_name)
with open(filepath, "w", encoding="utf-8") as f:
f.write(caption_with_non_latin)
profile = instaloader.Profile.from_username(L.context, "someprofile")
for post in profile.get_posts():
L.download_post(post, target="downloads")
time.sleep(3)
profile = instaloader.Profile.from_username(L.context, "profile")
for i, post in enumerate(profile.get_posts()):
if i >= 20: break
print(f"{post.shortcode}: {post.caption[:100]}")
time.sleep(1.5)
shortcode = re.search(r'/(p|reel)/([A-Za-z0-9_-]+)', url).group(2)
post = instaloader.Post.from_shortcode(L.context, shortcode)
L.download_post(post, target="downloads")
profile = instaloader.Profile.from_username(L.context, "competitor")
info = {
"username": profile.username,
"full_name": profile.full_name,
"bio": profile.biography,
"followers": profile.followers,
"following": profile.followees,
"posts": profile.mediacount,
"is_verified": profile.is_verified,
"is_business": profile.is_business_account,
"business_category": profile.business_category_name,
}
# Get engagement stats from recent 20 posts
likes, comments = [], []
for i, post in enumerate(profile.get_posts()):
if i >= 20: break
likes.append(post.likes)
comments.append(post.comments)
time.sleep(1.5)
info["avg_likes"] = sum(likes) / len(likes) if likes else 0
info["avg_comments"] = sum(comments) / len(comments) if comments else 0
instagram, instaloader, download post, download reel, instagram profile, instagram research, social media download, shortcode, instagram asset