Payload limit: 100kb • Generation rate limit: 5 req / 60s
This service queues article generation jobs and processes them using a ChatGPT-based scraper.
Responses are JSON and incoming payloads are sanitized to remove scripts and dangerous HTML fragments.
Public endpoint that queues generation and optionally notifies your webhook when done.
curl -X POST http://localhost:3000/api/articles/generate \
-H "Content-Type: application/json" \
-d '{"topic":"My topic","webhookUrl":"https://example.com/webhook","webhookSecret":"s3cr3t"}'
Webhook receives a JSON POST: { success: true, jobId, data } and a header X-Webhook-Signature when a secret is provided.
Test endpoint that accepts webhook POSTs and stores them to /logs/webhooks/*.json. If you provide a secret (either as query ?secret=... or header X-Webhook-Secret), include header X-Webhook-Signature with HMAC-SHA256 hex of the JSON body to verify signature.
curl -X POST http://localhost:3000/api/webhook/test \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: s3cr3t" \
-H "X-Webhook-Signature: $(echo -n '{"jobId":"1"}' | openssl dgst -sha256 -hmac "s3cr3t" | sed 's/^.*= //')" \
-d '{"jobId":"1","result":"ok"}'
Queue status (messageCount, consumerCount).
The public generation endpoint /api/articles/generate-public is protected by an IP access control list.
{ ip?: string, note?: string }. If ip is omitted, your request IP will be used. New requests are created with status PENDING (waiting approval).X-Admin-Key header set to ADMIN_API_KEY).PENDING/WHITELIST/BLACKLIST (requires X-Admin-Key).Behavior when hitting protected routes:
403 with message Your IP is waiting approval (or asks to POST /api/ip/request if no record exists).403 with a friendly quote ("kata-kata mutiara").Postman collection for testing: Download collection JSON and import into Postman. Use the included environment Scraper Local (file: Scraper.environment.json).
Jika ada pertanyaan mengenai scraper, silakan kirim email ke: misbakhul2904@gmail.com atau lewat Facebook: facebook.com/Misbakhul29