{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/hashtag-strategist",
  "slug": "adapters/domain/hashtag-strategist",
  "kind": "capabilities",
  "bucket": "package",
  "title": "hashtag-strategist",
  "name": "Hashtag Strategist",
  "eyebrow": null,
  "chip": null,
  "summary": "Intelligent social-media hashtag strategy microservice: suggest a platform-tuned mix of reach/niche/branded hashtags for a topic (Instagram, TikTok, X/Twitter, LinkedIn, YouTube, Pinterest, Threads...",
  "keywords": [
    "hashtag-strategist",
    "platform-tuned",
    "niche",
    "competitiveness",
    "discoverability",
    "bannedcheck",
    "shadowban-risk",
    "community-flagged"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# hashtag-strategist\n\nIntelligent social-media hashtag strategy microservice. Turns a topic into a platform-tuned mix of\nreach / niche / branded hashtags, scores individual tags for competitiveness vs discoverability,\nscreens for banned/shadowban-risk tags, and enforces per-platform count limits.\n\nEvery tool has a **deterministic heuristic core that runs fully offline** (word-shape scoring, reach\ntiers, curated banned list, platform tables). `suggest` additionally has an **optional LLM path** that\nenriches topic→tag ideation and silently falls back to the heuristic when no model is reachable —\nresults are tagged `{ mode: 'heuristic' | 'llm' }`.\n\n## Tools\n\n| Tool | Args | Returns |\n|---|---|---|\n| `suggest` | `{ topic, platform?, count?, options?:{ seed, brand, mix, allowLLM } }` | hashtag set split into reach/niche/branded tiers |\n| `score` | `{ hashtag }` | `{ competitiveness, reach, discoverability, tier, sizeBand, banned, advice }` |\n| `bannedCheck` | `{ hashtag }` or `{ hashtags:[...] }` | per-tag safe/banned/broken/caution flags |\n| `mixStrategy` | `{ topic? , hashtags?, platform?, count?, options?:{ mix, brand } }` | balanced reach/mid/niche plan + breakdown |\n| `byPlatform` | `{ platform? }` | count limits, sweet-spot, default mix, formatting notes (one or all) |\n\nPlatforms: `instagram, tiktok, twitter/x, linkedin, youtube, pinterest, threads, facebook`.\n\n## Example\n\n```js\nimport pack from './index.js';\nawait pack.adapters.suggest({ topic: 'vegan meal prep', platform: 'instagram', count: 11 });\n// → { mode, platform:'instagram', hashtags:[...], tiers:{ reach, niche, branded }, detail:[...] }\n\npack.adapters.score({ hashtag: '#love' });\n// → { competitiveness: 96, tier:'reach', sizeBand:'mega (>5M posts…)', advice:'…' }\n\npack.adapters.bannedCheck({ hashtags: ['#follow4follow', '#veganmealprep', '#123'] });\n// → flags follow4follow (banned) and 123 (all-numeric/broken)\n```\n\n## Heuristic model\n\nOffline we cannot query a live post count, so competitiveness/reach is **estimated from tag shape** —\nthe same signals a growth marketer eyeballs: short generic single words ⇒ mega/saturated (`reach`\ntier), longer multi-word/specific tags ⇒ small/`niche` tier with high discoverability. The banned list\nis a curated snapshot of community-flagged / permanently-broken tags plus structural rules\n(all-numeric, over-long, double underscores).\n\n## DRY boundaries\n\n- **Not `seo`** (keyword density, meta tags, SERP snippets) — this is social hashtag strategy.\n- **Not `nlp`** (tokenization/sentiment) — reused conceptually only.\n- Self-contained: the only cross-file import is `../_shared/llm.js` for the optional AI path.\n",
  "source": {
    "path": "shared/engines/adapters/domain/hashtag-strategist/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 2908,
    "hash": "74e4110bdf23c7f386ff09034ceefcb57d977f0b"
  },
  "urls": {
    "html": "/p/adapters/domain/hashtag-strategist",
    "json": "/docs/adapters/domain/hashtag-strategist.json",
    "md": "/docs/adapters/domain/hashtag-strategist.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
