Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/tikhub/tikhub-plugin/bulk-data-exportnpx skills add TikHub/tikhub-plugin --skill bulk-data-exportgit clone --depth 1 https://github.com/TikHub/tikhub-pluginWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tikhub/tikhub-plugin/bulk-data-export)<a href="https://agentmods.dev/skills/tikhub/tikhub-plugin/bulk-data-export"><img src="https://agentmods.dev/badge/skills/tikhub/tikhub-plugin/bulk-data-export.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00072 | $0.00596 |
| Opus 5 | $0.00036 | $0.00298 |
| Sonnet 5 | $0.00014 | $0.00119 |
| Haiku 4.5 | $0.00007 | $0.00060 |
Grade A, and why
bulk-data-export scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -s "https://api.tikhub.io/api/v1/tikhub/user/calculate_price?endpoint=<ENDPOINT_PATH>&request_per_day=<PAGES>" \ What it actually says
Bulk Data Export
Paginate a list endpoint at scale, dedup, and write a clean dataset — safely and with a cost estimate up front.
Setup gate
[ -z "${TIKHUB_API_KEY:-}" ] && echo "Set TIKHUB_API_KEY first (see tikhub-onboarding)."
Step 1 — Estimate cost FIRST (mandatory)
Bulk pulls are the biggest credit spender. Before fetching:
# pages = ceil(target_rows / page_size)
curl -s "https://api.tikhub.io/api/v1/tikhub/user/calculate_price?endpoint=<ENDPOINT_PATH>&request_per_day=<PAGES>" \
-H "Authorization: Bearer $TIKHUB_API_KEY"
curl -s "https://api.tikhub.io/api/v1/tikhub/user/get_user_daily_usage" -H "Authorization: Bearer $TIKHUB_API_KEY"
State the estimated calls + cost and get the user's go-ahead before running.
Step 2 — Paginate safely
- Use the platform's cursor (
max_cursor/pagination_token/continuation_token/cursor/cursor+index) — seetikhub-rest-apiand the platform skill. - Loop until
has_moreis false or the user's target row count is reached (hard cap). - Add a short delay / concurrency cap ≤4 (QPS 10/sec). Retry transient 429/5xx with backoff.
- Dedup by stable id (e.g.
aweme_id/ post id) as you go.
Step 3 — Export
- JSON: write the deduped array to
output.json. - CSV: flatten the fields the user cares about (id, author, text, likes, comments, shares,
timestamp, url) into
output.csv. - Report row count, pages fetched, duplicates removed, and the file path.
Verification gate
- Row count ≈ requested (note if the source ran out early).
- No duplicate ids in the output.
- File written and non-empty; CSV header matches columns.
Red flags
- Skipping the cost estimate — never start a bulk pull without one.
- Ignoring the user's row cap /
has_more(infinite loop, credit burn). - Silent truncation — always report how many rows were actually fetched vs. requested.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 56 lines · 72 tokens per session scan A 6bda66112298
bulk-data-export is a skill published in the GitHub repository TikHub/tikhub-plugin (6 stars, last pushed 2mo ago), licensed MIT. It adds 72 tokens to every session and 596 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
reelminner
Scrape Instagram reels + followers via a Playwright user session. MCP tools manage the full application — jobs, sessions, results, settings, proxies, and status — plus the core scraping tools scrapereels, getstatus, importcookies, stopscrape, exportresults. Use for reel metadata extraction, follower counts, music…
analyze-social
Use when the user shares a social video/post link or local video and wants it understood — an Instagram (instagram.com), TikTok (tiktok.com), YouTube or YouTube Shorts (youtube.com/youtu.be), or X/Twitter (x.com/twitter.com) URL, or a local .mp4/.mov file, OR when they say "analyze/watch/transcribe this…
ideogram-ultra
Build Ideogram 4 (Ideogram Ultra) txt2img and img2img workflows with the local open-weights model, dual conditional/unconditional models with DualModelGuider, Qwen3-VL text encoder, and structured JSON ("compositional deconstruction") prompts for strong text rendering and layout control.
model-compatibility
Model family compatibility matrix covering loaders, resolutions, samplers, CFG, VAE, ControlNet, and LoRA compatibility for SD 1.5, SDXL, Flux, SD3, and video models.
flux-txt2img
Build Flux txt2img workflows with Flux.1 Dev (SRPO), Flux 2 Klein 9B, Turbo LoRAs, FluxGuidance, and DualCLIPLoader patterns.
panel-node-pack-sync
Keep the ComfyUI sidebar panel node-pack (comfyui-agent-panel) in step with the orchestrator after comfyui-mcp updates. Use this whenever the orchestrator was just updated (installcomfyui (action:"selfupdate"), npm i -g comfyui-mcp, a new version in the ENVIRONMENT line), when a panel/bridge command fails in a way…