skill
brand-loom
Open-source marketing skills that run on any model — with a hosted brand-memory engine. No coding agent required.
Set up
Skills are installed by placing their folder where your agent loads skills.
Install instructions come from the README
README
synced Oct 17, 2026brand-loom
Open-source marketing skills that run on any model — with a hosted brand-memory engine. No coding agent required.
brand-loom is a library of commodity marketing skills — hooks, captions, hashtags, content repurposing,
SEO outlines, FAQs, schema.org markup, CTAs, bilingual translation, and LinkedIn posts — that run on any LLM
(OpenAI, Anthropic, Gemini, or a local model via Ollama). Bring your own key. No coding agent, no vendor lock-in.
Want it on-brand and multi-platform automatically — without writing prompts? That's the hosted engine at neoxra.com (auto voice extraction, multi-platform orchestration, Brand Kit).
brand-loomis the open core; Neoxra hosts the rest.
Why brand-loom
- Model-agnostic. One interface, four providers, BYOK. Swap models with one env var.
- No coding agent required. Plain Python — not coupled to Claude Code / Cursor / OpenClaw.
- Brand-aware seam. Every skill accepts an optional
brand_context. Ship a basic default here; get automatic, extracted brand voice on hosted Neoxra.
Quickstart (60 seconds, no API key)
pip install brand-loom
from brand_loom.providers import use_provider
from brand_loom.skills.hook import HookSkill
use_provider("fake") # runs with zero keys; swap for "openai"/"anthropic"/"gemini"/"ollama"
skill = HookSkill()
print(skill.run_topic("How we cut cloud costs 40%"))
Real provider (BYOK):
pip install "brand-loom[openai]"
export OPENAI_API_KEY=sk-...
export BRANDLOOM_PROVIDER=openai
Run it as an agent (no coding agent required):
brand-loom run hook --text "How we cut cloud costs 40%"
brand-loom chain hook,caption --text "How we cut cloud costs 40%" --brand brand.json
A thin, linear runner — one skill or a simple chain, on any model. Sophisticated multi-platform orchestration (voice-matched, Planner→Critic, auto fan-out) lives in hosted Neoxra.
Agent chain (Python API):
from brand_loom.agent import run_chain, run_skill
from brand_loom.providers import use_provider
use_provider("fake") # or "openai", "anthropic", "gemini", "ollama"
# Single skill
result = run_skill("hook", "How we cut cloud costs 40%")
print(result.text)
# Chain: hook → caption
result = run_chain(["hook", "caption"], "How we cut cloud costs 40%")
print(result.text)
# With brand context
result = run_skill("hook", "AI marketing", brand_context={
"tone": ["bold", "witty"],
"audience": "startup founders",
})
print(result.text)
Install in your coding agent
brand-loom also works as an agent skill in Claude Code, Cursor, OpenClaw, and any skills.sh-compatible host:
npx skills add hogan-tech/brand-loom
Each skill is available as a SKILL.md in the skills/ directory with frontmatter that agent hosts parse
automatically. No configuration needed — install and use.
brand-loom remains model-agnostic and usable without any coding agent via
pip install brand-loom+ the CLI. The agent-skill surface is additive distribution, not a requirement.
Skills (v0.2)
| Skill | What it does |
|---|---|
hook | Headline / hook options for a topic |
caption | Platform caption from a topic + brand_context |
hashtags | Relevant, deduped hashtag set |
repurpose | long→short, article→thread, article→carousel copy |
seo_outline | 4–8 section SEO article outline (locale-parametric) |
faq | 3–6 Q&A pairs from a body of text |
schema_org | FAQPage / Article / Breadcrumb JSON-LD (no LLM) |
cta | Call-to-action variants for a goal |
bilingual | EN ↔ zh-TW voice-preserving translation |
linkedin_post | LinkedIn post from milestones/topics |
Providers
| Provider | Extra | Env |
|---|---|---|
| OpenAI | brand-loom[openai] | OPENAI_API_KEY |
| Anthropic | brand-loom[anthropic] | ANTHROPIC_API_KEY |
| Gemini | brand-loom[gemini] | GEMINI_API_KEY |
| Ollama (local) | built-in (HTTP) | OLLAMA_HOST |
| Fake (tests/demo) | built-in | — |
Provider parity eval
brand-loom runs the same skill on any model — and we prove it. Run the parity eval to verify every skill produces a well-formed result across all available providers:
# Fake provider (zero keys, runs in CI):
make eval-parity
# With real providers (BYOK):
OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-... make eval-parity
| skill | fake | openai | anthropic | gemini |
|---|---|---|---|---|
| bilingual | PASS | PASS | PASS | PASS |
| hook | PASS | PASS | PASS | PASS |
| caption | PASS | PASS | PASS | PASS |
| hashtags | PASS | PASS | PASS | PASS |
| cta | PASS | PASS | PASS | PASS |
| faq | PASS | PASS | PASS | PASS |
| linkedin_post | PASS | PASS | PASS | PASS |
| repurpose | PASS | PASS | PASS | PASS |
| seo_outline | PASS | PASS | PASS | PASS |
CI runs the fake provider; real-provider columns are opt-in with your own keys.
Self-check (opt-in lint)
Run any skill with self_check=True to get a lightweight, rule-based lint on the output — anti-slop detection,
banned-phrase flagging, frontmatter-leak checks, and length validation. The lint only flags issues; it does not
score, veto, or retry.
result = run_skill("hook", "AI marketing", self_check=True)
print(result.metadata["lint"]) # [] if clean, or list of {"rule": "...", "detail": "..."}
Quality scoring + gated retry (tuned evaluators, RankMath scoring, auto-retry on low quality) is in the hosted product at neoxra.com.
The brand_context seam
Skills accept an optional brand_context dict (tone, audience, do_phrases, avoid_phrases). brand-loom
ships an empty/basic default. Automatic voice extraction from your existing content, multi-platform fan-out, and a
no-code UI live in hosted Neoxra — see HOSTED.md.
Before / after demo
See the quality gap yourself — same skill, with and without brand context:
python examples/before_after_demo.py
A sample brand_context lives in examples/sample_brand_context.json.
Use it with the CLI:
brand-loom run hook --text "How we cut cloud costs 40%" --brand examples/sample_brand_context.json
Get real brand memory + multi-platform + hosted scoring at neoxra.com.
Contributing
PRs welcome — read CONTRIBUTING.md, SCOPE.md, and sign the CLA. In scope: single-shot commodity skills. Out of scope: voice engine, orchestration, tuned scorers, analytics/publish integrations (these live in the hosted product).
License
Apache-2.0. Hosted by Neoxra · a Meridian Global product.