Skip to content
Back to skills

Slr Automation Guide

ASecurity

Tools and pipelines for automating systematic literature reviews

  • 284 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
researchpythongobashgitapidatabase

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add wentorai/research-plugins --skill slr-automation-guide --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Slr Automation Guide?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Slr Automation Guide
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/wentorai-slr-automation-guide/badge)](https://www.skillsdirectory.com/skills/wentorai-slr-automation-guide)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: slr-automation-guide
description: "Tools and pipelines for automating systematic literature reviews"
metadata:
  openclaw:
    emoji: "πŸ“‹"
    category: "research"
    subcategory: "methodology"
    keywords: ["systematic review", "SLR", "automation", "screening", "PRISMA", "evidence synthesis"]
    source: "https://github.com/asreview/asreview"
---

# Systematic Literature Review Automation Guide

## Overview

Systematic Literature Reviews (SLRs) are rigorous, reproducible surveys of research evidence following protocols like PRISMA and Cochrane. This guide covers tools that automate the most time-consuming steps β€” deduplication, title/abstract screening, full-text assessment, and data extraction β€” using active learning, NLP, and AI agents. Key tools include ASReview, Rayyan, and custom pipelines.

## SLR Pipeline

```
Protocol Definition (PICO, inclusion/exclusion criteria)
         ↓
   Database Search (PubMed, Scopus, Web of Science)
         ↓
   Deduplication (ASReview, Rayyan, or custom)
         ↓
   Title/Abstract Screening (AI-assisted prioritization)
         ↓
   Full-text Assessment (relevance + quality)
         ↓
   Data Extraction (structured tables)
         ↓
   Quality Assessment (risk of bias)
         ↓
   Synthesis + PRISMA Report
```

## ASReview (Active Learning)

```bash
# Install ASReview
pip install asreview

# Launch web interface
asreview lab

# CLI screening
asreview simulate benchmark:van_de_Schoot_2017 \
  -m nb -e tfidf \
  --n_prior_included 5 --n_prior_excluded 5 \
  -o results/simulation.asreview
```

### Python API

```python
import asreview
from asreview import ASReviewData, ReviewSimulate

# Load dataset (RIS, CSV, or Excel)
data = ASReviewData.from_file("search_results.ris")
print(f"Records: {len(data)}")

# Active learning simulation
sim = ReviewSimulate(
    data,
    model="nb",              # Naive Bayes classifier
    feature_extraction="tfidf",
    query_strategy="max",     # Show most likely relevant first
    n_prior_included=5,
    n_prior_excluded=5,
)
sim.review()

# Results: screening order optimized by relevance
print(f"Work saved: {sim.work_saved():.1%}")
# Typically 80-95% of irrelevant papers screened out early
```

## Deduplication

```python
# ASReview deduplication
from asreview.data import ASReviewData

# Merge results from multiple databases
datasets = [
    ASReviewData.from_file("pubmed_results.ris"),
    ASReviewData.from_file("scopus_results.ris"),
    ASReviewData.from_file("wos_results.ris"),
]

merged = ASReviewData.from_dataframe(
    pd.concat([d.df for d in datasets])
)
print(f"Before dedup: {len(merged)}")

# Fuzzy matching on title + DOI
deduplicated = merged.deduplicate()
print(f"After dedup: {len(deduplicated)}")
```

## AI-Assisted Screening

```python
# Custom LLM screening pipeline
from slr_tools import LLMScreener

screener = LLMScreener(
    llm_provider="anthropic",
    criteria={
        "population": "Adults with type 2 diabetes",
        "intervention": "SGLT2 inhibitors",
        "outcomes": "Cardiovascular events",
        "study_types": ["RCT", "cohort", "meta-analysis"],
        "exclusions": ["animal studies", "in vitro", "pediatric"],
    },
)

# Screen abstracts
results = screener.screen_batch(
    records=search_results,
    fields=["title", "abstract"],
    threshold=0.5,  # Include if P(relevant) > 0.5
)

for r in results:
    print(f"[{'INCLUDE' if r.include else 'EXCLUDE'}] "
          f"(p={r.confidence:.2f}) {r.title[:60]}...")
    print(f"  Reason: {r.reason}")
```

## Data Extraction

```python
# Structured data extraction from full-text papers
from slr_tools import DataExtractor

extractor = DataExtractor(
    llm_provider="anthropic",
    schema={
        "study_design": "str",
        "sample_size": "int",
        "population_description": "str",
        "intervention_details": "str",
        "primary_outcome": "str",
        "effect_size": "float",
        "confidence_interval": "str",
        "p_value": "float",
        "follow_up_duration": "str",
        "risk_of_bias": "str",
    },
)

# Extract from PDF
extracted = extractor.extract("paper.pdf")
print(extracted.to_dict())

# Batch extraction
results_df = extractor.extract_batch("fulltext_papers/")
results_df.to_csv("extraction_table.csv")
```

## PRISMA Flow Diagram

```python
# Generate PRISMA 2020 flow diagram
from slr_tools import PRISMAFlow

flow = PRISMAFlow(
    identification={
        "databases": {"PubMed": 1200, "Scopus": 890, "WoS": 650},
        "other_sources": {"citation_search": 45},
    },
    screening={
        "after_dedup": 1850,
        "excluded_title_abstract": 1620,
        "sought_fulltext": 230,
        "not_retrieved": 12,
    },
    included={
        "assessed_fulltext": 218,
        "excluded_fulltext": {
            "wrong_population": 45,
            "wrong_intervention": 32,
            "wrong_outcome": 28,
            "wrong_study_type": 15,
        },
        "final_included": 98,
    },
)

flow.save_svg("prisma_flow.svg")
flow.save_latex("prisma_flow.tex")
```

## Quality Assessment

```python
# Risk of Bias assessment (Cochrane RoB 2)
from slr_tools import RiskOfBias

rob = RiskOfBias(tool="rob2")  # or "robins_i" for non-RCTs

assessment = rob.assess(
    paper="paper.pdf",
    domains=[
        "randomization_process",
        "deviations_from_intervention",
        "missing_outcome_data",
        "outcome_measurement",
        "selection_of_reported_result",
    ],
)

print(f"Overall: {assessment.overall_judgment}")
for domain, judgment in assessment.domain_judgments.items():
    print(f"  {domain}: {judgment}")
```

## Use Cases

1. **Medical SLRs**: Cochrane-style evidence reviews
2. **CS surveys**: Comprehensive literature mapping
3. **Policy reviews**: Evidence synthesis for policy decisions
4. **Thesis literature chapters**: Structured review sections
5. **Grant applications**: Rapid evidence landscape scans

## References

- [ASReview](https://asreview.nl/) β€” Active learning for systematic reviews
- [PRISMA 2020](http://www.prisma-statement.org/) β€” Reporting guidelines
- [Cochrane Handbook](https://training.cochrane.org/handbook)
- [Rayyan](https://www.rayyan.ai/) β€” Collaborative screening platform

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…