Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计异常

ditto-product-research产品研究同上

Agent Skill

ditto-product-research 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

955

周安装

39

GitHub Stars

3

下载量

309
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ditto-product-research(产品研究同上)
来源仓库:https://github.com/ask-ditto/ditto-product-research-skill
仓库路径:skills/ditto-product-research
安装命令:
npx skills add https://github.com/ask-ditto/ditto-product-research-skill --skill ditto-product-research
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ask-ditto/ditto-product-research-skill --skill ditto-product-research

简介

ditto-product-research 通过合成用户画像开展产品可用性测试与需求验证。

  • 适用于功能优先级排序、用户体验设计与定价敏感性分析。
  • 覆盖美国、英国、德国与加拿大主要市场的人口代表性样本。
  • 每次研究建议聚焦单一问题以避免结果稀释。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Ditto Product Research

Run customer research, pricing tests, and product validation studies using Ditto's 300,000+ synthetic personas — directly from the terminal.

Full documentation: https://askditto.io/claude-code-guide

What Ditto Does

Ditto maintains 300,000+ AI-powered synthetic personas calibrated to census data across USA, UK, Germany, and Canada. You ask them open-ended questions and get qualitative responses with the specificity of real interviews.

  • 92% overlap with traditional focus groups (EY Americas validation)
  • 95% correlation with traditional research
  • Harvard/Cambridge/Stanford/Oxford peer-reviewed methodology
  • A 10-persona, 7-question study completes in 10-12 minutes
  • Traditional equivalent: 4-8 weeks, $10,000-50,000

Quick Start (Free Tier)

Get a free API key — no credit card, no sales call:

curl -sL https://app.askditto.io/scripts/free-tier-auth.sh | bash

Or visit: https://app.askditto.io/docs/free-tier-oauth

Ask a question immediately:

curl -s -X POST "https://app.askditto.io/v1/free/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "What frustrates you most about grocery shopping?"}'

Free keys (rk_free_): ~12 shared personas, no demographic filtering. Paid keys (rk_live_): custom groups, demographic filtering, unlimited studies.

API Essentials

Base URL: https://app.askditto.io Auth header: Authorization: Bearer YOUR_API_KEY Content-Type: application/json

The Standard Workflow (6 Steps)

IMPORTANT: Follow these steps in order. Questions MUST be asked sequentially — wait for all responses before asking the next.

Step 1: Recruit Your Panel

curl -s -X POST "https://app.askditto.io/v1/research-groups/recruit" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "US Adults 30-55",
    "group_size": 10,
    "filters": {"country": "USA", "age_min": 30, "age_max": 55}
  }'

Save the uuid from the response (5-15 seconds).

CRITICAL: Use group_size not size. Use group uuid not id. State filter uses 2-letter codes ("MI" not "Michigan").

Step 2: Create Study

curl -s -X POST "https://app.askditto.io/v1/research-studies" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Product Concept Validation",
    "objective": "Understand customer pain points and validate pricing",
    "research_group_uuid": "UUID_FROM_STEP_1"
  }'

Save the study id. Response nests under data.study — access via response["study"]["id"], NOT response["id"].

Step 3: Ask Questions (One at a Time)

curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "Your open-ended question here"}'

Returns job_ids (one per persona). Poll until complete before asking next.

Step 4: Poll Until Complete

curl -s "https://app.askditto.io/v1/jobs/JOB_ID" \
  -H "Authorization: Bearer $DITTO_API_KEY"

Polling strategy for 10-persona study:

  • Wait 45-50 seconds before first poll
  • Then poll every 20 seconds
  • Poll ONE job_id as proxy — all jobs from the same question finish together
  • Status: queuedstartedfinished (or failed)

ALL jobs must show finished before asking the next question.

Step 5: Complete the Study

curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/complete" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"force": false}'

Triggers AI analysis: summary, segments, divergences, recommendations (20-40s). Use "force": true to re-run analysis on an already-completed study (avoids 409).

Step 6: Get Share Link

curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/share" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'

Returns a public URL. Use share_link field (preferred over share_url). To check existing share state without changing it:

curl -s "https://app.askditto.io/v1/research-studies/STUDY_ID/share" \
  -H "Authorization: Bearer $DITTO_API_KEY"

Workflow Patterns

Standard 7-Question Study

The default. Recruit 10 personas → create study → ask 7 questions → complete → share. ~10-12 minutes total.

Over-Recruit & Curate

For niche audiences or when participant quality matters most (e.g., VC diligence):

  1. Recruit 15-20 participants: "group_size": 15
  2. Create study from that group
  3. Ask Q1 as a screening question ("Tell me about your role and how often you...")
  4. Review Q1 responses — score each agent: High / Medium / Low relevance
  5. Remove low-relevance agents from the study (not the group): curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/agents/remove" \ -H "Authorization: Bearer $DITTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"agent_ids": [123, 456, 789]}' agent_ids must be list[int] — never strings or UUIDs.
  6. Ask Q2-Q7 to curated panel only. Keep minimum 8 personas.

Quick Question (No Study)

For 1-5 quick answers without creating a full study:

To a specific agent:

curl -s -X POST "https://app.askditto.io/v1/research-agents/AGENT_ID/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "What matters most when choosing a coffee brand?"}'

To an entire group:

curl -s -X POST "https://app.askditto.io/v1/research-groups/GROUP_ID/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "What matters most when choosing a coffee brand?"}'

Free Tier

~12 shared personas, no demographic filtering. Good for quick tests:

curl -s -X POST "https://app.askditto.io/v1/free/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "What frustrates you most about meal planning?"}'

Three-Phase Iterative

For deeper validation, run 3 sequential studies (can share the same group):

PhasePurposeQuestions
1. Pain DiscoveryFind the real problem7 open-ended
2. Deep DiveUnderstand requirements and trust7 targeted
3. Concept TestValidate positioning and pricing7 structured

Each phase's questions should be informed by the previous phase's findings. ~30-45 minutes total.

Resume Stalled Study

If a study was interrupted mid-way:

  1. Get study details: GET /v1/research-studies/STUDY_ID
  2. List existing questions: GET /v1/research-studies/STUDY_ID/questions
  3. Resume from the next unanswered question
  4. Complete when all questions are asked

Zeitgeist Survey

Quick single-question survey with predefined answer options:

curl -s -X POST "https://app.askditto.io/v1/zeitgeist/surveys/create" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Brand Awareness Pulse",
    "question": "Which brand comes to mind first for sustainable coffee?",
    "research_group_uuid": "GROUP_UUID",
    "answer_options": ["Brand A", "Brand B", "Brand C", "Other"]
  }'

Get results: GET /v1/zeitgeist/surveys/SURVEY_ID/results Delete: DELETE /v1/zeitgeist/surveys/SURVEY_ID

Natural Language Requests

Let the system design your study or group from a plain-text brief:

Study request:

curl -s -X POST "https://app.askditto.io/v1/research-study-requests" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"request_text": "I want to understand why millennials are switching from coffee to matcha"}'

Group request:

curl -s -X POST "https://app.askditto.io/v1/research-group-requests" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"request_text": "US women aged 25-40 who drink matcha daily"}'

Check group request status: GET /v1/research-group-requests/REQUEST_ID

AI-Assisted Recruitment

Provide an objective and let the system design the group:

curl -s -X POST "https://app.askditto.io/v1/research-groups/interview" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "objective": "Understand premium pet food purchasing decisions",
    "group_size": 10
  }'

The 7-Question Framework

Design studies with this proven sequence (adapt to your domain):

  1. Establish relevance — "Walk me through how you currently handle [task]. What does a typical week look like?"
  2. Identify pain — "What's the most frustrating part of [task]? What makes you want to throw your laptop out the window?"
  3. Quantify impact — "Roughly how much time/money do you lose to [problem] per week?"
  4. Current solutions — "What tools or workarounds do you currently use? What works? What doesn't?"
  5. Past attempts — "Have you tried switching to something new? What happened?"
  6. Magic wand — "If you could fix ONE thing about [task], what would it be and why?"
  7. Adoption barriers — "Imagine a tool that solves [problem]. What would make you hesitant to try it?"

Introduce brand/product at Q3 earliest — not Q1 (avoid anchoring bias). The magic wand question (Q6) is consistently the most revealing.

Complete API Reference

Research Groups

MethodEndpointPurpose
POST/v1/research-groups/recruitRecruit group with demographic filters
POST/v1/research-groups/createCreate group from explicit agent IDs
POST/v1/research-groups/interviewAI-assisted recruitment from objective
GET/v1/research-groupsList all groups (?limit=N&offset=N)
GET/v1/research-groups/{id}Get group details + agent profiles
POST/v1/research-groups/{id}/updateUpdate name/description/dedupe
DELETE/v1/research-groups/{id}Archive group
POST/v1/research-groups/{id}/agents/addAdd agents by ID
POST/v1/research-groups/{id}/agents/removeRemove agents permanently
POST/v1/research-groups/{uuid}/appendRecruit more agents into existing group

⚠️ Note: append uses group_uuid (not group_id) — inconsistent with other endpoints.

Research Studies

MethodEndpointPurpose
POST/v1/research-studiesCreate study (research_group_uuid required)
GET/v1/research-studiesList studies (?limit=N&offset=N)
GET/v1/research-studies/{id}Get study details (stage, share_url, counts)
POST/v1/research-studies/{id}/completeTrigger AI analysis
POST/v1/research-studies/{id}/agents/removeRemove agents from study (curation)

Questions

MethodEndpointPurpose
POST/v1/research-studies/{id}/questionsAsk question in study (returns job_ids)
GET/v1/research-studies/{id}/questionsGet all Q&A data
POST/v1/research-agents/{id}/questionsQuick question to one agent
POST/v1/research-groups/{id}/questionsQuick question to entire group

Jobs

MethodEndpointPurpose
GET/v1/jobs/{job_id}Poll async job status

Sharing

MethodEndpointPurpose
POST/v1/research-studies/{id}/shareEnable/disable sharing
GET/v1/research-studies/{id}/shareCheck current share state

Media Attachments

MethodEndpointPurpose
POST/v1/media-assetsUpload image/PDF for question attachments

Agents

MethodEndpointPurpose
GET/v1/agents/findFind one matching persona
GET/v1/agents/searchSearch personas by demographics

Natural Language Requests

MethodEndpointPurpose
POST/v1/research-study-requestsCreate study from plain-text brief
POST/v1/research-group-requestsCreate group from description
GET/v1/research-group-requests/{id}Get group request status

Zeitgeist Surveys

MethodEndpointPurpose
POST/v1/zeitgeist/surveys/createCreate quick survey with answer options
GET/v1/zeitgeist/surveys/{id}/resultsGet survey results
DELETE/v1/zeitgeist/surveys/{id}Delete survey

Free Tier

MethodEndpointPurpose
POST/v1/free/questionsAsk question to shared free-tier group

Demographic Filters

Filters go inside the filters dict when recruiting:

FilterTypeExamplesNotes
countrystring"USA", "UK", "Canada", "Germany"Required. Only these 4 supported
statestring"TX", "MI", "CA"2-letter codes ONLY
citystring"Austin", "Detroit"Supported but narrows pool
age_mininteger25, 30, 45Recommended
age_maxinteger45, 55, 65Recommended
genderstring"male", "female", "non_binary"Optional
is_parentbooleantrue, falseGood for family/consumer
educationstring"high_school", "bachelors", "masters", "phd"Optional
industryarray["Healthcare", "Technology"]Optional

NOT supported: income, employment, ethnicity, political_affiliation.

If 0 agents returned: Broaden filters — remove state, remove industry, widen age by +/- 10 years. Try up to 10 relaxation attempts.

Industry proxies: Auto mechanics → Automotive Manufacturing, restaurant owners → Food & Beverages, pet owners → use age filter (not Veterinary), security professionals → Cybersecurity.

Media Attachments

Upload screenshots, ad creative, or PDFs before asking questions:

# Upload image
curl -s -X POST "https://app.askditto.io/v1/media-assets" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data_url": "https://example.com/screenshot.png",
    "filename": "landing-page.png",
    "mime": "image/png"
  }'

Or use base64: "file_data": "base64_encoded_content", "encoding": "base64". Allowed types: PNG, JPEG, GIF, WEBP, PDF.

Save the media_asset.id and pass as attachments when asking questions:

curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Look at this landing page. What would make you trust this product?",
    "attachments": [MEDIA_ASSET_ID]
  }'

Polling Strategy

Study sizeFirst poll delaySubsequent intervalStrategy
10 personas45-50 seconds20 secondsPoll ONE job_id as proxy
15-20 personas60 seconds20 secondsPoll ONE job_id as proxy
Free tier (~12)45 seconds20 secondsPoll ONE job_id

All jobs from the same question finish together — no need to poll each one. If a job returns failed, report partial failure. Do NOT auto-retry.

Response Structure

Study creation: response["study"]["id"] (nested under study key)

Question responses (from GET /v1/research-studies/{id}/questions):

  • response_text — the persona's answer (may contain HTML: <b>, <ul>, <li>)
  • agent_name, agent_age, agent_city, agent_state, agent_country
  • agent_occupation, agent_summary

Completion results: overall_summary, key_segments, divergences, shared_mindsets, next_questions, stats.

Share link: Prefer share_link field. If absent, use share_url.

Reading Responses

After polling is complete, retrieve all Q&A data:

curl -s "https://app.askditto.io/v1/research-studies/STUDY_ID/questions" \
  -H "Authorization: Bearer $DITTO_API_KEY"

Use agent demographics to segment findings by age, location, occupation.

What You Can Test

  • Pain points — Do customers actually have this problem?
  • Pricing — What price is a bargain? A stretch? A dealbreaker?
  • Positioning — Which tagline/value prop resonates most?
  • Features — What do customers prioritise vs. ignore?
  • Landing pages — Upload screenshots and get qualitative reactions
  • Ad creative — Test headlines, images, and messaging variants
  • Competitive switching — What would make someone leave their current solution?
  • Deal breakers — What kills the sale even if the product is good?

Common Mistakes

  • Using size instead of group_size in recruitment
  • Using numeric id instead of string uuid for research_group_uuid
  • Using group_id with the append endpoint (it requires group_uuid)
  • Using response["id"] instead of response["study"]["id"] for study creation
  • Passing agent_ids as strings/UUIDs instead of list[int]
  • Polling every 10-15s (too aggressive — use 45-50s first, then 20s)
  • Batching questions (ask one, poll to completion, then ask next)
  • Using full state names ("Michigan") instead of 2-letter codes ("MI")
  • Including income or employment filters (not supported)
  • Skipping the complete step (you miss AI-generated analysis)
  • Asking closed-ended yes/no questions (use open-ended instead)
  • Asking leading questions ("Don't you think X is great?")
  • Designing questions before researching the product/market
  • Introducing the brand in Q1 (introduce at Q3 earliest to avoid bias)

Limitations

Ditto personas have NOT used your specific product. For:

  • Actual UX feedback from real users → use real user testing
  • Legal/compliance decisions → use human research
  • Safety-critical decisions → use human validation
  • Exact quantitative metrics (NPS, conversion) → use real data

Recommended hybrid: Ditto for the fast first pass (80% of insight), then human research for the remaining 20% requiring real customer nuance.

Error Handling

ErrorCauseFix
409 ConflictStudy already completedRetry with "force": true
429 Too Many RequestsRate limitedWait 30-60s, serialize requests
0 agents returnedFilters too narrowBroaden: remove state/industry, widen age
Job status failedPersona generation errorReport partial failure, don't auto-retry
500/502/504Server errorWait 15-30s, retry once

Further Reading

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.98%
按下载量换算108

Claude

31.51%
按下载量换算97

Cursor

19.16%
按下载量换算59

Gemini CLI

10.67%
按下载量换算33

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

未通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills