Spaces:
Running
Running
Download market/openapi/article-extract.json from CyberMax-tools/cybermax: direct link, hf CLI and curl.
- Browser
- Download file 19.1 kB
-
https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/market/openapi/article-extract.json
- Command line
-
hf download hf://spaces/CyberMax-tools/cybermax/market/openapi/article-extract.json
-
curl -L -o article-extract.json https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/market/openapi/article-extract.json
19.1 kB
| { | |
| "openapi": "3.1.0", | |
| "info": { | |
| "title": "Inkpluck API (Article Text Extractor: URL to Markdown)", | |
| "version": "1.0.0", | |
| "summary": "💰 $1 per 1,000 articles; pages that fail, are blocked, paywalled or too thin are free.", | |
| "description": "💰 $1 per 1,000 articles; pages that fail, are blocked, paywalled or too thin are free. Article extractor for LLMs and RAG: URLs or RSS feeds in; clean text and Markdown, title, authors, publish date, language, top image and paywall flag out. Monitor mode skips URLs already extracted.\n\nRuns the Inkpluck Actor (`cybermax/article-extract`) on Apify with the caller's own Apify API token and returns its dataset. Pricing (pay per event, billed by Apify):\n- Article extracted: $0.001\n\nPublisher: CyberMax. Catalog: https://cybermax-tools-cybermax.static.hf.space/market/catalog.json", | |
| "contact": { | |
| "name": "CyberMax", | |
| "url": "https://apify.com/cybermax/article-extract" | |
| }, | |
| "x-logo": { | |
| "url": "https://cybermax-tools-cybermax.static.hf.space/favicon.ico" | |
| } | |
| }, | |
| "x-cybermax-referral": { | |
| "program": "CyberMax affiliate and referral program", | |
| "status": "open", | |
| "ratePct": 30, | |
| "appliesTo": "Digital products sold through CyberMax's own Stripe checkout (store downloads, app Pro plans, API plans, bundles, data briefs).", | |
| "basis": "net amount CyberMax receives for the order (after payment fees, refunds and chargebacks)", | |
| "recurring": "the first 12 months of a subscription; one-time orders once", | |
| "attributionWindowDays": 60, | |
| "passRef": { | |
| "queryParam": "ref", | |
| "stripeParam": "client_reference_id", | |
| "stripeValue": "aff_<your-id>", | |
| "example": "https://buy.stripe.com/<link>?client_reference_id=aff_<your-id>" | |
| }, | |
| "payouts": "Paid manually by CyberMax once a month for eligible sales whose 14-day refund window has closed (owner approval 10 Oct 2026).", | |
| "terms": "https://cybermaxtools.com/affiliates/", | |
| "details": "https://cybermaxtools.com/.well-known/referral.json", | |
| "note": "Runs of this tool are billed by Apify on Apify's checkout, so they are not covered by the CyberMax referral program; it covers CyberMax Stripe checkout sales (store, API plans, bundles)." | |
| }, | |
| "externalDocs": { | |
| "description": "Apify Store page", | |
| "url": "https://apify.com/cybermax/article-extract" | |
| }, | |
| "servers": [ | |
| { | |
| "url": "https://api.apify.com", | |
| "description": "Apify API" | |
| } | |
| ], | |
| "security": [ | |
| { | |
| "apifyToken": [] | |
| } | |
| ], | |
| "tags": [ | |
| { | |
| "name": "Inkpluck", | |
| "description": "💰 $1 per 1,000 articles; pages that fail, are blocked, paywalled or too thin are free." | |
| } | |
| ], | |
| "paths": { | |
| "/v2/acts/cybermax~article-extract/run-sync-get-dataset-items": { | |
| "post": { | |
| "operationId": "runInkpluckSync", | |
| "tags": [ | |
| "Inkpluck" | |
| ], | |
| "summary": "Inkpluck: run and return results", | |
| "description": "💰 $1 per 1,000 articles; pages that fail, are blocked, paywalled or too thin are free. Waits for the run to finish (up to 300 s) and returns the output records.", | |
| "parameters": [ | |
| { | |
| "name": "timeout", | |
| "in": "query", | |
| "required": false, | |
| "description": "Run timeout in seconds (max 300 for synchronous runs).", | |
| "schema": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 300 | |
| } | |
| }, | |
| { | |
| "name": "clean", | |
| "in": "query", | |
| "required": false, | |
| "description": "Omit empty records and hidden fields.", | |
| "schema": { | |
| "type": "boolean", | |
| "default": true | |
| } | |
| } | |
| ], | |
| "requestBody": { | |
| "required": true, | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/Input" | |
| }, | |
| "example": { | |
| "urls": [ | |
| "https://techcrunch.com/2026/09/23/meta-introduces-camera-free-ai-glasses/", | |
| "https://blog.cloudflare.com/vary-support/" | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "responses": { | |
| "201": { | |
| "description": "Run finished; body is the list of output records.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/components/schemas/OutputRecord" | |
| } | |
| }, | |
| "example": [ | |
| { | |
| "url": "https://arxiv.org/pdf/1706.03762", | |
| "finalUrl": "https://arxiv.org/pdf/1706.03762", | |
| "ok": false, | |
| "error": "not an HTML page (application/pdf)", | |
| "ms": 442, | |
| "extractedAt": "2026-09-23T23:44:36.144Z", | |
| "images": [] | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Invalid input.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { | |
| "description": "Missing or invalid Apify token.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "402": { | |
| "description": "Apify account has no credit left for this run.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "408": { | |
| "description": "The run did not finish within the synchronous timeout; start it asynchronously instead.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "429": { | |
| "description": "Rate limited by Apify.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/v2/acts/cybermax~article-extract/runs": { | |
| "post": { | |
| "operationId": "startInkpluckRun", | |
| "tags": [ | |
| "Inkpluck" | |
| ], | |
| "summary": "Inkpluck: start an asynchronous run", | |
| "description": "Starts a run and returns immediately. Poll GET https://api.apify.com/v2/actor-runs/{runId} and read items from GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items.", | |
| "requestBody": { | |
| "required": true, | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/Input" | |
| } | |
| } | |
| } | |
| }, | |
| "responses": { | |
| "201": { | |
| "description": "Run started.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/RunStarted" | |
| } | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Invalid input.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "401": { | |
| "description": "Missing or invalid Apify token.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "402": { | |
| "description": "Apify account has no credit left for this run.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| }, | |
| "429": { | |
| "description": "Rate limited by Apify.", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "$ref": "#/components/schemas/ApifyError" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "components": { | |
| "securitySchemes": { | |
| "apifyToken": { | |
| "type": "http", | |
| "scheme": "bearer", | |
| "description": "Your Apify API token (https://console.apify.com/settings/integrations). Runs are billed to your Apify account." | |
| } | |
| }, | |
| "schemas": { | |
| "Input": { | |
| "type": "object", | |
| "properties": { | |
| "urls": { | |
| "type": "array", | |
| "title": "Article URLs", | |
| "description": "News articles, blog posts or docs pages to extract. One URL per line; the scheme is optional (\"example.com/post\" works). Duplicates are skipped.", | |
| "examples": [ | |
| [ | |
| "https://techcrunch.com/2026/09/23/meta-introduces-camera-free-ai-glasses/", | |
| "https://blog.cloudflare.com/vary-support/" | |
| ] | |
| ], | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "feedUrls": { | |
| "type": "array", | |
| "title": "RSS/Atom feeds to watch", | |
| "description": "Feed URLs (e.g. https://techcrunch.com/feed/). Inkpluck reads each feed and extracts its newest articles. Combine with \"Only new articles\" and an Apify Schedule to get each new article once, as Markdown, every day.", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxArticlesPerFeed": { | |
| "type": "integer", | |
| "title": "Articles per feed", | |
| "description": "Newest items taken from each feed.", | |
| "default": 20, | |
| "minimum": 1, | |
| "maximum": 200 | |
| }, | |
| "onlyNew": { | |
| "type": "boolean", | |
| "title": "Only new articles (monitor mode)", | |
| "description": "Skip URLs this monitor already extracted in earlier runs (skips are free and produce no record). Memory is kept in a named key-value store per monitor name in your account.", | |
| "default": false | |
| }, | |
| "monitorName": { | |
| "type": "string", | |
| "title": "Monitor name", | |
| "description": "Separate memories for separate watch lists, e.g. \"ai-news\" or \"competitor-blogs\". Letters, digits and dashes.", | |
| "default": "default" | |
| }, | |
| "htmlDocuments": { | |
| "type": "array", | |
| "title": "Raw HTML documents (optional)", | |
| "description": "Already have the HTML? Pass [{\"url\": \"https://site.com/post\", \"html\": \"<html>...\"}] and Inkpluck extracts it without fetching. The URL is used to resolve relative links and dates.", | |
| "items": {} | |
| }, | |
| "onlyArticles": { | |
| "type": "boolean", | |
| "title": "Only charge for real articles", | |
| "description": "Home pages, section pages (/news, /tech) and link lists are returned as free failures instead of extracted pages. Turn on when feeding crawled link lists; leave off to extract any page's main text.", | |
| "default": false | |
| }, | |
| "outputMarkdown": { | |
| "type": "boolean", | |
| "title": "Include Markdown", | |
| "description": "Add a `markdown` field (headings, lists, links, images and tables kept) next to the plain `text`. Ideal for LLM/RAG pipelines.", | |
| "default": true | |
| }, | |
| "includeHtml": { | |
| "type": "boolean", | |
| "title": "Include cleaned article HTML", | |
| "description": "Add an `html` field with the article body only (no navigation, ads or footer).", | |
| "default": false | |
| }, | |
| "newspaper3kFields": { | |
| "type": "boolean", | |
| "title": "Add newspaper3k field names", | |
| "description": "Also output newspaper3k's attribute names (publish_date, top_image, movies, meta_lang, meta_description, meta_keywords, canonical_link, source_url) so existing newspaper3k code keeps working.", | |
| "default": false | |
| }, | |
| "minWords": { | |
| "type": "integer", | |
| "title": "Minimum words for a successful extraction", | |
| "description": "Pages with fewer words of article text are reported as failures (free).", | |
| "default": 50, | |
| "minimum": 1, | |
| "maximum": 5000 | |
| }, | |
| "maxConcurrency": { | |
| "type": "integer", | |
| "title": "Pages in parallel", | |
| "description": "How many pages are fetched and extracted at the same time.", | |
| "default": 10, | |
| "minimum": 1, | |
| "maximum": 50 | |
| }, | |
| "timeoutSecs": { | |
| "type": "integer", | |
| "title": "Timeout per page (seconds)", | |
| "description": "Give up on a page after this many seconds (one automatic retry on network errors and 5xx).", | |
| "default": 20, | |
| "minimum": 5, | |
| "maximum": 120 | |
| }, | |
| "retryBlockedWithProxy": { | |
| "type": "boolean", | |
| "title": "Retry blocked pages through Apify Proxy", | |
| "description": "When a site answers 403/429/503 to a direct request, try once more through Apify Proxy (uses your account's proxy).", | |
| "default": true | |
| }, | |
| "proxyConfiguration": { | |
| "type": "object", | |
| "title": "Proxy (optional)", | |
| "description": "Send every request through this proxy (e.g. residential for sites that block datacenters). Leave empty for direct requests with the automatic retry above.", | |
| "default": { | |
| "useApifyProxy": false | |
| } | |
| }, | |
| "startUrls": { | |
| "type": "array", | |
| "title": "Start URLs (compatibility)", | |
| "description": "Same as Article URLs, in the [{\"url\": ...}] format other Actors use.", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "url": { | |
| "type": "string", | |
| "format": "uri" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "title": "Inkpluck article extractor", | |
| "additionalProperties": false | |
| }, | |
| "OutputRecord": { | |
| "type": "object", | |
| "properties": { | |
| "url": { | |
| "type": "string", | |
| "description": "The URL as given in the input" | |
| }, | |
| "finalUrl": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ], | |
| "description": "URL after redirects" | |
| }, | |
| "ok": { | |
| "type": "boolean", | |
| "description": "true when article text was extracted (charged); false = free failure, see error" | |
| }, | |
| "title": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "authors": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "publishDate": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ], | |
| "description": "ISO 8601" | |
| }, | |
| "modifiedDate": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ], | |
| "description": "ISO 8601" | |
| }, | |
| "siteName": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "language": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ], | |
| "description": "ISO 639-1 code, e.g. en" | |
| }, | |
| "description": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "section": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "tags": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "topImage": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ], | |
| "description": "Image" | |
| }, | |
| "images": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "videos": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "text": { | |
| "type": "string", | |
| "description": "Clean article text, paragraphs separated by blank lines" | |
| }, | |
| "markdown": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "html": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "wordCount": { | |
| "type": "integer" | |
| }, | |
| "readingTimeMinutes": { | |
| "type": "integer" | |
| }, | |
| "looksLikeArticle": { | |
| "type": "boolean" | |
| }, | |
| "paywalled": { | |
| "type": "boolean" | |
| }, | |
| "canonicalUrl": { | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "httpStatus": { | |
| "type": [ | |
| "integer", | |
| "null" | |
| ] | |
| }, | |
| "fetchedVia": { | |
| "type": "string", | |
| "description": "direct, proxy, proxy-retry or html-input" | |
| }, | |
| "ms": { | |
| "type": "integer" | |
| }, | |
| "error": { | |
| "type": "string" | |
| }, | |
| "extractedAt": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "RunStarted": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "defaultDatasetId": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "ApifyError": { | |
| "type": "object", | |
| "properties": { | |
| "error": { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "type": "string" | |
| }, | |
| "message": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |