Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Research any person using the Nyne Deep Research API. Submit an email, phone, social URL, or name and receive a comprehensive intelligence dossier with psych...
Research any person using the Nyne Deep Research API. Submit an email, phone, social URL, or name and receive a comprehensive intelligence dossier with psych...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Research any person by email, phone, social URL, or name. Returns a comprehensive intelligence dossier with psychographic profile, social graph, career analysis, conversation starters, and approach strategy. Important: This API is async with high latency (2-5 min processing). You submit a request, get a request_id, then poll until complete.
When presenting results to the user, show maximum depth โ display every section of the dossier in full. Do not summarize or truncate. Walk through each section sequentially: Identity Snapshot โ who they are Career DNA โ trajectory and superpower Psychographic Profile โ values, motivations, archetypes Personal Life & Hobbies โ interests outside work Social Graph Analysis โ inner circle, professional network, interest graph Interest Cluster Deep Dive โ all 9 clusters with detail Content & Voice Analysis โ topics, tone, opinions, quotes Key Relationships โ full list with relationship nature and importance Conversation Starters โ all 4 hook categories Recommendations / How Others See Them โ reputation signals Warnings & Landmines โ topics to avoid, sensitivities Creepy-Good Insights โ non-obvious findings with evidence Approach Strategy โ best angle, topics, what not to do Also include enrichment data (contact info, work history, education) and note whether following and articles sections have data. If dossier is null, present the enrichment data and let the user know the full dossier was not generated (this can happen with duplicate or cached requests โ resubmit with a different identifier). If following or articles are null, simply note they were not available for this person.
Required environment variables: NYNE_API_KEY โ your Nyne API key NYNE_API_SECRET โ your Nyne API secret Get credentials at https://api.nyne.ai. Set these in your shell before running any commands: export NYNE_API_KEY="your-api-key" export NYNE_API_SECRET="your-api-secret" To persist across sessions, add the exports to your shell profile (~/.zshrc, ~/.bashrc, etc.) or create a .env file and source it: # Create .env file (keep out of version control) echo 'export NYNE_API_KEY="your-api-key"' >> ~/.nyne_env echo 'export NYNE_API_SECRET="your-api-secret"' >> ~/.nyne_env source ~/.nyne_env Verify they're set: echo "Key: ${NYNE_API_KEY:0:8}... Secret: ${NYNE_API_SECRET:0:6}..."
The API response can contain control characters in JSON string values that break jq. All examples below use a nyne_parse helper that pipes through python3 to clean and re-encode the JSON before passing to jq. Define it once per session: nyne_parse() { python3 -c " import sys, json, re raw = sys.stdin.read() clean = re.sub(r'[\x00-\x1f]+', ' ', raw) data = json.loads(clean) json.dump(data, sys.stdout) " }
Submit a research request by email and poll until complete: # Define helper (strips control chars, re-encodes clean JSON) nyne_parse() { python3 -c " import sys, json, re raw = sys.stdin.read() clean = re.sub(r'[\x00-\x1f]+', ' ', raw) data = json.loads(clean) json.dump(data, sys.stdout) " } # Submit research request REQUEST_ID=$(curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"email": "someone@example.com"}' | nyne_parse | jq -r '.data.request_id') echo "Request submitted: $REQUEST_ID" # Poll until complete (checks every 5s, times out after 10 min) SECONDS_WAITED=0 while [ $SECONDS_WAITED -lt 600 ]; do curl -s "https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" | nyne_parse > /tmp/nyne_response.json STATUS=$(jq -r '.data.status' /tmp/nyne_response.json) echo "Status: $STATUS ($SECONDS_WAITED seconds elapsed)" if [ "$STATUS" = "completed" ]; then jq '.data.result' /tmp/nyne_response.json break elif [ "$STATUS" = "failed" ]; then echo "Research failed." jq . /tmp/nyne_response.json break fi sleep 5 SECONDS_WAITED=$((SECONDS_WAITED + 5)) done if [ $SECONDS_WAITED -ge 600 ]; then echo "Timed out after 10 minutes. Try polling manually with request_id: $REQUEST_ID" fi
Endpoint: POST https://api.nyne.ai/person/deep-research Headers: Content-Type: application/json X-API-Key: $NYNE_API_KEY X-API-Secret: $NYNE_API_SECRET Parameters: ParameterTypeDescriptionemailstringEmail addressphonestringPhone numbersocial_media_urlstring or arraySocial profile URL(s), up to 3namestringFull name (use with company or city for disambiguation)companystringCompany name (helps disambiguate name)citystringCity (helps disambiguate name)callback_urlstringWebhook URL to POST results when complete At least one identifier is required: email, phone, social_media_url, or name with company/city.
By email: curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"email": "someone@example.com"}' | nyne_parse | jq . By social media URL: curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"social_media_url": "https://twitter.com/elonmusk"}' | nyne_parse | jq . By multiple social URLs: curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"social_media_url": ["https://twitter.com/elonmusk", "https://linkedin.com/in/elonmusk"]}' | nyne_parse | jq . By name + company: curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"name": "Jane Smith", "company": "Acme Corp"}' | nyne_parse | jq . By phone: curl -s -X POST "https://api.nyne.ai/person/deep-research" \ -H "Content-Type: application/json" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" \ -d '{"phone": "+14155551234"}' | nyne_parse | jq . Submit response (HTTP 202): { "success": true, "data": { "request_id": "abc123-def456-...", "status": "pending" } }
Endpoint: GET https://api.nyne.ai/person/deep-research?request_id={id} Headers: Same X-API-Key and X-API-Secret as above. Status progression: pending โ enriching โ gathering โ analyzing โ completed (or failed) This typically takes 2-3 minutes.
curl -s "https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" | nyne_parse | jq '{status: .data.status, completed: .data.completed}'
SECONDS_WAITED=0 TIMEOUT=600 # 10 minutes while [ $SECONDS_WAITED -lt $TIMEOUT ]; do curl -s "https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID" \ -H "X-API-Key: $NYNE_API_KEY" \ -H "X-API-Secret: $NYNE_API_SECRET" | nyne_parse > /tmp/nyne_response.json STATUS=$(jq -r '.data.status' /tmp/nyne_response.json) echo "[$(date +%H:%M:%S)] Status: $STATUS ($SECONDS_WAITED s)" case "$STATUS" in completed) jq '.data.result' /tmp/nyne_response.json break ;; failed) echo "Research failed:" jq '.data' /tmp/nyne_response.json break ;; *) sleep 5 SECONDS_WAITED=$((SECONDS_WAITED + 5)) ;; esac done if [ "$STATUS" != "completed" ] && [ "$STATUS" != "failed" ]; then echo "Timed out. Resume polling with request_id: $REQUEST_ID" fi
When status is completed, the response looks like: { "success": true, "timestamp": "2025-01-15T12:00:00Z", "data": { "status": "completed", "completed": true, "request_id": "abc123-...", "created_on": "2025-01-15T11:57:00Z", "completed_on": "2025-01-15T12:00:00Z", "result": { "enrichment": { ... }, "dossier": { ... }, "following": { ... }, "articles": [ ... ] } } }
SectionDescriptionenrichmentContact info, social profiles, bio, schools, work history (20+ keys)dossierThe main intelligence output โ 15 sections (see below)followingTwitter/Instagram following data (can be null)articlesPress and media mentions (can be null)
The dossier object contains 15 sections:
Top-level identity summary. full_name, current_role, company, location, age_estimate, emails, social_profiles, headline, birthday, self_description
Career trajectory and strengths. trajectory, superpower
Values, motivations, and personality archetypes. values, motivations, archetypes, political_leanings, cluster_analysis
Interests and personality outside of work. life_outside_work, entertainment_culture, personal_passions, active_hobbies_sports, quirks_personality
Network and relationship mapping. inner_circle, professional_network, personal_interest_graph
Deep analysis across 9 interest clusters. tech, sports_fitness, music_entertainment, food_lifestyle, causes_politics, intellectual_interests, geographic_ties, personal_network, unexpected_surprising
How they communicate and what they care about. topics, tone, humor_style, strong_opinions, frustrations, notable_quotes, recent_wins
Alias of content_voice_analysis (kept for backward compatibility).
List of ~25 objects describing important connections. Each: name, handle, followers, relationship_nature, why_important
Alias of key_relationships.
Hooks to open conversation, in 4 categories. professional_hooks, personal_interest_hooks, current_events_hooks, shared_experience_hooks
Public perception and reputation signals. highlighted_qualities, colleague_descriptions, patterns_in_praise
Topics and areas to avoid. topics_to_avoid, political_hot_buttons, sensitive_career_history, competitors_they_dislike
Non-obvious insights derived from data. List of objects: insight, evidence
How to approach this person. best_angle, topics_that_resonate, personal_interests_to_reference, shared_connections, what_not_to_do
After polling completes, the clean response is at /tmp/nyne_response.json. Use jq directly on the file: # Extract identity snapshot jq '.data.result.dossier.identity_snapshot' /tmp/nyne_response.json # Get all conversation starters jq '.data.result.dossier.conversation_starters' /tmp/nyne_response.json # List key relationships (name + why important) jq '.data.result.dossier.key_relationships[] | {name, why_important}' /tmp/nyne_response.json # Get approach strategy jq '.data.result.dossier.approach_strategy' /tmp/nyne_response.json # Extract a specific dossier section by name jq --arg s "psychographic_profile" '.data.result.dossier[$s]' /tmp/nyne_response.json # Get enrichment contact info jq '.data.result.enrichment | {emails, phones, linkedin_url, twitter_url}' /tmp/nyne_response.json # Check processing status only jq '{status: .data.status, completed: .data.completed, request_id: .data.request_id}' /tmp/nyne_response.json # Get warnings and landmines jq '.data.result.dossier.warnings_landmines' /tmp/nyne_response.json # List all creepy-good insights jq '.data.result.dossier.creepy_good_insights[].insight' /tmp/nyne_response.json
HTTP CodeErrorDescription400INVALID_PARAMETERSMalformed request body400MISSING_PARAMETERNo identifier provided (need email, phone, social_media_url, or name+company/city)401AUTHENTICATION_FAILEDInvalid or missing API key/secret402INSUFFICIENT_CREDITSNot enough credits (100 credits per request)403NO_ACTIVE_SUBSCRIPTIONSubscription required403ACCESS_DENIEDAccount does not have access429RATE_LIMIT_EXCEEDEDToo many requests500QUEUE_ERRORInternal processing error
Rate limits: 10 requests/minute, 100 requests/hour Cost: 100 credits per research request Processing time: Typically 2-3 minutes, up to 5 minutes
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.