Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Use when the task needs supported DeepAPI scraping, research, or email endpoints.
Use when the user has provided or confirmed the required DeepAPI credentials and scope.
Use this skill when the user asks you to scrape public web data or draft/read/send email through DeepAPI.
Version Pinning
The installed copy is pinned to the version value in the frontmatter above.
If a request or API response reports a different skillVersion, report the mismatch and
stop. Do not fetch, overwrite, or otherwise self-update this SKILL.md.
Updates must arrive through the reviewed repository release process, with explicit user
approval for any package or repository update.
Required Environment
Read DEEPAPI_API_BASE_URL from the environment.
Read DEEPAPI_API_KEY from the environment.
If either value is missing, stop and ask the user for setup.
Never commit, print, log, paste, or expose DEEPAPI_API_KEY.
Request Rules
Send Authorization: Bearer $DEEPAPI_API_KEY on every request.
Send Content-Type: application/json when sending JSON.
Send a unique Idempotency-Key for every POST.
For scrape work, set explicit maxCostUsd or maxCostMicrousd.
Keep email as send: false or mode: draft unless the user explicitly approves sending.
Do not pass inbox IDs. Use emailIdentityId or omit it.
Execution Loop
Choose the narrowest endpoint that matches the task.
Build the request from the endpoint schema and examples below.
Run the request with the required headers.
If the response has status: running, wait next.afterSecs and call next.method + next.path until status is succeeded or failed.
If error.retryable is true, wait error.retryAfterSecs before retrying.
If the response is HTTP 402 with error.code: insufficient_credits, stop and ask the user to top up credits at . After top-up, retry with the same .
Report requestId, status, debitMicrousd, costFinal, and the useful part of output.
Endpoints
Method
Path
Scope
Cost
POST
/v1/scrape/website
scrape:website
Set maxCostUsd: "1.00" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin/profile
scrape:linkedin
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/github/profile
scrape:github
Set maxCostUsd: "0.03" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/twitter/search
scrape:twitter
Set maxCostUsd: "0.03" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin/jobs
scrape:linkedin
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin/company
scrape:linkedin
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin/people
scrape:linkedin
Set maxCostUsd: "0.50" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin/posts
scrape:linkedin
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/twitter/user
scrape:twitter
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/twitter/replies
scrape:twitter
Set maxCostUsd: "0.20" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/youtube/transcript
scrape:youtube
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/youtube/channel
scrape:youtube
Set maxCostUsd: "0.30" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/youtube/search
scrape:youtube
Set maxCostUsd: "0.10" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/linkedin
scrape:linkedin
Set maxCostUsd: "0.05" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/github
scrape:github
Set maxCostUsd: "0.03" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/scrape/twitter
scrape:twitter
Set maxCostUsd: "0.03" unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd.
POST
/v1/email/send
email:send
Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response.
GET
/v1/email/messages
email:read
Read route returns debitMicrousd 0.
GET
/v1/email/drafts
email:read
Read route returns debitMicrousd 0.
POST
/v1/email/drafts/{draftId}/send
email:send
Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response.
POST
/v1/research/deep
research:deep
Set maxCostUsd: "0.10" unless the user gives a different cap. Defaults to maxCostUsd 0.10. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd.
POST
/v1/generate/image
generate:image
Set maxCostUsd: "0.20" unless the user gives a different cap. Defaults to maxCostUsd 0.20. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd.
POST
/v1/search/web
search:web
Set maxCostUsd: "0.05" unless the user gives a different cap. Defaults to maxCostUsd 0.05. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd.
GET
/v1/requests/{requestId}
same key
Status polling does not create a new debit.
Endpoint Details
Scrape Website
Use POST /v1/scrape/website. Crawl website pages and return clean text and markdown per page.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin/profile. Scrape public LinkedIn profile details.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/github/profile. Scrape public GitHub profile details.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/twitter/search. Scrape X/Twitter posts from a search query or account handles.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin/jobs. Scrape public LinkedIn job listings for a search query.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin/company. Scrape public LinkedIn company pages for firmographic details.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin/people. Search public LinkedIn profiles by role, location, company, or school. Requires maxCostUsd of at least 0.50.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin/posts. Scrape recent public posts from LinkedIn profiles or company pages.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/twitter/user. Scrape public X/Twitter account profiles, with optional follower and following lists.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/twitter/replies. Scrape the public reply thread of an X/Twitter post. Requires maxCostUsd of at least 0.20.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/youtube/transcript. Scrape the transcript of a YouTube video as plain text plus timed segments. Videos without captions return an empty result.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/youtube/channel. Scrape a YouTube channel's stats and recent videos. Each video item includes subscriber and channel totals.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/youtube/search. Search YouTube videos by keyword and return video metadata.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/linkedin. Backward-compatible alias for LinkedIn profile scraping.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/github. Backward-compatible alias for GitHub profile scraping.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use POST /v1/scrape/twitter. Backward-compatible alias for X/Twitter search scraping.
Side effects: Starts a scrape run and may debit credits when the run finishes.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Send a unique Idempotency-Key for every POST.
Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape.
Start with small result caps such as maxItems or capability-specific limits.
Poll next.path while status is running and report the final debitMicrousd.
Use GET /v1/requests/{requestId}. Poll a running request by requestId.
Side effects: Reads or refreshes request status.
Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed.
Safety:
Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key.
Only poll request ids created by the same API key.
Example query: waitForFinishSecs=60
Limitations
Adapted from davidondrej/skills; verify local paths, tools, credentials, and agent features before acting.
For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first.