# Gm Publish Tags

> Account tagging rules for the events.gmcarl.xyz publish triage (Instagram + LinkedIn via API). Use whenever preparing captions for API publishing, loading calendar item bodies, or deciding whether/how to @mention an account. Holds the verified handle registry and the per-platform truth about what tags actually do through the API.

- Skill: `crafty-arl/gm-publish-tags` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add crafty-arl/gm-publish-tags`
- Raw SKILL.md: https://api.skillmd.com/api/skills/crafty-arl/gm-publish-tags/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: crafty-arl (https://skillmd.com/u/crafty-arl)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/crafty-arl/gm-publish-tags

---


# Tagging for the publish triage

The API changes what a tag IS. Get this wrong and captions carry dead decorations
or notify the wrong business. Every caption prepared for the calendar's Publish
buttons follows this file.

## Platform truths (what the API actually does)

**Instagram (Graph API captions):** `@handle` in a caption becomes a REAL tappable
mention. So IG tags are pure caption discipline — exact handle, from the registry,
nothing else. Our Reels flow has NO people-tagging or collaborator support; the
caption is the only tagging surface.

**LinkedIn (ugcPosts API):** shareCommentary is PLAIN TEXT. An `@Name` typed into
an API caption is DECORATION — no link, no notification, and it reads as a bot
tell. Real org mentions need organization-URN annotations we don't hold, and
member mentions aren't supported at all. THEREFORE:
- API captions for LinkedIn contain **no @-signs**. Name companies in plain words.
- The tag work happens in the MANUAL follow-up (30 seconds, on the phone):
  open the published post → comment or edit → type @ → pick from the dropdown.
  Every LinkedIn calendar item's notes must carry a "MANUAL TAGS:" line naming who.

## The registry (only these handles ever appear in captions)

### Instagram — VERIFIED
| Account | Handle | Verified how |
|---|---|---|
| Haven Cafe (the venue) | @havencafe.mke | instagram.com/havencafe.mke, matches havencafemke.com |
| Carl / studio | @_gm_carl | our own |

### Instagram — LOOKALIKE TRAPS (never use)
- **@havens_cafe_** — exists, is NOT Haven MKE. The Instagram Louisiana.

### Instagram — well-known brands (still pick from search-in-app before first use)
@cloudflare · @openai · @anthropic · @eventbrite

### Instagram — UNVERIFIED (plain text until Carl confirms from his own follows)
OnlyLemon · Red Foundry (may have no IG at all)

### LinkedIn (manual-comment tagging only — from gm-linkedin-post, still true)
Cloudflare `/company/cloudflare` · Supabase `/company/supabase` · Mapbox `/company/mapbox` ·
LiveKit `/company/livekitco` (NOT /livekit) · VoidZero `/company/voidzero` ·
Anthropic `/company/anthropicresearch` (NOT bare /anthropic) · Red Foundry `/company/red-foundry` ·
NEVER `/company/haven-coffee-cocktails` (Louisiana). Haven MKE + OnlyLemon: no LinkedIn — plain text.

## When to tag (restraint IS the rule)
- Tag only accounts **substantively featured** in the piece: the venue on room reels,
  @eventbrite when the Eventbrite API is the demo, @anthropic when Claude Code is on screen.
- Max 2 mentions per IG caption. Zero mentions on generic catalog posts.
- Never tag a vendor just for reach — it reads as an ad and burns the relationship.
- Unverified → plain text, always. A wrong tag is worse than no tag.

## Triage checklist (before any caption ships to the calendar)
- [ ] Every @ in an IG caption exists in the VERIFIED registry
- [ ] LinkedIn caption has zero @-signs; item notes carry "MANUAL TAGS: …"
- [ ] Featured-account rule satisfied (would the tag surprise the tagged account? drop it)

