# Commenting

> Strategy for engaging with others' posts across platforms (X, LinkedIn, etc.). Finding targets, writing valuable replies, building connections.

- Skill: `aicmo/commenting` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aicmo/commenting`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aicmo/commenting/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: AICMO (https://skillmd.com/u/aicmo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/aicmo/commenting

---


# Commenting / Engagement Skill

> Write valuable replies that build relationships and visibility

## Why Commenting Matters

For accounts under 100 followers, commenting > original posts for growth. One viral reply = 12K impressions vs 400 from original post (30x). Reply-to-reply = 75x algorithm multiplier.

---

## Queue-Delayed Replies (Critical Constraint)

Agent-created replies post hours to days late, killing algorithmic value.

**Time decay:** Replies lose 50% visibility every 6 hours. At 24h = ~6% visibility.

**What works via queue:** Reply-to-own only. Evergreen topics, no timing pressure.

**What doesn't work:** ALL outbound replies (brand accounts AND individuals). 62/62 outbound reply files failed at X API (403) in Week 9 audit — "not mentioned or engaged by the author." Brand accounts are NOT exempt. Zero confirmed working outbound reply targets.

**Two types of replies — very different success rates:**

**Reply-to-own (your own tweet IDs): 100% SUCCESS RATE.** Confirmed 2026-03-17: reply-20260317-003 and reply-20260317-004 both posted with HTTP 201. Replying to your own tweets works reliably. This is the primary engagement tactic.

**Outbound replies to others: ~0% SUCCESS RATE.** 62 reply files with valid numeric IDs failed at X API (403): "Reply to this conversation is not allowed because you have not been mentioned or otherwise engaged by the author." This is an X API permission restriction — you cannot reply to strangers' tweets via API until they have engaged with @tau_rho_ai first.

**Breakdown of historical skipped files (2026-03-16 audit):**
- 62 reply files (reply-*.txt) — valid numeric tweet IDs — failed at X API (403) — outbound to non-followers
- 9 reply files — invalid format (URL or @handle in REPLY_TO field) — failed at validation
- 19 tweet files (tweet-*.txt) — regular posts from early Feb 2026, likely duplicates

**What works via API:**
1. **Reply to your own tweets** (100% success) — always use numeric tweet ID from workflow logs
2. **Reply to accounts that have previously @-mentioned or engaged with @tau_rho_ai** (likely works, unconfirmed)
3. **Outbound to non-followers:** Skip. Will always fail at API level.

**Hard rules:**
- Never create replies when pending reply count >= 5
- Only reply to posts < 24h old (ideally 2-6h)
- If any platform queue >= 15: create zero content including replies

**Premium active:** Manual engagement is viable. Reply-to-own-comments within 30 min = 150x multiplier. Communities replies within 2-6h = still valuable.

---

## Finding Reply Targets

**DO reply to:** Mid-tier accounts (10K-100K), posts 2-6h old, topics with real expertise, conversation-starters, accounts that engage back.

**DON'T reply to:** Mega-accounts (>500K, buried), stale posts (>24h), generic hot takes, accounts that never engage.

**How to find (X API is write-only, use web search):**
```
WebSearch: "site:x.com @username {topic}"
WebSearch: "site:x.com {topic} {current_year}"
```
Extract tweet ID from URL: `x.com/user/status/**1234567890**`

**X Communities (Premium):** Browse community feeds for fresh posts. Community replies get amplified in For You feed. Best leverage for small accounts.

**Reply-to-own targets:** Get tweet IDs from workflow logs — no state file section tracks these. Run:
```bash
gh run list --workflow=process-outputs.yml --limit 1 --json databaseId,createdAt
gh run view <run_id> --log 2>/dev/null | grep 'INFO Response:' | head -5
```
Extract numeric ID from: `INFO Response: {"data": {"id": "2033632169034125426", ...}}`
Only create reply file if the run completed <25 minutes ago (150x multiplier window).

---

## Writing Good Replies

### Anti-AI Reply Rules (MANDATORY)

**Never use:** Em dashes joining clauses, "Not just X, it's Y", "Delve/elevate/innovative/landscape/leverage/robust", "To clarify/In other words", "Great point! Furthermore...", summarizing their post back.

**Do use:** Contractions, sentence fragments ("Wild." "Zero chance."), start with "And"/"But", reference something SPECIFIC they said, have an opinion, keep it casual.

### Reply Patterns

| Pattern | When to use |
|---------|-------------|
| **Respectful disagreement** | Sparks reply-to-reply (75x) |
| **Add specific insight** | Shows expertise without self-promo |
| **Ask sharp questions** | Pushes conversation forward |
| **Share contrarian data** | Adds new info |
| **"This means..." prediction** | Connect their news to a consequence |
| **"What nobody's saying..."** | Add the angle everyone missed |

### Likability Rules
- "I" statements > "You" statements (less preachy)
- "And" > "But" (additive vs combative)
- "Here's what I found..." > "You should..."
- Questions > declarations (invites dialogue)
- Specific examples > abstract advice

### What NEVER Works
Empty agreement ("Great post!"), self-promotion ("Check out my thread"), obvious observations, links in replies (reduces reach), stale replies (>24h).

### Diversify Reply Angles
**Max 50% about agent.** Also use: call center AI (7 years), startups (15+ years), infra→AI journey. Most replies = NO link. Some ask questions. Some disagree respectfully.

### Natural OS Mentions in Replies
When someone posts about a topic that overlaps with an owner repo, mention it naturally in a reply. This is the highest-value form of promotion: relevant, in-context, and helpful.

**When to mention:** Only when the repo genuinely solves the problem being discussed. If you have to stretch the connection, skip it.

**How:** Lead with insight or opinion first. Repo link goes at the end, casually. "We open sourced something similar" > "Check out my repo."

**Frequency:** Max 1 in 10 replies includes an OS link. Most replies should have zero self-promotion. Use the discovery skill's OS scan to know which repos are relevant to current conversations.

---

## Reply-to-Own-Comments Protocol (Premium)

**150x algorithmic multiplier — highest-leverage engagement tactic.**

Post original content → reply to your own tweet within 30 min with expansion/detail.

**CRITICAL: You need the numeric tweet ID of your own tweet.** `REPLY_TO: SELF` is invalid and will be skipped. To get the real ID:

```bash
# Get the most recent process-outputs run ID
gh run list --workflow=process-outputs.yml --limit 1 --json databaseId

# Extract tweet IDs from that run's logs
gh run view <run_id> --log 2>/dev/null | grep '"id"' | grep -v "edit_history" | head -5
```

Or search more precisely:
```bash
gh run view <run_id> --log 2>/dev/null | grep 'INFO Response:' | head -5
```

The log line looks like: `INFO Response: {"data": {"id": "2033632169034125426", "text": "Your tweet..."}}`

**Timing constraint:** The 150x multiplier requires the reply within 30 minutes of the original post. Since the workflow posts async (every 2 hours), you cannot reliably get the <30min window unless you check logs immediately after a run completes.

**Practical approach:** Check `gh run list --workflow=process-outputs.yml --limit 1` → if a run completed <25 minutes ago, immediately get the tweet ID and create a reply file. This is the only window where reply-to-own at 150x is achievable.

**Rules:**
1. Timing: <30 minutes (after 30 min, multiplier drops)
2. Add value, don't repeat — expansion, data, follow-up question
3. Short hook + detailed reply
4. Max 1 reply per original post
5. Not every post needs it — use when there's genuine depth
6. Only create reply file when queue < 15 (hard rule still applies)

**Reply patterns:** Expansion ("To expand: our 500K dataset shows..."), data points, tactical detail, question for audience, vulnerability.

**Priority #1 when Premium active:** Every Communities post → reply to self within 30 min.

---

## Communities Engagement (Premium)

**30,000x reach multiplier — post to Communities, not just timeline.**

**Feb 2026 update:** Community posts now visible to EVERYONE (not just members) — surface in For You feed based on topic interest signals. Reach extends beyond community membership.

**Target communities** are listed in `agent/memory/pillars.md`. Pick communities that align with active pillars.

**Rules:**
- 100% of content to Communities first (timeline = secondary)
- Each post to 1-2 most relevant Communities (no spam)
- Reply to 3-5 Community posts per session (reply to community posts = amplified in For You)
- Reply to own posts within 30 min

**Anti-patterns:** Same content to all Communities, self-promo without value, off-topic posts, reply spam.

---

## Session Allocation

**If any queue >= 15:** Zero content including replies. No exceptions.

**If both queues < 15:** Max 2 content pieces per session. Max 5 pending replies per platform.

**Time allocation (<100 followers):** 70% engaging (replies, comments), 30% original posts.

**Time allocation (100-1000 followers):** 50% engaging (reply-to-own, Communities), 50% original posts. Crossed 100 followers on 2026-05-30. Content volume is now the primary driver (Week 24: +27 from 12 bursts). Outbound replies remain blocked (0% API success).

---

## Reply Quality Checklist

**Must have:** Adds insight OP missed, shows expertise, 2-4 sentences, would make someone click profile, post < 24h old, target is mid-tier or community post.

**Never:** Generic praise, self-promotion, obvious observations, links, posts >24h old, mega-accounts.

---

## Algorithm Context

| Action | Weight vs Like |
|--------|---------------|
| Reply-to-own <30min (Premium) | 150x |
| Reply-to-reply | 75x |
| Repost | 20x |
| Reply | 13.5x |
| Bookmark | 10x |
| Like | 1x |

Replies that get replies = 75x more valuable. Ask questions, spark debate. First 30 minutes = critical.

**Post format weights (2026):**
- Text-only posts outperform video by 30% on X
- External links reduce reach 30–50% (Grok ranking penalty)
- Conversation depth is key: reply that gets a reply from OP = +75 weight (vs +0.5 for a like)
- Algorithm now Grok-powered — evaluates quality/relevance, not just engagement count

---

## Reply File Format

File: `agent/outputs/x/reply-YYYYMMDD-NNN.txt`
```
REPLY_TO: 2019637612076494985
---
Your reply text here.
```

**CRITICAL: REPLY_TO must be the numeric tweet ID ONLY.**
- CORRECT: `REPLY_TO: 2019637612076494985`
- WRONG: `REPLY_TO: https://x.com/user/status/2019637612076494985` ← WILL BE SKIPPED
- WRONG: `REPLY_TO: @username` ← WILL BE SKIPPED
- The workflow silently skips files with URL format — replies will never post.
- Extract the ID from the URL: `x.com/user/status/**THIS_IS_THE_ID**`

---

## Bluesky Engagement (During X Outages)

**When X is blocked for 5+ days, apply engagement tactics to Bluesky.** The same growth principle applies: replies build reach faster than original posts alone. Bluesky supports outbound replies via AT Protocol — different from X's API restrictions.

**Bluesky reply mechanics:**
- Bluesky DOES allow outbound replies to any post (no X-style permission restriction)
- Reply file format: `agent/outputs/bluesky/reply-YYYYMMDD-NNN.txt` (same structure as X)
- REPLY_TO format for Bluesky: **AT URI only** (e.g., `at://did:plc:xxx/app.bsky.feed.post/yyy`)
- **WARNING:** URL format (e.g., `https://bsky.app/profile/...`) is NOT accepted — pipeline prints "⚠ Invalid reply target" and skips the file silently. Always use AT URI.

**Getting AT URI for reply-to-own (Bluesky):**
```bash
# Get the most recent process-outputs run ID
gh run list --workflow=process-outputs.yml --limit 1 --json databaseId

# Extract AT URI from that run's logs
gh run view <run_id> --log 2>/dev/null | grep '"uri"' | grep "at://" | head -5
```
The log line looks like: `{"uri": "at://did:plc:xxx/app.bsky.feed.post/yyy", "cid": "bafyrei..."}`
Use the `uri` value as `REPLY_TO:` in your reply file.
Same timing constraint as X: reply-to-own within 30 min for maximum algorithmic boost.

**Bluesky engagement targets:**
- Search for posts on pillar topics (Autonomous Agents, Call Center AI, Marketing Automation)
- Target accounts with 500-10K followers (mid-tier, same logic as X)
- Reply to posts < 6h old (Bluesky's feed is chronological — freshness matters more than X)
- Prioritize posts with 2-10 replies already (active conversations)

**Bluesky reply rules:**
- Max 3-5 replies per session (don't spam)
- Apply same anti-AI rules as X (no em dashes, no "Not just X, it's Y", etc.)
- Outbound replies ARE allowed — use pillar expertise to add value
- No self-promotion links in replies (same rule as X)
- Same queue constraint: zero replies if BS queue >= 10

**During X outage, prioritize:**
1. Reply-to-own BS posts (get your own post CID/URI from workflow logs)
2. Outbound replies to mid-tier accounts on pillar topics
3. Use same quality checklist as X replies

**Evidence for adding this section:** Week 21 retro (2026-05-11) identified zero BS replies were attempted during 10-day X outage. 48 standalone BS posts created with no engagement amplification. This is a missed opportunity — BS allows outbound replies unlike X API.
