[object Object]

← back to Norma

auto-data-snapshot: 2026-08-15T07:41:54 (1 data files) — agents/instagram-agent/IG-RESHARE-OPS.md

c6b549af7e8aa1ee1dffb8acaa7b4255441af205 · 2026-08-15 07:42:27 -0700 · auto-commit-fleet

Files touched

Diff

commit c6b549af7e8aa1ee1dffb8acaa7b4255441af205
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date:   Sat Aug 15 07:42:27 2026 -0700

    auto-data-snapshot: 2026-08-15T07:41:54 (1 data files) — agents/instagram-agent/IG-RESHARE-OPS.md
---
 agents/instagram-agent/IG-RESHARE-OPS.md | 53 ++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/agents/instagram-agent/IG-RESHARE-OPS.md b/agents/instagram-agent/IG-RESHARE-OPS.md
new file mode 100644
index 0000000..4cec6e5
--- /dev/null
+++ b/agents/instagram-agent/IG-RESHARE-OPS.md
@@ -0,0 +1,53 @@
+# DW Instagram Fleet — Operations Guide
+
+The DW Instagram operation: **35 accounts**, one shared never-expiring Meta Graph token
+(`accounts.json`), posting product content + reshares + comment replies. Built out 2026-08-14/15
+(TK-10574). This doc is the map.
+
+## 1. Captions (the root fix)
+- **`content.js` → `autoCaption(product)`** composes every caption: **Name · Color · Model/SKU · service line · hashtags**. NO http link (Steve, 2026-08-14). NO price, NO raw private-label vendor.
+- Color = title `- <color>` segment → colorway tag → atomic tag. SKU = `variants[].sku` with the sample/size suffix stripped, uppercased.
+- Both the CLI poster (`post-to.js`) and the cadence (`daily-cadence.js`) route through this — fix it here, everything inherits it.
+
+## 2. Cadence — the daily product poster (LIVE)
+- **`daily-cadence.js`** — **3 posts/day/account**, spaced ~3.3h across the 08:00–20:00 window. Reads `account-themes.json` for each account's product keyword; skips `skip` accounts, defers `sensitive` (scenic/botanical) ones to a manual settlement pass.
+- launchd: **`com.steve.dw-ig-cadence`** (every ~35 min, `--batch 6`). This is the ONLY reshare/cadence job installed by default.
+- Dormant-account gotcha: a multi-word keyword that returns 0 storefront results makes the account silently never post. Use single strong nouns ("commercial wallcovering", not "hospitality vinyl"). Verify: `node daily-cadence.js --status`.
+
+## 3. Reshare engine — repost real vendors' hashtag posts, credited
+- **`hashtag-reshare.js <account>`** — generic per-account. Pulls the account's niche hashtags (`data/account-hashtags.json`), matches captions against the DW vendor DB (`data/dw-vendors.txt`), credits the vendor (via @mention or DB match), posts via Graph API. Rails: **6/day cap · dedup · exclude-own-posts · business-hours**.
+- **`fabric-friday-reshare.js`** — the original @fabric_fridays special case (#fabricfriday/#fabricfridays).
+- Credit correctness depends on the vendor DB being clean brands (no material words like "grasscloth"/"custom" — those cause false credits). Rebuild with `build-ig-data.js`.
+- Interaction reality: liking/commenting on OTHERS' posts is NOT possible via the Graph API. Only reshares + replies-to-our-own-comments are API-legal.
+
+## 4. Comment replies (the one API-legal interaction)
+- **`comment-reply.js <account>`** — warm replies to praise on OUR posts. Positivity-filtered: skips questions, negatives, spam ("send me this post"), and our own comments. Dedups via `data/comment-replies-<account>.jsonl`.
+
+## 5. Fleet wrappers + phased rollout
+- **`reshare-fleet.js` / `reply-fleet.js`** — cycle `data/reshare-phase.json`'s accounts, paced.
+- **Expand the rollout = edit `data/reshare-phase.json`** (add the next batch of accounts). No code change. Watch the canaries 48–72h between batches (Meta velocity ban vector).
+- Phase 1 = designerwallcoverings, grasscloth, chinoiserie, metallic, suede (+ fabric_fridays standalone).
+
+## 6. Schedules — STAGED in `deploy/`, Steve installs (gated)
+The classifier blocks the agent from installing persistent auto-posting jobs. Steve installs:
+```
+cd deploy && cp com.steve.dw-ig-*.plist ~/Library/LaunchAgents/ && \
+  for j in reshare-fleet reply-fleet phase1-check fabricfriday-reshare; do \
+    launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.steve.dw-ig-$j.plist; done
+```
+
+## 7. Data deps (tracked config; regenerable)
+- `data/dw-vendors.txt` — vendor match list (FileMaker WALLPAPER.Supplier + vendor_registry, scrubbed of material/generic words).
+- `data/account-hashtags.json` — hand-curated real community hashtags per account.
+- **`build-ig-data.js`** rebuilds both (preserves the hand-curated hashtags; only seeds if missing).
+
+## 8. Helper viewers + monitor
+- `gen-delete-viewer.js` → `public/delete-viewer.html` — cockpit to manually delete old dupes (Graph API can't delete; openclaw is IG-checkpointed).
+- `gen-actions-viewer.js` → `public/actions-today.html` — today's actions dashboard.
+- `monitor-reshares.js` — polls specific reshares for engagement (ephemeral, hardcoded IDs).
+
+## 9. Gated / manual (NOT automatable)
+- **Deleting posts** — no Graph API endpoint; openclaw's IG-checkpointed. Manual in-app via the delete cockpit.
+- **Installing the schedules** — Steve's paste (§6).
+- **@papelestapiz** — Meta-restricted; needs an appeal, not code.
+- **Sensitive accounts** (chinoiserie/custom/thesetdecorator/traditionalwhimsy) — stay behind the settlement gate; don't auto-post botanical/scenic.

← 1e76508 IG cadence: fix 4 dormant accounts (hospitality/interiorvide  ·  back to Norma  ·  IG cadence: exclude @beverlyhillsvideos (dedicated LIVE reel e654e89 →