← back to Marketing Command Center
auto-data-snapshot: 2026-09-26T08:50:16 (3 data files) — data/com.steve.dw-follow-counts.plist.bak-TK-12008 data/follow-counts-history.json.bak-TK-12008 public/ig-activity.json
c82763cdd20f27d2e0175f2c9c1f97ba6a6bde46 · 2026-09-26 08:50:45 -0700 · auto-commit-fleet
Files touched
A data/com.steve.dw-follow-counts.plist.bak-TK-12008A data/follow-counts-history.json.bak-TK-12008M public/ig-activity.json
Diff
commit c82763cdd20f27d2e0175f2c9c1f97ba6a6bde46
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date: Sat Sep 26 08:50:45 2026 -0700
auto-data-snapshot: 2026-09-26T08:50:16 (3 data files) — data/com.steve.dw-follow-counts.plist.bak-TK-12008 data/follow-counts-history.json.bak-TK-12008 public/ig-activity.json
---
data/com.steve.dw-follow-counts.plist.bak-TK-12008 | 39 ++
data/follow-counts-history.json.bak-TK-12008 | 579 +++++++++++++++++++++
public/ig-activity.json | 62 ++-
3 files changed, 673 insertions(+), 7 deletions(-)
diff --git a/data/com.steve.dw-follow-counts.plist.bak-TK-12008 b/data/com.steve.dw-follow-counts.plist.bak-TK-12008
new file mode 100644
index 0000000..1cbd073
--- /dev/null
+++ b/data/com.steve.dw-follow-counts.plist.bak-TK-12008
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ STAGED — NOT loaded. Once-daily Followers/Following snapshot for the DW Marketing
+ Command Center. Captures each DW IG account's followers_count + follows_count via
+ Norma's instagram-agent (:9810) and persists one row/day so growth charts.
+
+ Local install (Mac2), when Steve approves:
+ cp deploy/com.steve.dw-follow-counts.plist ~/Library/LaunchAgents/
+ launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.steve.dw-follow-counts.plist
+ Verify: launchctl list | grep dw-follow-counts
+ Run now: launchctl kickstart gui/$(id -u)/com.steve.dw-follow-counts
+
+ Runs daily at 06:05 local (RunAtLoad so a missed forced-sleep day still fires on
+ next login — see MEMORY: keepawake does not block power-button sleep).
+-->
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.steve.dw-follow-counts</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/node</string>
+ <string>/Users/macstudio3/Projects/marketing-command-center/scripts/follow-counts-snapshot.js</string>
+ </array>
+ <key>WorkingDirectory</key>
+ <string>/Users/macstudio3/Projects/marketing-command-center</string>
+ <key>RunAtLoad</key>
+ <true/>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key><integer>6</integer>
+ <key>Minute</key><integer>5</integer>
+ </dict>
+ <key>StandardOutPath</key>
+ <string>/Users/macstudio3/Projects/marketing-command-center/data/follow-counts-snapshot.out</string>
+ <key>StandardErrorPath</key>
+ <string>/Users/macstudio3/Projects/marketing-command-center/data/follow-counts-snapshot.err</string>
+</dict>
+</plist>
diff --git a/data/follow-counts-history.json.bak-TK-12008 b/data/follow-counts-history.json.bak-TK-12008
new file mode 100644
index 0000000..5c60c4c
--- /dev/null
+++ b/data/follow-counts-history.json.bak-TK-12008
@@ -0,0 +1,579 @@
+{
+ "designerwallcoverings": [
+ {
+ "date": "2026-06-24",
+ "ts": "2026-06-24T19:17:18.370Z",
+ "followers": 2572,
+ "following": 54,
+ "media": 130,
+ "simulated": true,
+ "source": "norma:monitor"
+ },
+ {
+ "date": "2026-06-25",
+ "ts": "2026-06-25T13:05:05.207Z",
+ "followers": 3157,
+ "following": 91,
+ "media": 147,
+ "simulated": true,
+ "source": "norma:monitor"
+ },
+ {
+ "date": "2026-06-26",
+ "ts": "2026-06-26T19:02:37.793Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-06-27",
+ "ts": "2026-06-27T13:05:02.886Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-06-28",
+ "ts": "2026-06-28T13:05:05.743Z",
+ "followers": 721,
+ "following": 208,
+ "media": 200,
+ "simulated": true,
+ "source": "norma:monitor"
+ },
+ {
+ "date": "2026-06-29",
+ "ts": "2026-06-29T21:22:23.483Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-06-30",
+ "ts": "2026-06-30T15:08:41.109Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-01",
+ "ts": "2026-07-01T21:06:36.738Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-02",
+ "ts": "2026-07-02T14:15:20.529Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-03",
+ "ts": "2026-07-03T19:13:09.780Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-04",
+ "ts": "2026-07-04T13:05:01.880Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-05",
+ "ts": "2026-07-05T13:05:00.340Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-06",
+ "ts": "2026-07-06T13:05:03.717Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-07",
+ "ts": "2026-07-07T13:05:05.705Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-08",
+ "ts": "2026-07-08T13:05:05.636Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-09",
+ "ts": "2026-07-09T13:05:04.653Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-10",
+ "ts": "2026-07-10T17:51:52.389Z",
+ "followers": 659,
+ "following": 161,
+ "media": 189,
+ "simulated": true,
+ "source": "norma:monitor"
+ },
+ {
+ "date": "2026-07-11",
+ "ts": "2026-07-11T13:05:03.465Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-12",
+ "ts": "2026-07-12T13:05:05.903Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-13",
+ "ts": "2026-07-13T13:05:03.177Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-14",
+ "ts": "2026-07-14T13:05:05.506Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-15",
+ "ts": "2026-07-15T13:05:05.516Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-16",
+ "ts": "2026-07-16T13:05:04.988Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-17",
+ "ts": "2026-07-17T13:05:05.073Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-18",
+ "ts": "2026-07-18T13:05:04.755Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-19",
+ "ts": "2026-07-19T13:05:04.591Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-20",
+ "ts": "2026-07-20T13:05:04.690Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-21",
+ "ts": "2026-07-21T13:05:00.064Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-22",
+ "ts": "2026-07-22T13:05:03.297Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-23",
+ "ts": "2026-07-23T13:05:05.290Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-24",
+ "ts": "2026-07-24T13:05:02.837Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-25",
+ "ts": "2026-07-25T13:05:05.247Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-26",
+ "ts": "2026-07-26T13:05:01.366Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-27",
+ "ts": "2026-07-27T13:05:04.797Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-28",
+ "ts": "2026-07-28T13:05:02.761Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-29",
+ "ts": "2026-07-29T13:05:03.887Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-07-30",
+ "ts": "2026-07-30T13:05:03.089Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-07-31",
+ "ts": "2026-07-31T13:05:05.103Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-01",
+ "ts": "2026-08-01T13:05:05.113Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-02",
+ "ts": "2026-08-02T13:05:05.102Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-03",
+ "ts": "2026-08-03T13:05:05.013Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-04",
+ "ts": "2026-08-04T13:05:05.106Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-05",
+ "ts": "2026-08-05T13:05:05.502Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-06",
+ "ts": "2026-08-06T13:05:03.502Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-07",
+ "ts": "2026-08-07T13:05:05.854Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-08",
+ "ts": "2026-08-08T16:04:58.019Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-08-09",
+ "ts": "2026-08-09T13:05:04.494Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-10",
+ "ts": "2026-08-10T13:05:04.821Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-11",
+ "ts": "2026-08-11T13:05:05.056Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-12",
+ "ts": "2026-08-12T13:05:05.020Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-13",
+ "ts": "2026-08-13T13:05:05.660Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-14",
+ "ts": "2026-08-14T19:01:35.684Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-08-15",
+ "ts": "2026-08-15T15:00:55.669Z",
+ "followers": 14928,
+ "following": 7567,
+ "media": 5478,
+ "simulated": false,
+ "source": "norma:monitor"
+ },
+ {
+ "date": "2026-09-22",
+ "ts": "2026-09-22T17:30:45.872Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-09-23",
+ "ts": "2026-09-23T13:05:04.743Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-09-24",
+ "ts": "2026-09-24T13:05:05.038Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Invalid credentials"
+ },
+ {
+ "date": "2026-09-25",
+ "ts": "2026-09-25T22:32:13.777Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ },
+ {
+ "date": "2026-09-26",
+ "ts": "2026-09-26T13:05:05.270Z",
+ "followers": null,
+ "following": null,
+ "media": null,
+ "simulated": true,
+ "source": "norma-error",
+ "error": "Norma unreachable: fetch failed"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/public/ig-activity.json b/public/ig-activity.json
index bd525ff..3a733bf 100644
--- a/public/ig-activity.json
+++ b/public/ig-activity.json
@@ -1,9 +1,13 @@
{
- "generated_at": "2026-09-26T15:11:46.444Z",
- "total_posts": 2507,
+ "generated_at": "2026-09-26T15:49:43.251Z",
+ "total_posts": 2511,
"accounts_touched": 30,
- "last_post_at": "2026-09-26T15:11:46.381Z",
+ "last_post_at": "2026-09-26T15:49:43.140Z",
"by_account": {
+ "linenwallpaper": 122,
+ "interiordesignervideos": 113,
+ "hollywoodwallcoverings": 127,
+ "grassclothwallpaper": 72,
"ffepurchasing": 121,
"fabric_fridays": 124,
"borninbeverlyhills": 120,
@@ -15,10 +19,6 @@
"philliperomanodesigns": 118,
"patterndesignlab": 114,
"metallicwallpaper": 119,
- "linenwallpaper": 121,
- "interiordesignervideos": 112,
- "hollywoodwallcoverings": 126,
- "grassclothwallpaper": 71,
"suedewallpaper": 65,
"hospitalitywallcoverings": 94,
"commercialwallcoverings": 118,
@@ -36,6 +36,54 @@
"beverlyhillsvideos": 2
},
"posts": [
+ {
+ "ts": "2026-09-26T15:49:43.140Z",
+ "handle": "linenwallpaper",
+ "page_name": "Linen Wallpaper",
+ "product_handle": "rue-linen-petrol-sanderson",
+ "product_title": "Rue Linen Petrol | Sanderson",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DRLC237055_407b.jpg?v=1789301950",
+ "images": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DRLC237055_407b.jpg?v=1789301950",
+ "permalink": "https://www.instagram.com/p/DdwZRh2mHtR/",
+ "media_id": "18113539528836322",
+ "kind": "IMAGE"
+ },
+ {
+ "ts": "2026-09-26T15:49:10.907Z",
+ "handle": "interiordesignervideos",
+ "page_name": "Interior Designer Videos",
+ "product_handle": "paradise-palm-coastal-blue-wallcovering-malibu-wallpaper",
+ "product_title": "Paradise Palm - Coastal Blue Wallcovering | Malibu Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0070013_paradise-palm-coastal-blue_650_1b882bdf-083f-4f61-842f-e7e0b179b9c1.jpg?v=1776906749",
+ "images": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0070013_paradise-palm-coastal-blue_650_1b882bdf-083f-4f61-842f-e7e0b179b9c1.jpg?v=1776906749",
+ "permalink": "https://www.instagram.com/p/DdwZNz4mGoU/",
+ "media_id": "17959447560244492",
+ "kind": "IMAGE"
+ },
+ {
+ "ts": "2026-09-26T15:48:49.473Z",
+ "handle": "hollywoodwallcoverings",
+ "page_name": "Hollywood Wallcoverings",
+ "product_handle": "hollywood-glitter-wallcovering-chrome",
+ "product_title": "Hollywood Glitter - Chrome | Glitter Walls",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/ScreenShot2022-06-29at12.31.00PM.png?v=1748366515",
+ "images": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/ScreenShot2022-06-29at12.31.00PM.png?v=1748366515",
+ "permalink": "https://www.instagram.com/p/DdwZLb2GKus/",
+ "media_id": "18009451385994587",
+ "kind": "IMAGE"
+ },
+ {
+ "ts": "2026-09-26T15:48:29.048Z",
+ "handle": "grassclothwallpaper",
+ "page_name": "Wallpaper Weekly",
+ "product_handle": "nantucket-grasscloth-grey-brown-wallcovering-phillipe-romano",
+ "product_title": "Nantucket Grasscloth Grey Brown Wallcovering | Phillipe Romano",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/f679a8d9c2b56f6bb3e7a064defe77b4.jpg?v=1784214062",
+ "images": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/8916e7e576e85c1a28ae4231f99de30b.png?v=1784214062,https://cdn.shopify.com/s/files/1/0015/4117/7456/files/f679a8d9c2b56f6bb3e7a064defe77b4.jpg?v=1784214062",
+ "permalink": "https://www.instagram.com/p/DdwZIP_GG7G/",
+ "media_id": "18142798057503393",
+ "kind": "CAROUSEL"
+ },
{
"ts": "2026-09-26T15:11:46.381Z",
"handle": "ffepurchasing",
← 8377f04 follow-counts: write no row on failure + exit 2 (no SIMULATE
·
back to Marketing Command Center
·
follow-counts: read Norma auth from secrets-manager IG_AGENT f88c44a →