NoahAI medical conference query

v1.0.4

Search medical conference and presentation databases. Use this skill whenever the user asks about medical conferences, academic conferences, session abstract...

1· 68·0 current·0 all-time
byyichen@bombert
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the actual behavior: the scripts call a Noah API (https://www.noah.bio) to search conferences and presentations. Requested items (python3 and NOAH_API_TOKEN) are appropriate for this functionality.
Instruction Scope
SKILL.md instructs running the included Python scripts with JSON params; scripts only read provided params/files and the NOAH_API_TOKEN env var. Note: scripts print the full endpoint and query payload to stderr (for debugging) and can save results to a local file; this may expose query contents in logs.
Install Mechanism
No install spec (instruction-only) which means nothing is installed automatically — low risk. The code requires the third-party Python library 'requests' but the metadata does not list Python package dependencies; scripts will error and instruct how to install requests if missing.
Credentials
Only NOAH_API_TOKEN is required and is declared as the primary credential. That is proportional to a service that authenticates API calls. The code does not read any other environment variables or config paths.
Persistence & Privilege
The skill is not always-enabled and does not request elevated or persistent system privileges; it does not attempt to modify other skills or system settings.
Assessment
This package appears to do what it says: it sends queries (and your NOAH_API_TOKEN) to https://www.noah.bio and returns results. Before installing: 1) Verify you trust noah.bio and that the token you provide is scoped only to the needed API (avoid reusing high-privilege tokens). 2) Be aware the scripts log the full query payload and endpoint to stderr — avoid including sensitive PII in queries or run in an isolated environment. 3) Ensure Python 3 and the 'requests' package are available (the scripts will prompt to pip install requests if missing). 4) If you need stronger assurance, request the publisher/source information or review the live network traffic (e.g., with a proxy) to confirm only the documented endpoints are contacted.

Like a lobster shell, security has layers — review code before you run it.

latestvk9709ptmsyk82w061fsb3bjcjh842n3a

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

🔍︎ Clawdis
Binspython3
EnvNOAH_API_TOKEN
Primary envNOAH_API_TOKEN

SKILL.md

Conference Search Skill

This skill searches a conference and presentation database using three independent scripts. Choose the script that fits the task — each can be used standalone, or combined in sequence.


Scripts Overview

ScriptWhen to use
scripts/search_conferences.pyFind conferences by name, date, location, or therapeutic area
scripts/search_presentations.pyFind abstracts/presentations when you already know the conference name or series
scripts/search_chained.pyDiscover the conference first, then auto-inject its name into a presentation search

Script 1 — Search Conferences Only

Use when the user asks about which conferences exist, when/where they are held, or wants to browse conferences by area or organization.

python scripts/search_conferences.py --params '<JSON>'
python scripts/search_conferences.py --params-file query.json
python scripts/search_conferences.py --params '<JSON>' --raw
python scripts/search_conferences.py --params '<JSON>' --output results.json

Query fields

FieldTypeDescriptionExample
conference_namestrFull or partial conference name"ASCO Annual Meeting 2024"
conference_start_datestrStart date (YYYY-MM-DD)"2024-06-01"
conference_end_datestrEnd date (YYYY-MM-DD)"2024-06-05"
conference_locationstrCity, country, or venue"Chicago"
series_namestrConference series name"ASCO"
series_organizationstrOrganizing body"American Society of Clinical Oncology"
series_areaList[str]Therapeutic area(s)["oncology", "cardiology"]
from_nintPagination offset0
sizeintResults per page10

Examples

# Find all ASCO conferences
python scripts/search_conferences.py --params '{"series_name": "ASCO"}'

# Oncology conferences in Chicago in 2024
python scripts/search_conferences.py --params '{"series_area": ["oncology"], "conference_location": "Chicago", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}'

# Cardiology conferences, raw JSON
python scripts/search_conferences.py --params '{"series_area": ["cardiology"]}' --raw

Result fields

conference_name, conference_abbreviation, conference_website, conference_description, conference_start_date, conference_end_date, conference_location, series_id, series_name, series_abbreviation, series_website, series_organization, series_area


Script 2 — Search Presentations Only

Use when the user asks about specific drugs, diseases, targets, authors, or institutions and already knows (or doesn't need to filter by) an exact conference. The series_name field is sufficient for most queries.

python scripts/search_presentations.py --params '<JSON>'
python scripts/search_presentations.py --params-file query.json
python scripts/search_presentations.py --params '<JSON>' --raw
python scripts/search_presentations.py --params '<JSON>' --output results.json

Query fields

FieldTypeDescriptionExample
authorsList[str]Presenter / author name(s)["John Smith"]
institutionsList[str]Author institution(s)["MD Anderson"]
drugsList[str]Drug name(s)["pembrolizumab"]
diseasesList[str]Disease / indication(s)["lung cancer", "NSCLC"]
targetsList[str]Biological target(s)["PD-1", "VEGF"]
conference_namestrExact conference name"2024 ASCO Annual Meeting"
series_namestrConference series name"ESMO"
from_nintPagination offset0
sizeintResults per page10

Examples

# Pembrolizumab lung cancer abstracts at ESMO
python scripts/search_presentations.py --params '{"drugs": ["pembrolizumab"], "diseases": ["lung cancer"], "series_name": "ESMO"}'

# KRAS G12C data from MD Anderson researchers
python scripts/search_presentations.py --params '{"targets": ["KRAS G12C"], "institutions": ["MD Anderson"]}'

# All presentations at a specific conference (exact name required)
python scripts/search_presentations.py --params '{"conference_name": "2024 ASCO Annual Meeting", "diseases": ["NSCLC"]}'

# Save to file
python scripts/search_presentations.py --params '{"drugs": ["nivolumab"]}' --output results.json

Result fields

session_title, presentation_title, presentation_website, main_author, main_author_institution, authors, institutions, abstract, design, efficacy, safety, summary, drugs, diseases, targets, series_name, conference_name


Script 3 — Chained Search (Conference → Presentation)

Use when you need to find the exact conference first, then search its presentations. The top-matching conference_name from Step 1 is automatically injected into Step 2 — no manual copy-paste needed.

python scripts/search_chained.py \
    --conference-params '<JSON>' \
    --presentation-params '<JSON>'

# With file inputs
python scripts/search_chained.py \
    --conference-params-file conf.json \
    --presentation-params-file pres.json

# Raw JSON + save to file
python scripts/search_chained.py \
    --conference-params '<JSON>' \
    --presentation-params '<JSON>' \
    --raw --output results.json

Examples

# PD-1 data at ASCO 2024 (auto-resolves conference name)
python scripts/search_chained.py \
    --conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
    --presentation-params '{"targets": ["PD-1"]}'

# Roche bispecific antibodies at hematology conferences
python scripts/search_chained.py \
    --conference-params '{"series_area": ["hematology"]}' \
    --presentation-params '{"drugs": ["bispecific antibody"], "institutions": ["Roche"]}'

Choosing the Right Script

User asks about conferences / dates / locations
  → search_conferences.py

User asks about drug / disease / abstract data, knows the series (e.g. "at ESMO")
  → search_presentations.py  (use series_name field)

User asks about drug / disease / abstract data, knows the year but not exact conference name
  → search_chained.py  (resolves conference_name automatically)

Fallback Search Strategies

When an initial query returns zero or poor results, try these strategies in order:

Strategy 1 — Conference Name / Series Variant Expansion

Conference abbreviations and full names are often stored inconsistently. Try common variants before giving up.

# Try abbreviation first, then full name
python scripts/search_conferences.py --params '{"series_name": "ASCO"}'
python scripts/search_conferences.py --params '{"series_name": "American Society of Clinical Oncology"}'

# Try alternate known abbreviations
# ESMO → "European Society for Medical Oncology"
# AHA  → "American Heart Association"
# ACC  → "American College of Cardiology"

For presentations, switch from conference_name (exact match) to series_name (fuzzy):

# Exact match — fails if name is slightly off
--params '{"conference_name": "2024 ASCO Annual Meeting", ...}'

# Safer fallback — use series instead
--params '{"series_name": "ASCO", ...}'

Strategy 2 — Switch to Chained Search

If search_presentations.py returns nothing with a manually typed conference_name, the name is likely mismatched. Let search_chained.py resolve it automatically.

# Instead of (may fail on exact name mismatch):
python scripts/search_presentations.py \
  --params '{"conference_name": "ASCO 2024", "drugs": ["pembrolizumab"]}'

# Use chained (auto-resolves correct conference_name):
python scripts/search_chained.py \
  --conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
  --presentation-params '{"drugs": ["pembrolizumab"]}'

Strategy 3 — Drug / Disease Term Expansion

Drug names and disease terms in abstracts may use brand names, INNs, aliases, or abbreviations. Expand the drugs or diseases list to cover variants.

# Expand drug name variants
--params '{"drugs": ["SHR-A1904", "SHR A1904", "A1904"], "series_name": "ASCO"}'

# Expand disease terms (specific → broad)
--params '{"diseases": ["NSCLC", "non-small cell lung cancer", "lung cancer"], "series_name": "ESMO"}'

# Try target if drug name fails entirely
--params '{"targets": ["CLDN18.2", "Nectin-4"], "series_name": "ASCO"}'

Strategy 4 — Institution-First Search

When drug name and disease matching both fail, anchor on the presenting institution or author and filter results locally.

# Broad institutional pull
python scripts/search_presentations.py \
  --params '{"institutions": ["Jiangsu Hengrui", "Hengrui Medicine"], "series_name": "ASCO", "size": 100}'

# Then filter locally by drug name pattern or disease keyword

Strategy 5 — Relax Filters Incrementally

Drop constraints one at a time in this order:

  1. Remove conference_name → use series_name only
  2. Remove date range constraints
  3. Broaden diseases (e.g. "NSCLC""lung cancer""cancer")
  4. Remove series_name to search across all conferences
  5. Search by targets alone if drug name is unknown

Decision Tree

Query returns results?
├── Yes → present results
└── No (presentations) →
      Strategy 1: switch conference_name → series_name
      └── Still no → Strategy 2: switch to search_chained.py
                     └── Still no → Strategy 3: expand drugs / diseases / targets terms
                                    └── Still no → Strategy 4: institution anchor + local filter
                                                   └── Still no → Strategy 5: relax filters incrementally

No (conferences) →
      Strategy 1: try series abbreviation ↔ full name swap
      └── Still no → broaden series_area or remove location filter

Any step hits HTTP 429?
└── Pause entire chain 30s → resume from current strategy
    (sleep ≥5s between every request to avoid triggering 429)

Conversion Examples

User: "What PD-1 drug data was presented at ASCO 2024?"

python scripts/search_chained.py \
  --conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
  --presentation-params '{"targets": ["PD-1"]}'

User: "Pembrolizumab lung cancer abstracts from ESMO"

python scripts/search_presentations.py \
  --params '{"drugs": ["pembrolizumab"], "diseases": ["lung cancer"], "series_name": "ESMO"}'

User: "Oncology conferences in Chicago 2024"

python scripts/search_conferences.py \
  --params '{"series_area": ["oncology"], "conference_location": "Chicago", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}'

User: "KRAS G12C presentations by MD Anderson researchers"

python scripts/search_presentations.py \
  --params '{"targets": ["KRAS G12C"], "institutions": ["MD Anderson"]}'

User: "Roche bispecific antibody data at hematology conferences"

python scripts/search_chained.py \
  --conference-params '{"series_area": ["hematology"]}' \
  --presentation-params '{"drugs": ["bispecific antibody"], "institutions": ["Roche"]}'

Tips

  • If no results are returned, try relaxing filters (e.g. use series_name instead of conference_name, or broaden the disease term).
  • conference_name in search_presentations.py must be an exact match — use search_chained.py or run search_conferences.py first to get the correct name.
  • All List[str] fields accept multiple values: ["NSCLC", "lung cancer"].

Dependencies

  • Python 3.8+
  • requests library (pip install requests)
  • Environment variable NOAH_API_TOKEN — register at noah.bio to obtain your API key.

Security & Packaging Notes

  • This skill only calls NoahAI official HTTPS endpoints under https://www.noahai.bio/api/ and does not contact third-party services.
  • It requires exactly one environment variable: NOAH_API_TOKEN. Store it in the environment or a local .env file, and never place it inline in commands, chats, or packaged files.
  • The token is scoped to read medical public details only and cannot access private user records.
  • The skill does not intentionally persist request parameters locally. Any server-side retention is determined by the NoahAI API service and its operational logging policies.
  • It does not request persistent or system-level privileges and does not modify system configuration.
  • The skill is source-file based (Python scripts only) and does not require runtime installs, package downloads, or external bootstrap steps.

Files

4 total
Select a file
Select a file to preview.

Comments

Loading comments…