Atomizekit
Skill Karanjot786/atomizekit
Use when the user wants to create and distribute brand content — a blog post plus native posts for X, LinkedIn, Reddit, Instagram, YouTube, Medium, and Substack, with on-brand image cards and voiced short-form video — or wants to set up a keyless content engine for their brand or codebase, or get their content cited by AI answer engines (ChatGPT, Perplexity, Google AI). Triggers include "set up atomizekit", "make content about X", "turn this blog into posts", "atomize this article", "content for my brand", "AI SEO / GEO / get cited by AI".From its SKILL.md
npx -y skills add Karanjot786/atomizekitAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 1 credential source: `PEXELS_API_KEY`.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `python3 <skill>/scripts/atomize.py --slug <slug>` and 7 more.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.9 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
atomizekit — keyless brand content engine
One topic → one canonical blog post → native drafts for every platform + on-brand image cards + a voiced short + a data reel → AI-citation tracking that tells you what to write next. Keyless (no AI/platform API keys — you are the engine via Claude Code). Draft-only: nothing publishes or posts; a human posts each piece.
FIRST-RUN RULE (do this before anything else)
Resolve config in this order: <cwd>/.claude/atomizekit.config.json (host project),
then the skill's brand/brand.json (standalone fallback). If neither exists, or if
cwd is a project (has package.json/.git) and it has no host config of its own,
run commands/setup.md first — do not silently reuse a brand/brand.json left by
a different project. Setup analyzes the host codebase, interviews the user, and writes
<cwd>/.claude/atomizekit.config.json. Never guess brand facts. Scripts fail loud
with this same instruction when config is missing.
Throughout, <skill> = this skill's directory; run scripts from the user's project
root (cwd) so blog/distribution/data land in their repo.
The pipeline (in order)
- Topic. If the user gave one, use it. If not: pull the measured gap queue from
<cwd>/data/geo/next-topics.jsonif it exists (what you're NOT cited for yet), and/or research trends (thelast30daysskill if installed, elseWebSearch); cluster into 4–6 candidates and let the user pick (AskUserQuestion). - Write the blog —
commands/write.md→ a GEO-structured draft at<blogDir>/<slug>.mdx. Draft only; never setstatus: published. - Atomize —
python3 <skill>/scripts/atomize.py --slug <slug>scaffolds the configured platforms under<distributionDir>/<slug>/+ apost.json. Then write each variant natively perreferences/playbook.md(one insight per platform, canonical link in each, one woven feature except Reddit). Fillpost.jsonstat/statLabel(one REAL number from the blog) andscenes[](from the YouTube variant) for the video. - Visuals —
commands/visuals.md. All output lands in<distributionDir>/<slug>/media/in the user's project.node <skill>/scripts/render_cards.mjs <slug>→ 4 PNGs. Keyless, Node-only — always available.- Video needs the hyperframes toolchain: gate on
npx hyperframes doctor --json(FFmpeg 7+, Chrome green) first, and the voiced renders below needpip install kokoro-onnx soundfile(local TTS). If those aren't present, ship the cards + text drafts and tell the user what to install for video — don't fake a render. node <skill>/scripts/render_reel.mjs <slug>→ voiced stat reel.node <skill>/scripts/render_short.mjs <slug>→ voiced kinetic-text short.
- Report every draft + media path. Remind: draft-only, the user posts each by hand. Do NOT commit/publish unless asked.
Separate cadence — Measure (not part of each content job): on a schedule you
choose, node <skill>/scripts/geo/measure.ts runs prompts × N through the (stubbed,
keyless) citation providers and writes data/geo/next-topics.json, which step 1 of
the NEXT job reads. Run it periodically, not at the end of every piece.
Commands & references
| File | What |
|---|---|
commands/setup.md | First-run: codebase analysis + brand interview → config |
commands/write.md | GEO-structured blog draft |
commands/atomize.md | Scaffold platform variants from the blog |
commands/visuals.md | Render image cards + reel + voiced short |
commands/dashboard.md | Local review dashboard: node scripts/dashboard.mjs — see all drafts + media, mark posted |
references/playbook.md | Per-platform voice rules (2026-researched) + brand weave + AI-tell avoidance |
references/geo-writing.md | How content earns AI-answer citations (structure, schema, data) |
Brand config
All brand specifics live in ONE file (.claude/atomizekit.config.json in the host
project, or brand/brand.json in the skill): name, domain, canonicalPattern,
blogDir, distributionDir, audience, voice, author, colors, fonts, logo,
eyebrow, platforms, and features (the advice→product map for the brand weave).
brand/brand.template.json is the annotated contract. /setup writes it; every
script reads it via scripts/lib_brand.mjs (host config wins, so one install serves
many projects).
Prerequisites
- Node ≥ 22.15, Python 3 (always).
- FFmpeg 7+, Chrome (for any video render). Gate on
npx hyperframes doctor --json. - Optional:
pip install kokoro-onnx soundfilefor voiced renders (local Kokoro TTS — still no key).PEXELS_API_KEY(free) for stock VIDEO beds; without it, keyless Openverse CC0 images are the fallback.
Honest limits
- Video needs a doctor-green hyperframes toolchain; images (takumi) need only Node.
- Posting is manual by design — no platform credentials here, ever. This keeps the system inside every platform's 2026 ToS (penalties attach to mass/undisclosed automation, not to human-reviewed native content).
- GEO citation providers are stubbed keyless; wiring real Perplexity/Gemini/GSC keys is optional and left to the user (the stubs are deterministic for testing).
- Test the skill after install:
npm install && npm test(from<skill>) should be green and render 4 demo cards.
What ships with it: 47 files
1217.3 KB alongside SKILL.md, 23 of them executable
assets/
- banner.png23.2 KB
brand/
- brand.template.json829 B
- demo-post.json245 B
- fonts/Geist-Bold.otf162.5 KB
- fonts/InterVariable.ttf859.1 KB
- fonts/LICENSES.txt200 B
- logo.svg197 B
commands/
- atomize.md1.4 KB
- dashboard.md1.3 KB
- setup.md12.8 KB
- visuals.md4.7 KB
- write.md3.5 KB
docs/
references/
- geo-writing.md3.1 KB
- playbook.md9.1 KB
scripts/
- atomize.pyruns7.2 KB
- check_render.mjsruns3.8 KB
- dashboard.mjsruns12.4 KB
- geo/gap.tsruns1.4 KB
- geo/measure.tsruns6.1 KB
- geo/providers/gemini.tsruns924 B
- geo/providers/gsc.tsruns1022 B
- geo/providers/perplexity.tsruns901 B
- geo/providers/_stub.tsruns1.1 KB
- geo/score.tsruns1.7 KB
- geo/store.tsruns1.3 KB
- geo/tests/gap.test.tsruns3.4 KB
- geo/tests/measure.test.tsruns3.0 KB
- geo/tests/score.test.tsruns2.8 KB
- geo/types.tsruns1.3 KB
- lib_brand.mjsruns1.2 KB
- make_banner.mjsruns2.7 KB
- media_helpers.mjsruns5.5 KB
- render_cards.mjsruns5.9 KB
- CONTRIBUTING.md1003 B
- .gitattributes288 B
- .gitignore131 B
- LICENSE1.0 KB
- package.json560 B
- README.md6.0 KB
7 more files not listed here. See all 47 in the repository.
Gives 0 of the 12 instructions most marketing audience skills give in ~1.4k tokens
Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07
- Apply Poppins font to headingsin 41 of 690, across 6 files
- Apply Lora font to body textin 41 of 690, across 6 files
- Use Arial fallback for headingsin 39 of 690, across 4 files
- Use Georgia fallback for body textin 39 of 690, across 4 files
- Maintain text hierarchy and formattingin 39 of 690, across 4 files
- Use accent colors for non-text shapesin 38 of 690, across 3 files
- Use RGB values for precise color matchingin 38 of 690, across 3 files
- Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
- Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
- Use active voice instead of passive voicein 26 of 690, across 10 files
- Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
- Prioritize clarity over clevernessin 22 of 690, across 8 files
Said here and by no other author read
- resolve brand config before anything else
- never guess brand facts
- write one canonical blog draft per topic
- scaffold platform variants from the blog
- write one native variant per platform
- use one real statistic in each post
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.