{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nyne-deep-research",
    "name": "Nyne Deep Research",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/MichaelFanous2/nyne-deep-research",
    "canonicalUrl": "https://clawhub.ai/MichaelFanous2/nyne-deep-research",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nyne-deep-research",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nyne-deep-research",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nyne-deep-research"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/nyne-deep-research",
    "agentPageUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Nyne Deep Research Skill",
        "body": "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.\n\nImportant: This API is async with high latency (2-5 min processing). You submit a request, get a request_id, then poll until complete."
      },
      {
        "title": "Agent Instructions",
        "body": "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:\n\nIdentity Snapshot — who they are\nCareer DNA — trajectory and superpower\nPsychographic Profile — values, motivations, archetypes\nPersonal Life & Hobbies — interests outside work\nSocial Graph Analysis — inner circle, professional network, interest graph\nInterest Cluster Deep Dive — all 9 clusters with detail\nContent & Voice Analysis — topics, tone, opinions, quotes\nKey Relationships — full list with relationship nature and importance\nConversation Starters — all 4 hook categories\nRecommendations / How Others See Them — reputation signals\nWarnings & Landmines — topics to avoid, sensitivities\nCreepy-Good Insights — non-obvious findings with evidence\nApproach Strategy — best angle, topics, what not to do\n\nAlso include enrichment data (contact info, work history, education) and note whether following and articles sections have data.\n\nIf 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).\n\nIf following or articles are null, simply note they were not available for this person."
      },
      {
        "title": "Setup",
        "body": "Required environment variables:\n\nNYNE_API_KEY — your Nyne API key\nNYNE_API_SECRET — your Nyne API secret\n\nGet credentials at https://api.nyne.ai.\n\nSet these in your shell before running any commands:\n\nexport NYNE_API_KEY=\"your-api-key\"\nexport NYNE_API_SECRET=\"your-api-secret\"\n\nTo persist across sessions, add the exports to your shell profile (~/.zshrc, ~/.bashrc, etc.) or create a .env file and source it:\n\n# Create .env file (keep out of version control)\necho 'export NYNE_API_KEY=\"your-api-key\"' >> ~/.nyne_env\necho 'export NYNE_API_SECRET=\"your-api-secret\"' >> ~/.nyne_env\nsource ~/.nyne_env\n\nVerify they're set:\n\necho \"Key: ${NYNE_API_KEY:0:8}... Secret: ${NYNE_API_SECRET:0:6}...\""
      },
      {
        "title": "Important: JSON Handling",
        "body": "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:\n\nnyne_parse() {\n  python3 -c \"\nimport sys, json, re\nraw = sys.stdin.read()\nclean = re.sub(r'[\\x00-\\x1f]+', ' ', raw)\ndata = json.loads(clean)\njson.dump(data, sys.stdout)\n\"\n}"
      },
      {
        "title": "Quick Start",
        "body": "Submit a research request by email and poll until complete:\n\n# Define helper (strips control chars, re-encodes clean JSON)\nnyne_parse() {\n  python3 -c \"\nimport sys, json, re\nraw = sys.stdin.read()\nclean = re.sub(r'[\\x00-\\x1f]+', ' ', raw)\ndata = json.loads(clean)\njson.dump(data, sys.stdout)\n\"\n}\n\n# Submit research request\nREQUEST_ID=$(curl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"email\": \"someone@example.com\"}' | nyne_parse | jq -r '.data.request_id')\n\necho \"Request submitted: $REQUEST_ID\"\n\n# Poll until complete (checks every 5s, times out after 10 min)\nSECONDS_WAITED=0\nwhile [ $SECONDS_WAITED -lt 600 ]; do\n  curl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n    -H \"X-API-Key: $NYNE_API_KEY\" \\\n    -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse > /tmp/nyne_response.json\n  STATUS=$(jq -r '.data.status' /tmp/nyne_response.json)\n  echo \"Status: $STATUS ($SECONDS_WAITED seconds elapsed)\"\n  if [ \"$STATUS\" = \"completed\" ]; then\n    jq '.data.result' /tmp/nyne_response.json\n    break\n  elif [ \"$STATUS\" = \"failed\" ]; then\n    echo \"Research failed.\"\n    jq . /tmp/nyne_response.json\n    break\n  fi\n  sleep 5\n  SECONDS_WAITED=$((SECONDS_WAITED + 5))\ndone\n\nif [ $SECONDS_WAITED -ge 600 ]; then\n  echo \"Timed out after 10 minutes. Try polling manually with request_id: $REQUEST_ID\"\nfi"
      },
      {
        "title": "Submit Research (POST)",
        "body": "Endpoint: POST https://api.nyne.ai/person/deep-research\n\nHeaders:\n\nContent-Type: application/json\nX-API-Key: $NYNE_API_KEY\nX-API-Secret: $NYNE_API_SECRET\n\nParameters:\n\nParameterTypeDescriptionemailstringEmail 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\n\nAt least one identifier is required: email, phone, social_media_url, or name with company/city."
      },
      {
        "title": "Examples",
        "body": "By email:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"email\": \"someone@example.com\"}' | nyne_parse | jq .\n\nBy social media URL:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"social_media_url\": \"https://twitter.com/elonmusk\"}' | nyne_parse | jq .\n\nBy multiple social URLs:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"social_media_url\": [\"https://twitter.com/elonmusk\", \"https://linkedin.com/in/elonmusk\"]}' | nyne_parse | jq .\n\nBy name + company:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"name\": \"Jane Smith\", \"company\": \"Acme Corp\"}' | nyne_parse | jq .\n\nBy phone:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"phone\": \"+14155551234\"}' | nyne_parse | jq .\n\nSubmit response (HTTP 202):\n\n{\n  \"success\": true,\n  \"data\": {\n    \"request_id\": \"abc123-def456-...\",\n    \"status\": \"pending\"\n  }\n}"
      },
      {
        "title": "Poll for Results (GET)",
        "body": "Endpoint: GET https://api.nyne.ai/person/deep-research?request_id={id}\n\nHeaders: Same X-API-Key and X-API-Secret as above.\n\nStatus progression: pending → enriching → gathering → analyzing → completed (or failed)\n\nThis typically takes 2-3 minutes."
      },
      {
        "title": "Check status once",
        "body": "curl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse | jq '{status: .data.status, completed: .data.completed}'"
      },
      {
        "title": "Full polling loop",
        "body": "SECONDS_WAITED=0\nTIMEOUT=600  # 10 minutes\n\nwhile [ $SECONDS_WAITED -lt $TIMEOUT ]; do\n  curl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n    -H \"X-API-Key: $NYNE_API_KEY\" \\\n    -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse > /tmp/nyne_response.json\n  STATUS=$(jq -r '.data.status' /tmp/nyne_response.json)\n\n  echo \"[$(date +%H:%M:%S)] Status: $STATUS ($SECONDS_WAITED s)\"\n\n  case \"$STATUS\" in\n    completed)\n      jq '.data.result' /tmp/nyne_response.json\n      break\n      ;;\n    failed)\n      echo \"Research failed:\"\n      jq '.data' /tmp/nyne_response.json\n      break\n      ;;\n    *)\n      sleep 5\n      SECONDS_WAITED=$((SECONDS_WAITED + 5))\n      ;;\n  esac\ndone\n\nif [ \"$STATUS\" != \"completed\" ] && [ \"$STATUS\" != \"failed\" ]; then\n  echo \"Timed out. Resume polling with request_id: $REQUEST_ID\"\nfi"
      },
      {
        "title": "Response Structure",
        "body": "When status is completed, the response looks like:\n\n{\n  \"success\": true,\n  \"timestamp\": \"2025-01-15T12:00:00Z\",\n  \"data\": {\n    \"status\": \"completed\",\n    \"completed\": true,\n    \"request_id\": \"abc123-...\",\n    \"created_on\": \"2025-01-15T11:57:00Z\",\n    \"completed_on\": \"2025-01-15T12:00:00Z\",\n    \"result\": {\n      \"enrichment\": { ... },\n      \"dossier\": { ... },\n      \"following\": { ... },\n      \"articles\": [ ... ]\n    }\n  }\n}"
      },
      {
        "title": "result sections",
        "body": "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)"
      },
      {
        "title": "Dossier Sections Reference",
        "body": "The dossier object contains 15 sections:"
      },
      {
        "title": "identity_snapshot",
        "body": "Top-level identity summary.\n\nfull_name, current_role, company, location, age_estimate, emails, social_profiles, headline, birthday, self_description"
      },
      {
        "title": "career_dna",
        "body": "Career trajectory and strengths.\n\ntrajectory, superpower"
      },
      {
        "title": "psychographic_profile",
        "body": "Values, motivations, and personality archetypes.\n\nvalues, motivations, archetypes, political_leanings, cluster_analysis"
      },
      {
        "title": "personal_life_hobbies",
        "body": "Interests and personality outside of work.\n\nlife_outside_work, entertainment_culture, personal_passions, active_hobbies_sports, quirks_personality"
      },
      {
        "title": "social_graph_analysis",
        "body": "Network and relationship mapping.\n\ninner_circle, professional_network, personal_interest_graph"
      },
      {
        "title": "interest_cluster_deep_dive",
        "body": "Deep analysis across 9 interest clusters.\n\ntech, sports_fitness, music_entertainment, food_lifestyle, causes_politics, intellectual_interests, geographic_ties, personal_network, unexpected_surprising"
      },
      {
        "title": "content_voice_analysis",
        "body": "How they communicate and what they care about.\n\ntopics, tone, humor_style, strong_opinions, frustrations, notable_quotes, recent_wins"
      },
      {
        "title": "content_analysis",
        "body": "Alias of content_voice_analysis (kept for backward compatibility)."
      },
      {
        "title": "key_relationships",
        "body": "List of ~25 objects describing important connections.\n\nEach: name, handle, followers, relationship_nature, why_important"
      },
      {
        "title": "key_influencers",
        "body": "Alias of key_relationships."
      },
      {
        "title": "conversation_starters",
        "body": "Hooks to open conversation, in 4 categories.\n\nprofessional_hooks, personal_interest_hooks, current_events_hooks, shared_experience_hooks"
      },
      {
        "title": "recommendations_how_others_see_them",
        "body": "Public perception and reputation signals.\n\nhighlighted_qualities, colleague_descriptions, patterns_in_praise"
      },
      {
        "title": "warnings_landmines",
        "body": "Topics and areas to avoid.\n\ntopics_to_avoid, political_hot_buttons, sensitive_career_history, competitors_they_dislike"
      },
      {
        "title": "creepy_good_insights",
        "body": "Non-obvious insights derived from data.\n\nList of objects: insight, evidence"
      },
      {
        "title": "approach_strategy",
        "body": "How to approach this person.\n\nbest_angle, topics_that_resonate, personal_interests_to_reference, shared_connections, what_not_to_do"
      },
      {
        "title": "Useful jq Filters",
        "body": "After polling completes, the clean response is at /tmp/nyne_response.json. Use jq directly on the file:\n\n# Extract identity snapshot\njq '.data.result.dossier.identity_snapshot' /tmp/nyne_response.json\n\n# Get all conversation starters\njq '.data.result.dossier.conversation_starters' /tmp/nyne_response.json\n\n# List key relationships (name + why important)\njq '.data.result.dossier.key_relationships[] | {name, why_important}' /tmp/nyne_response.json\n\n# Get approach strategy\njq '.data.result.dossier.approach_strategy' /tmp/nyne_response.json\n\n# Extract a specific dossier section by name\njq --arg s \"psychographic_profile\" '.data.result.dossier[$s]' /tmp/nyne_response.json\n\n# Get enrichment contact info\njq '.data.result.enrichment | {emails, phones, linkedin_url, twitter_url}' /tmp/nyne_response.json\n\n# Check processing status only\njq '{status: .data.status, completed: .data.completed, request_id: .data.request_id}' /tmp/nyne_response.json\n\n# Get warnings and landmines\njq '.data.result.dossier.warnings_landmines' /tmp/nyne_response.json\n\n# List all creepy-good insights\njq '.data.result.dossier.creepy_good_insights[].insight' /tmp/nyne_response.json"
      },
      {
        "title": "Error Handling",
        "body": "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"
      },
      {
        "title": "Rate Limits & Costs",
        "body": "Rate limits: 10 requests/minute, 100 requests/hour\nCost: 100 credits per research request\nProcessing time: Typically 2-3 minutes, up to 5 minutes"
      }
    ],
    "body": "Nyne Deep Research Skill\n\nResearch 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.\n\nImportant: This API is async with high latency (2-5 min processing). You submit a request, get a request_id, then poll until complete.\n\nAgent Instructions\n\nWhen 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:\n\nIdentity Snapshot — who they are\nCareer DNA — trajectory and superpower\nPsychographic Profile — values, motivations, archetypes\nPersonal Life & Hobbies — interests outside work\nSocial Graph Analysis — inner circle, professional network, interest graph\nInterest Cluster Deep Dive — all 9 clusters with detail\nContent & Voice Analysis — topics, tone, opinions, quotes\nKey Relationships — full list with relationship nature and importance\nConversation Starters — all 4 hook categories\nRecommendations / How Others See Them — reputation signals\nWarnings & Landmines — topics to avoid, sensitivities\nCreepy-Good Insights — non-obvious findings with evidence\nApproach Strategy — best angle, topics, what not to do\n\nAlso include enrichment data (contact info, work history, education) and note whether following and articles sections have data.\n\nIf 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).\n\nIf following or articles are null, simply note they were not available for this person.\n\nSetup\n\nRequired environment variables:\n\nNYNE_API_KEY — your Nyne API key\nNYNE_API_SECRET — your Nyne API secret\n\nGet credentials at https://api.nyne.ai.\n\nSet these in your shell before running any commands:\n\nexport NYNE_API_KEY=\"your-api-key\"\nexport NYNE_API_SECRET=\"your-api-secret\"\n\n\nTo persist across sessions, add the exports to your shell profile (~/.zshrc, ~/.bashrc, etc.) or create a .env file and source it:\n\n# Create .env file (keep out of version control)\necho 'export NYNE_API_KEY=\"your-api-key\"' >> ~/.nyne_env\necho 'export NYNE_API_SECRET=\"your-api-secret\"' >> ~/.nyne_env\nsource ~/.nyne_env\n\n\nVerify they're set:\n\necho \"Key: ${NYNE_API_KEY:0:8}... Secret: ${NYNE_API_SECRET:0:6}...\"\n\nImportant: JSON Handling\n\nThe 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:\n\nnyne_parse() {\n  python3 -c \"\nimport sys, json, re\nraw = sys.stdin.read()\nclean = re.sub(r'[\\x00-\\x1f]+', ' ', raw)\ndata = json.loads(clean)\njson.dump(data, sys.stdout)\n\"\n}\n\nQuick Start\n\nSubmit a research request by email and poll until complete:\n\n# Define helper (strips control chars, re-encodes clean JSON)\nnyne_parse() {\n  python3 -c \"\nimport sys, json, re\nraw = sys.stdin.read()\nclean = re.sub(r'[\\x00-\\x1f]+', ' ', raw)\ndata = json.loads(clean)\njson.dump(data, sys.stdout)\n\"\n}\n\n# Submit research request\nREQUEST_ID=$(curl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"email\": \"someone@example.com\"}' | nyne_parse | jq -r '.data.request_id')\n\necho \"Request submitted: $REQUEST_ID\"\n\n# Poll until complete (checks every 5s, times out after 10 min)\nSECONDS_WAITED=0\nwhile [ $SECONDS_WAITED -lt 600 ]; do\n  curl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n    -H \"X-API-Key: $NYNE_API_KEY\" \\\n    -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse > /tmp/nyne_response.json\n  STATUS=$(jq -r '.data.status' /tmp/nyne_response.json)\n  echo \"Status: $STATUS ($SECONDS_WAITED seconds elapsed)\"\n  if [ \"$STATUS\" = \"completed\" ]; then\n    jq '.data.result' /tmp/nyne_response.json\n    break\n  elif [ \"$STATUS\" = \"failed\" ]; then\n    echo \"Research failed.\"\n    jq . /tmp/nyne_response.json\n    break\n  fi\n  sleep 5\n  SECONDS_WAITED=$((SECONDS_WAITED + 5))\ndone\n\nif [ $SECONDS_WAITED -ge 600 ]; then\n  echo \"Timed out after 10 minutes. Try polling manually with request_id: $REQUEST_ID\"\nfi\n\nSubmit Research (POST)\n\nEndpoint: POST https://api.nyne.ai/person/deep-research\n\nHeaders:\n\nContent-Type: application/json\nX-API-Key: $NYNE_API_KEY\nX-API-Secret: $NYNE_API_SECRET\n\n\nParameters:\n\nParameter\tType\tDescription\nemail\tstring\tEmail address\nphone\tstring\tPhone number\nsocial_media_url\tstring or array\tSocial profile URL(s), up to 3\nname\tstring\tFull name (use with company or city for disambiguation)\ncompany\tstring\tCompany name (helps disambiguate name)\ncity\tstring\tCity (helps disambiguate name)\ncallback_url\tstring\tWebhook URL to POST results when complete\n\nAt least one identifier is required: email, phone, social_media_url, or name with company/city.\n\nExamples\n\nBy email:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"email\": \"someone@example.com\"}' | nyne_parse | jq .\n\n\nBy social media URL:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"social_media_url\": \"https://twitter.com/elonmusk\"}' | nyne_parse | jq .\n\n\nBy multiple social URLs:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"social_media_url\": [\"https://twitter.com/elonmusk\", \"https://linkedin.com/in/elonmusk\"]}' | nyne_parse | jq .\n\n\nBy name + company:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"name\": \"Jane Smith\", \"company\": \"Acme Corp\"}' | nyne_parse | jq .\n\n\nBy phone:\n\ncurl -s -X POST \"https://api.nyne.ai/person/deep-research\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" \\\n  -d '{\"phone\": \"+14155551234\"}' | nyne_parse | jq .\n\n\nSubmit response (HTTP 202):\n\n{\n  \"success\": true,\n  \"data\": {\n    \"request_id\": \"abc123-def456-...\",\n    \"status\": \"pending\"\n  }\n}\n\nPoll for Results (GET)\n\nEndpoint: GET https://api.nyne.ai/person/deep-research?request_id={id}\n\nHeaders: Same X-API-Key and X-API-Secret as above.\n\nStatus progression: pending → enriching → gathering → analyzing → completed (or failed)\n\nThis typically takes 2-3 minutes.\n\nCheck status once\ncurl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n  -H \"X-API-Key: $NYNE_API_KEY\" \\\n  -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse | jq '{status: .data.status, completed: .data.completed}'\n\nFull polling loop\nSECONDS_WAITED=0\nTIMEOUT=600  # 10 minutes\n\nwhile [ $SECONDS_WAITED -lt $TIMEOUT ]; do\n  curl -s \"https://api.nyne.ai/person/deep-research?request_id=$REQUEST_ID\" \\\n    -H \"X-API-Key: $NYNE_API_KEY\" \\\n    -H \"X-API-Secret: $NYNE_API_SECRET\" | nyne_parse > /tmp/nyne_response.json\n  STATUS=$(jq -r '.data.status' /tmp/nyne_response.json)\n\n  echo \"[$(date +%H:%M:%S)] Status: $STATUS ($SECONDS_WAITED s)\"\n\n  case \"$STATUS\" in\n    completed)\n      jq '.data.result' /tmp/nyne_response.json\n      break\n      ;;\n    failed)\n      echo \"Research failed:\"\n      jq '.data' /tmp/nyne_response.json\n      break\n      ;;\n    *)\n      sleep 5\n      SECONDS_WAITED=$((SECONDS_WAITED + 5))\n      ;;\n  esac\ndone\n\nif [ \"$STATUS\" != \"completed\" ] && [ \"$STATUS\" != \"failed\" ]; then\n  echo \"Timed out. Resume polling with request_id: $REQUEST_ID\"\nfi\n\nResponse Structure\n\nWhen status is completed, the response looks like:\n\n{\n  \"success\": true,\n  \"timestamp\": \"2025-01-15T12:00:00Z\",\n  \"data\": {\n    \"status\": \"completed\",\n    \"completed\": true,\n    \"request_id\": \"abc123-...\",\n    \"created_on\": \"2025-01-15T11:57:00Z\",\n    \"completed_on\": \"2025-01-15T12:00:00Z\",\n    \"result\": {\n      \"enrichment\": { ... },\n      \"dossier\": { ... },\n      \"following\": { ... },\n      \"articles\": [ ... ]\n    }\n  }\n}\n\nresult sections\nSection\tDescription\nenrichment\tContact info, social profiles, bio, schools, work history (20+ keys)\ndossier\tThe main intelligence output — 15 sections (see below)\nfollowing\tTwitter/Instagram following data (can be null)\narticles\tPress and media mentions (can be null)\nDossier Sections Reference\n\nThe dossier object contains 15 sections:\n\nidentity_snapshot\n\nTop-level identity summary.\n\nfull_name, current_role, company, location, age_estimate, emails, social_profiles, headline, birthday, self_description\ncareer_dna\n\nCareer trajectory and strengths.\n\ntrajectory, superpower\npsychographic_profile\n\nValues, motivations, and personality archetypes.\n\nvalues, motivations, archetypes, political_leanings, cluster_analysis\npersonal_life_hobbies\n\nInterests and personality outside of work.\n\nlife_outside_work, entertainment_culture, personal_passions, active_hobbies_sports, quirks_personality\nsocial_graph_analysis\n\nNetwork and relationship mapping.\n\ninner_circle, professional_network, personal_interest_graph\ninterest_cluster_deep_dive\n\nDeep analysis across 9 interest clusters.\n\ntech, sports_fitness, music_entertainment, food_lifestyle, causes_politics, intellectual_interests, geographic_ties, personal_network, unexpected_surprising\ncontent_voice_analysis\n\nHow they communicate and what they care about.\n\ntopics, tone, humor_style, strong_opinions, frustrations, notable_quotes, recent_wins\ncontent_analysis\n\nAlias of content_voice_analysis (kept for backward compatibility).\n\nkey_relationships\n\nList of ~25 objects describing important connections.\n\nEach: name, handle, followers, relationship_nature, why_important\nkey_influencers\n\nAlias of key_relationships.\n\nconversation_starters\n\nHooks to open conversation, in 4 categories.\n\nprofessional_hooks, personal_interest_hooks, current_events_hooks, shared_experience_hooks\nrecommendations_how_others_see_them\n\nPublic perception and reputation signals.\n\nhighlighted_qualities, colleague_descriptions, patterns_in_praise\nwarnings_landmines\n\nTopics and areas to avoid.\n\ntopics_to_avoid, political_hot_buttons, sensitive_career_history, competitors_they_dislike\ncreepy_good_insights\n\nNon-obvious insights derived from data.\n\nList of objects: insight, evidence\napproach_strategy\n\nHow to approach this person.\n\nbest_angle, topics_that_resonate, personal_interests_to_reference, shared_connections, what_not_to_do\nUseful jq Filters\n\nAfter polling completes, the clean response is at /tmp/nyne_response.json. Use jq directly on the file:\n\n# Extract identity snapshot\njq '.data.result.dossier.identity_snapshot' /tmp/nyne_response.json\n\n# Get all conversation starters\njq '.data.result.dossier.conversation_starters' /tmp/nyne_response.json\n\n# List key relationships (name + why important)\njq '.data.result.dossier.key_relationships[] | {name, why_important}' /tmp/nyne_response.json\n\n# Get approach strategy\njq '.data.result.dossier.approach_strategy' /tmp/nyne_response.json\n\n# Extract a specific dossier section by name\njq --arg s \"psychographic_profile\" '.data.result.dossier[$s]' /tmp/nyne_response.json\n\n# Get enrichment contact info\njq '.data.result.enrichment | {emails, phones, linkedin_url, twitter_url}' /tmp/nyne_response.json\n\n# Check processing status only\njq '{status: .data.status, completed: .data.completed, request_id: .data.request_id}' /tmp/nyne_response.json\n\n# Get warnings and landmines\njq '.data.result.dossier.warnings_landmines' /tmp/nyne_response.json\n\n# List all creepy-good insights\njq '.data.result.dossier.creepy_good_insights[].insight' /tmp/nyne_response.json\n\nError Handling\nHTTP Code\tError\tDescription\n400\tINVALID_PARAMETERS\tMalformed request body\n400\tMISSING_PARAMETER\tNo identifier provided (need email, phone, social_media_url, or name+company/city)\n401\tAUTHENTICATION_FAILED\tInvalid or missing API key/secret\n402\tINSUFFICIENT_CREDITS\tNot enough credits (100 credits per request)\n403\tNO_ACTIVE_SUBSCRIPTION\tSubscription required\n403\tACCESS_DENIED\tAccount does not have access\n429\tRATE_LIMIT_EXCEEDED\tToo many requests\n500\tQUEUE_ERROR\tInternal processing error\nRate Limits & Costs\nRate limits: 10 requests/minute, 100 requests/hour\nCost: 100 credits per research request\nProcessing time: Typically 2-3 minutes, up to 5 minutes"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/MichaelFanous2/nyne-deep-research",
    "publisherUrl": "https://clawhub.ai/MichaelFanous2/nyne-deep-research",
    "owner": "MichaelFanous2",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nyne-deep-research",
    "downloadUrl": "https://openagent3.xyz/downloads/nyne-deep-research",
    "agentUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nyne-deep-research/agent.md"
  }
}