Loading...
Loading...
REQUIRED when the user wants to add a website to the Hermai registry, contribute a schema, reverse-engineer a site's API, or push a new endpoint set. Also REQUIRED when the user asks about Hermai schema format, intent categories, session blocks for anti-bot sites, or why a push was rejected. For calling already-registered sites, use the hermai skill instead.
npx skill4agent add hermai-ai/hermai-skills hermai-contributeFor calling already-registered sites, use the hermai skill.
product_detail# 1. Probe the site to see what platform it uses
hermai probe --stealth https://example.com
# 2. Extract data from each interaction URL (product, category, search, etc.)
hermai probe --body --stealth https://example.com/path | hermai extract
# 3. Use intercept to capture XHR calls for dynamic pages (search, cart, filters)
hermai intercept https://example.com/search?q=test
# 4. Build a schema JSON with ALL interactions covered, then push
hermai registry push schema.json| Command | Purpose |
|---|---|
| TLS-fingerprinted fetch, anti-bot detection, strategy discovery |
| Raw HTML to stdout (pipe to extract) |
| Extract all embedded data patterns from HTML |
| Extract one specific pattern |
| Probe 15 standard paths (robots, sitemap, RSS, GraphQL, oEmbed, WP API) |
| GraphQL schema discovery via introspection query |
| Identify anti-bot systems + platform/CMS |
| Launch browser, capture XHR/API calls, output replay specs |
| Replay a captured request with TLS fingerprinting |
| Full engine discovery (needs LLM key) |
# What platform is it? (WordPress? Shopline? custom?)
hermai detect --stealth https://example.com
# What standard paths exist?
hermai wellknown example.com
# If GraphQL found — introspect it (gets reads AND writes)
hermai introspect https://example.com/graphqlscript_hostspreconnect_hosts# Static listing pages (category, article index)
hermai probe --body --stealth https://example.com/categories/toys \
| hermai extract
# Detail pages (product, article, profile)
hermai probe --body --stealth https://example.com/products/item-123 \
| hermai extract
# Dynamic pages (search, filters, cart) — intercept the real XHR
hermai intercept https://example.com/search?q=gundam
# Verify a captured XHR works standalone
hermai replay request.json --stealthinterceptextractytInitialDataytInitialPlayerResponse__NEXT_DATA____UNIVERSAL_DATA_FOR_REHYDRATION__SIGI_STATE__APOLLO_STATE____PRELOADED_STATE____remixContext__NUXT____NUXT_DATA____FRONTITY_CONNECT_STATE____MODERN_ROUTER_DATA____INITIAL_STATE__description"Search public repositories, get repository details, and list of users' public repos, etc." — github.com
"Read public Threads profiles and posts. Pulls a profile's display name, bio, follower and thread counts, plus every post in a thread with their text, images, timestamps, and like counts." — threads.com
"A single GET to /@{user}/post/{id} returns the full thread chain inside <script type="application/json" data-sjs> blocks..."
"Usethen pipe tohermai probe --stealthto get the embedded NEXT_DATA payload..."hermai extract
purposedescriptionpurposedescription{
"name": "post_detail",
"method": "GET",
"url_template": "https://www.threads.com/@{username}/post/{post_id}",
"purpose": "Get a post's full thread chain and every user reply, with text, images, timestamps, and like counts.",
"description": "Select every <script type=\"application/json\" data-sjs>…</script> in the HTML, JSON.parse each body, and recursively walk every object looking for the key `thread_items`. Each `thread_items[n].post` is a full post object with: `code` (shortcode = URL slug), `caption.text` (body markdown), `user.username`, `user.pk`, `like_count`, `taken_at`, `carousel_media[]`, `canonical_url`, `reply_facepile_users`. Filter by `user.username == {username}` to drop the 3–5 unrelated 'also on Threads' rail posts."
}descriptionpurposehermai registry login# CLI
hermai registry push schema.json
# API
curl -X POST https://api.hermai.ai/v1/schemas \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d @schema.jsonapi.hermai.aihermai registry pushpullX-Hermai-Skill-Name: hermai-contribute
X-Hermai-Skill-Version: 1.0.0namehermai-contributemeta.skill_update{
"meta": {
"skill_update": {
"current": "1.0.0",
"latest": "1.2.0",
"update_cmd": "npx skills update hermai-contribute",
"changelog_url": "https://github.com/hermai-ai/hermai-skills/releases"
}
}
}npx skills update hermai-contributemeta.skill_update