Analyze funding abstracts and project metadata to identify topic shifts and forecast near-term grant priorities.
52
57%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./scientific-skills/Evidence Insight/funding-trend-forecaster/SKILL.mdID: 200
Version: 1.0.0
Author: OpenClaw Agent
License: MIT
See ## Features above for related details.
scripts/main.py.references/ for task-specific guidance.requests>=2.28.0
beautifulsoup4>=4.11.0
pandas>=1.5.0
numpy>=1.23.0
scikit-learn>=1.1.0
textblob>=0.17.1
nltk>=3.7
matplotlib>=3.6.0
seaborn>=0.12.0
wordcloud>=1.8.0
python-dateutil>=2.8.0See ## Usage above for related details.
cd "20260318/scientific-skills/Evidence Insight/funding-trend-forecaster"
python -m py_compile scripts/main.py
python scripts/main.py --helpExample run plan:
CONFIG block or documented parameters if the script uses fixed settings.python scripts/main.py with the validated inputs.See ## Workflow above for related details.
scripts/main.py.references/ contains supporting rules, prompts, or checklists.Use this command to verify that the packaged script entry point can be parsed before deeper execution.
python -m py_compile scripts/main.pyUse these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.
python -m py_compile scripts/main.py
python scripts/main.py --help
python scripts/main.py --source nih --months 3
python scripts/main.py --forecast --years 3Funding Trend Forecaster is an intelligent analysis tool that uses Natural Language Processing (NLP) technology to analyze awarded project abstracts from major global research funding agencies (NIH, NSF, Horizon Europe) and predict funding preference shift trends for the next 3-5 years.
# Enter skill directory
cd skills/funding-trend-forecaster
# Install dependencies
pip install -r requirements.txt
# Download NLTK data
python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords'); nltk.download('wordnet')"# Run full analysis workflow
python scripts/main.py --analyze-all --output report.json
# Analyze specific agency only
python scripts/main.py --source nih --months 6
# Generate visualization report
python scripts/main.py --visualize --input data.json --output charts/
# View trend forecast
python scripts/main.py --forecast --years 5 --output forecast.jsonfrom scripts.main import FundingTrendForecaster
# Initialize forecaster
forecaster = FundingTrendForecaster()
# Collect data
forecaster.collect_data(sources=['nih', 'nsf', 'horizon_europe'], months=6)
# Execute analysis
results = forecaster.analyze_trends()
# Generate forecast
forecast = forecaster.predict_trends(years=5)
# Export report
forecaster.export_report(output_path='report.pdf', format='pdf')| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--analyze-all | flag | false | No | Run full analysis workflow on all sources |
--source | string | - | No | Specific agency to analyze (nih, nsf, horizon_europe) |
--months | int | 6 | No | Number of months of historical data to analyze |
--years | int | 5 | No | Years ahead for trend prediction |
--visualize | flag | false | No | Generate visualization charts |
--forecast | flag | false | No | Generate trend forecast |
--input, -i | string | - | No | Input data file path (for visualization/forecast) |
--output, -o | string | - | No | Output file path |
--config | string | config.json | No | Path to configuration file |
| Agency | Data Source URL | Update Frequency |
|---|---|---|
| NIH | https://reporter.nih.gov/ | Daily |
| NSF | https://www.nsf.gov/awardsearch/ | Daily |
| Horizon Europe | https://ec.europa.eu/info/funding-tenders/opportunities/ | Weekly |
Create config.json file to customize analysis parameters:
{
"sources": {
"nih": {
"enabled": true,
"base_url": "https://reporter.nih.gov/",
"max_results": 1000
},
"nsf": {
"enabled": true,
"base_url": "https://www.nsf.gov/awardsearch/",
"max_results": 1000
},
"horizon_europe": {
"enabled": true,
"base_url": "https://ec.europa.eu/info/funding-tenders/",
"max_results": 500
}
},
"nlp": {
"language": "en",
"min_word_length": 3,
"max_topics": 20,
"stop_words": ["research", "study", "project"]
},
"forecast": {
"method": "lda_trend",
"confidence_level": 0.95,
"years_ahead": 5
}
}{
"metadata": {
"generated_at": "2024-01-15T10:30:00Z",
"data_period": "2023-07-01 to 2024-01-01",
"sources": ["nih", "nsf", "horizon_europe"],
"total_projects": 15420
},
"trend_analysis": {
"top_keywords": [
{"term": "artificial intelligence", "frequency": 342, "growth": 0.45},
{"term": "climate change", "frequency": 298, "growth": 0.32}
],
"emerging_topics": [
{"topic": "Large Language Models", "projects": 89, "trend": "rising"},
{"topic": "Carbon Capture", "projects": 156, "trend": "stable"}
],
"funding_shifts": {
"increasing": ["AI/ML", "Climate Tech", "Quantum Computing"],
"decreasing": ["Traditional Materials", "Fossil Fuels Research"]
}
},
"forecast": {
"2025": {
"predicted_hot_topics": ["Generative AI", "Gene Editing", "Fusion Energy"],
"confidence": 0.87
},
"2026-2029": {
"long_term_trends": ["AGI Safety", "Personalized Medicine", "Space Mining"],
"confidence": 0.72
}
}
}funding-trend-forecaster/
├── scripts/
│ ├── main.py # Main entry
│ ├── collectors/ # Data collection module
│ │ ├── __init__.py
│ │ ├── nih_collector.py
│ │ ├── nsf_collector.py
│ │ └── horizon_collector.py
│ ├── analyzers/ # NLP analysis module
│ │ ├── __init__.py
│ │ ├── text_processor.py
│ │ ├── topic_modeler.py
│ │ └── trend_detector.py
│ ├── predictors/ # Prediction module
│ │ ├── __init__.py
│ │ └── trend_forecaster.py
│ └── utils/ # Utility module
│ ├── __init__.py
│ ├── config.py
│ └── visualizer.py
├── data/ # Data storage
│ ├── raw/
│ └── processed/
├── output/ # Output directory
├── config.json # Configuration file
├── requirements.txt # Python dependencies
└── SKILL.md # This documentMIT License - See LICENSE file in project root directory
Generated by OpenClaw Agent | Skill ID: 200
Every final response should make these items explicit when they are relevant:
scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.This skill accepts requests that match the documented purpose of funding-trend-forecaster and include enough context to complete the workflow safely.
Do not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:
funding-trend-forecasteronly handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.
Use the following fixed structure for non-trivial requests:
If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.
63c61d3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.