Skip to content

Instagram fetch tools + weekly site-sync routine (draft) - #5

Merged
obartra merged 8 commits into
mainfrom
claude/instagram-profile-download-3f57fe
Jul 11, 2026
Merged

Instagram fetch tools + weekly site-sync routine (draft)#5
obartra merged 8 commits into
mainfrom
claude/instagram-profile-download-3f57fe

Conversation

@obartra

@obartra obartra commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

Adds the Instagram tooling and a drafted (not-yet-scheduled) weekly routine to keep quentinfears.com in sync with new @mrqfears content. Code only — the image dump itself lives on the separate instagram-images branch, not here.

What's included

  • tools/instagram_new_since.py — login-free detector. Fetches recent posts via Instagram's public logged-out endpoint (no cookies, no Keychain), lists posts newer than the ledger. Safe to run unattended. Verified live: found 7 new posts since 2026-06-19.
  • tools/fetch_instagram_images.py — login-free fetcher for recent posts.
  • tools/fetch_instagram_authed.py — deep gallery-dl backfill via the local Chrome session (needs a one-time macOS Keychain approval; manual-only). This produced the 187-photo dump on instagram-images.
  • instagram-ledger.json — state ledger (reviewed_through + incorporated/skipped) so the routine is idempotent.
  • CLAUDE.md — new "Weekly routine" section appended to the existing doc. Adapted to the current Astro + Keystatic content model: thought pieces → notes.items in content/ideas.yaml; photoshoots → content/galleries.yaml + public/assets/img/gallery/.

Notes

  • Draft, not scheduled. Merging this does not start anything automatic; it lands the tools + the operating procedure. Scheduling the weekly agent is a separate follow-up.
  • Ship mode is auto-merge to live (per request): the routine, once scheduled, would commit directly to main. Guardrails in the doc: ≤2 incorporations/week, high-confidence/on-brand only, skip-when-unsure, honors the existing no-employer/no-confidential rules.
  • No changes to site pages, assets, or the SEO layer — the validators/build are unaffected.

🤖 Generated with Claude Code

obartra and others added 3 commits July 11, 2026 14:55
- fetch_instagram_images.py: login-free fetcher for recent posts (Instagram's
  public logged-out endpoints); ideal for a weekly 'what's new' check.
- fetch_instagram_authed.py: deeper backfill via gallery-dl + the local Chrome
  session, with manifest consolidation. This produced the instagram-images dump.

Companion to the existing tools/fetch_site_images.py (old-site crawler).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CLAUDE.md: operating procedure for a weekly agent that detects new @mrqfears
  posts, classifies them (photoshoot -> work.html, thought piece -> ideas.html,
  hosting -> speak.html), incorporates high-confidence on-brand ones, and
  auto-merges to main (which deploys to Pages). Not yet scheduled.
- instagram-ledger.json: state ledger (reviewed_through + incorporated/skipped)
  so the routine is idempotent and only looks at genuinely new posts.
- tools/instagram_new_since.py: login-free detector that lists new posts since
  the ledger. Verified: 7 new posts detected since 2026-06-19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ile-download-3f57fe

# Conflicts:
#	CLAUDE.md
@netlify

netlify Bot commented Jul 11, 2026

Copy link
Copy Markdown

Deploy Preview for qfearless ready!

Name Link
🔨 Latest commit 5334eed
🔍 Latest deploy log https://app.netlify.com/projects/qfearless/deploys/6a52d1f2d6b77200088c68f6
😎 Deploy Preview https://deploy-preview-5--qfearless.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

obartra and others added 5 commits July 11, 2026 16:03
- Ideas page gains a 'Reels' section: a vertical 9:16 card grid. Each item is
  either a poster+caption that links to Instagram (default, no bytes stored) or a
  self-hosted <video> that click-to-loads (curated). Mirrors the existing YouTube
  click-to-load pattern; no external embed script, so the CSP/offline guarantee
  holds.
- Keystatic: reels.items model on the ideas singleton (poster, caption, permalink,
  optional videoSrc). Seeded with 2 self-hosted reels + 1 link-only, from @mrqfears.
- tools/prepare_reel.py: ffmpeg transcode of a reel .mp4 -> compact ~1-2 MB H.264
  + poster, prints the YAML snippet.
- CLAUDE.md/ASSETS.md: document the reel video policy (poster+link default, curated
  self-host via prepare_reel.py).

Build passes; validate_site + seo_check pass (0 warnings).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Turn the sync routine into an editorial pass: judge new posts against the
site's existing best content, replace at section budgets instead of
appending, run a critical review of the whole site every week (stale copy,
redundancy, filler) even with zero new posts, and record replacements and
trims in the ledger so decisions stay auditable. Content-only auto-merge;
structural changes go to a PR.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Merge main (responsive-image system from #8) and bring the reel posters
into it: generate 400/720 AVIF+WebP variants, register them in
img-variants.json, and render through the Picture component instead of a
plain img. Satisfies the image-budget and width/height CI checks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@obartra
obartra merged commit 888b050 into main Jul 11, 2026
6 checks passed
@obartra
obartra deleted the claude/instagram-profile-download-3f57fe branch July 11, 2026 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant