From 1c88dc66363ad05ca09c1b59b9aa52a2d9179fb2 Mon Sep 17 00:00:00 2001 From: Hiroshi Nishio Date: Sun, 12 Apr 2026 16:11:49 -0700 Subject: [PATCH] Reduce SNS post random delay from 5-60 sec to 5-15 sec; add blog image and social post format docs --- .github/scripts/post-twitter.js | 2 +- CLAUDE.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/scripts/post-twitter.js b/.github/scripts/post-twitter.js index dc1216411..c972cc6d9 100644 --- a/.github/scripts/post-twitter.js +++ b/.github/scripts/post-twitter.js @@ -83,7 +83,7 @@ async function postTwitter({ context }) { // ); // Wait for a random amount of time - const getRandomDelay = () => Math.floor(Math.random() * 55000 + 5000); + const getRandomDelay = () => Math.floor(Math.random() * 10000 + 5000); const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); await sleep(getRandomDelay()); diff --git a/CLAUDE.md b/CLAUDE.md index 9856e2758..66679cd09 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -133,6 +133,7 @@ assert find_test_files("foo.ts", all_files, None) == ["foo.test.ts"] 10. `gh pr create --title "PR title" --body "PR description" --assignee @me` - Technical, descriptive title. **No `## Test plan`**. - **Two posts** (last section, customer-facing only): GitAuto (product voice) + Wes (personal voice, don't emphasize "GitAuto") + - Format: `## Social Media Post (GitAuto)` and `## Social Media Post (Wes)` headers (parsed by `extract-social-posts.js`) - Guidelines: No em dashes (—). Under 280 chars. No marketing keywords. No negative framing. No internal names. No small numbers — use relative language. Honest stories. Vary openers — check recent posts first. 11. If Sentry issue: `python3 scripts/sentry/get_issue.py AGENT-XXX` then `python3 scripts/sentry/resolve_issue.py AGENT-XXX ...` 12. **Blog post** in `../website/app/blog/posts/`: @@ -160,6 +161,11 @@ assert find_test_files("foo.ts", all_files, None) == ["foo.test.ts"] - Body: `# Title`, what happened, root cause, fix, prevention. 300-600 words. - If model failure: explain WHY the model failed and what gap GitAuto fills. - Language-agnostic framing with parallel examples. + - **Blog cover image** (REQUIRED): One image at `../website/public/og/blog/{slug}.png` (1200x630) serves three purposes: OG meta tags, Dev.to `main_image`, and in-post cover (rendered by `app/blog/[slug]/layout.tsx`). Non-blog OG images are auto-generated by `generate-og-images.yml`. + - **Literal and obvious, not artsy**: Search for the post's core concept directly. E.g., "let your agent forget" → "eraser chalkboard" (literal), NOT "sand wind disappearing" (too abstract/pretentious). Keep it simple and immediately recognizable. + - Unsplash API: `source .env && curl "https://api.unsplash.com/search/photos?query=QUERY&orientation=landscape&client_id=$UNSPLASH_ACCESS_KEY"`, download with `?w=1200&h=630&fit=crop&crop=entropy` + - Convert to PNG: `sips -s format png downloaded.jpg --out ../website/public/og/blog/{slug}.png` + - Dev.to crops to 1000x420 — keep important content centered. 13. **Docs page** in `../website/app/docs/`: Create new or update existing. Browse for best-fit category. New pages: 3 files (`page.tsx`, `layout.tsx`, `jsonld.ts`). ## CRITICAL: Fixing Foxquilt PRs