Install
$ agentstack add skill-latticecast-agent-skills-seo-bot ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
seo-bot — Cross-Product Article Generator
Spawns N×M×K fresh claude -p workers, one per (TA × promo × product) combo. Each worker writes one article in isolation; the orchestrator just loops + uploads via lc_api.sh.
Architecture (same shape as agentic-hive)
Project root (e.g. seo-system/)
├── .env # LC_API, LC_USER, LC_PASS, ARTICLES_TABLE_ID, …
├── .env.example # config template
├── lc_api.sh # sourced from developing/lattice-cast skill
└── seo-bot/
├── run.sh # entry point (sources .env, calls orch)
├── orchestrator.sh # pure shell — reads CSVs, loops product
├── worker.sh # bash infra + `claude -p` for ONE article
├── audiences.csv # TA personas
├── promotions.csv # promotions / campaigns
└── products.csv # featured products
Config contract
.env must define:
| Var | Purpose | |---|---| | LC_API | Base URL, e.g. http://localhost:13491/api/v1 | | LC_USER | Login user_name for /login/password | | LC_PASS | Login password for /login/password | | ARTICLES_TABLE_ID | Table ID for the articles table | | TITLE_COLUMN_ID | Column ID for the title field in articles |
How it works
bash seo-bot/run.sh→ sources.env, runs orchestrator- Orchestrator (rule-based, no LLM):
- Parse
audiences.csv,promotions.csv,products.csv(header row +title,description) - Build cross product (3 × 4 × 2 = 24 typically; generic for any size)
- Query existing rows via
lc_row_listonARTICLES_TABLE_ID - Skip combos already covered (idempotent — safe to rerun)
- For each missing combo, exec
worker.shwith the 3 (title, desc) pairs - Sleep 1s between workers (rate-limit per CLAUDE.md)
- Worker (bash + LLM):
- Compose a prompt embedding the three contexts
timeout 120 claude -p --dangerously-skip-permissions ""- Worker writes ONE markdown file to
~/.tmp/article-.md - Bash creates row via
lc_row_createthen uploads doc vialc_doc_write - No LLM in the upload path — bash handles it deterministically
- Orchestrator logs in, derives
LC_AUTH_HEADERat runtime, and emits
ALL_DONE when count reached; otherwise exits non-zero
Each worker is a fresh process — no shared context between articles.
CSV format
UTF-8, comma-delimited, first row is header. Two columns: title,description.
title,description
akai,26-year-old male office worker. WFH 3d/wk. Loves bouldering.
meiwen,22-year-old female grad student. Industrial design. Tight budget.
Title becomes the article-name component (used for the unique articles.Title like akai-spring-2026-ergopro-chair). Description is fed to the LLM as persona/context.
Article-title contract
Worker uploads with Title = "${a_title}-${b_title}-${c_title}".
This title is the dedupe key and the verifier's signal — it must be unique across all combos. Don't change the format unless you also update orchestrator's contains skip-check.
Worker rules
- One combo only. Don't mention any other persona/promo/product.
- ≥400 chars of substantive prose. The driver enforces this.
- First line is
#. - No filler / no echoing the prompt.
- Don't curl from inside the worker — bash handles upload via
lc_row_create + lc_doc_write. Same rule as agentic-hive.
Rate limit
sleep 1 between workers in the orchestrator. From seo-system/CLAUDE.md: > API rate limit: wait 1 second between each API call
Idempotency
Re-running run.sh after partial completion picks up where it left off — already-uploaded titles are skipped via lc_row_list.
Composition
Sources lc_api.sh from developing/lattice-cast skill (the thin LatticeCast HTTP wrapper). Project .env provides LC_API, LC_USER, LC_PASS, and table/column IDs. The bot logs in and derives LC_AUTH_HEADER at runtime. The bot itself contains no LatticeCast-specific code beyond the lc_* function calls.
When to use this skill
- You have 3 source dimensions and want every cross-product article
written without context leak between articles.
- You want deterministic, idempotent, rerunnable batch generation.
- You want cheap parallelism: each
claude -pis independent.
For single-article writing: just use claude directly in the seo-system project — pilot Claude reads CLAUDE.md, runs get_context.sh, and writes ad-hoc.
Reference scripts
[example-scripts/run.sh](example-scripts/run.sh) [example-scripts/orchestrator.sh](example-scripts/orchestrator.sh) [example-scripts/worker.sh](example-scripts/worker.sh) [example-scripts/audiences.csv](example-scripts/audiences.csv) [promotions.csv](example-scripts/promotions.csv) [products.csv](example-scripts/products.csv)
Copy these into /seo-bot/, replace CSVs with your real sources, ensure /.env defines LC_API, LC_USER, LC_PASS, ARTICLES_TABLE_ID, TITLE_COLUMN_ID, and that lc_api.sh is available to source. Then bash seo-bot/run.sh.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: LatticeCast
- Source: LatticeCast/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.