
Security News
Socket Releases Free Certified Patches for Nuxt Security Vulnerabilities
Socket releases free Certified Patches for high-severity Nuxt vulnerabilities, including server-side remote code execution through server island props.
@tyroneross/blog-content-scraper
Advanced tools
Intelligent web scraper SDK for extracting blog/news content. Supports RSS, sitemaps, and HTML with automatic detection.
Intelligent web scraper for extracting blog/news content from any website. Includes both a web UI for testing and a programmatic SDK for integration.
import { scrapeWebsite } from './lib';
const result = await scrapeWebsite('https://techcrunch.com', {
maxArticles: 5,
extractFullContent: true
});
for (const article of result.articles) {
console.log(article.title, article.qualityScore);
}
See SDK Documentation below for full API reference.
Standalone web application for testing web scraping with intelligent content filtering. Built with Next.js, Mozilla Readability, and zero LLM dependencies.
npm install
npm run dev
http://localhost:3000
npm install -g vercel
vercel
vercel --prod
npm run build
.next
netlify deploy --prod
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
docker build -t scraper-app .
docker run -p 3000:3000 scraper-app
Tier 1: URL Deny Patterns
Tier 2: Content Validation
Tier 3: Metadata Scoring
scraper-app/
├── app/
│ ├── api/scraper-test/ # API route
│ │ └── route.ts
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Homepage
│ └── globals.css # Global styles
├── components/
│ ├── ScraperTester.tsx # Main UI component
│ └── ScraperResults.tsx # Results display
├── lib/
│ ├── types.ts # TypeScript types
│ ├── quality-scorer.ts # Quality scoring logic
│ └── content-extractor.ts # Content extraction
├── public/ # Static assets
├── package.json
├── tsconfig.json
├── tailwind.config.ts
└── next.config.js
No environment variables required! The app works out of the box.
The 92.2% F1 score claim for Mozilla Readability is validated through automated testing using two approaches:
Uses the established Dragnet benchmark dataset - a well-documented, peer-reviewed dataset used in academic research:
npm run test:f1:dragnet
Results: 91.4% F1 score (0.8% from claimed 92.2%)
Quick validation with curated test articles:
npm run test:f1
Results: 96.3% F1 score
What is F1 Score?
Conclusion: The 92.2% F1 claim is validated using the established Dragnet benchmark dataset (91.4% achieved).
See tests/README.md for detailed testing documentation and how to add new test cases.
MIT
Contributions welcome! Areas for improvement:
The SDK provides programmatic access to the scraping engine without the web UI.
npm install
import { scrapeWebsite } from './lib';
const result = await scrapeWebsite('https://example.com/blog', {
maxArticles: 10, // Max articles to return (default: 10)
extractFullContent: true, // Get full article text (default: true)
qualityThreshold: 0.5, // Min quality score 0-1 (default: 0.5)
sourceType: 'auto', // 'auto' | 'rss' | 'sitemap' | 'html'
allowPaths: ['/blog/*'], // Only scrape these paths
denyPaths: ['/about'], // Skip these paths
onProgress: (done, total) => console.log(`${done}/${total}`)
});
{
url: string;
detectedType: 'rss' | 'sitemap' | 'html';
articles: Array<{
url: string;
title: string;
publishedDate: string;
description?: string;
fullContent?: string; // Raw HTML
fullContentMarkdown?: string; // Formatted markdown
fullContentText?: string; // Plain text
qualityScore: number; // 0-1
confidence: number;
source: 'rss' | 'sitemap' | 'html';
}>;
stats: {
totalDiscovered: number;
afterQualityFilter: number;
processingTime: number;
};
errors: string[];
}
import { globalSourceOrchestrator } from './lib';
const result = await globalSourceOrchestrator.processSource(url, {
sourceType: 'auto',
allowPaths: ['/news/*'],
denyPaths: ['/about', '/careers/*']
});
// Enhance with full content (parallel processing)
const enhanced = await globalSourceOrchestrator.enhanceWithFullContent(
result.articles,
10,
{ concurrency: 5, onProgress: (done, total) => {} }
);
import { createRateLimiter } from './lib';
const limiter = createRateLimiter('moderate'); // or 'conservative', 'aggressive'
| Preset | Req/s | Max Concurrent | Per Host |
|---|---|---|---|
| conservative | 1 | 10 | 2 |
| moderate | 2 | 20 | 3 |
| aggressive | 4 | 30 | 5 |
'/blog/*' // Matches /blog/anything
'/news/2024/*' // Matches /news/2024/anything
'/about' // Exact match
Default deny patterns: /, /about/*, /careers/*, /contact/*, /tag/*, /category/*, /login, /signup, /pricing/*
Score weights:
Built with ❤️ using Mozilla Readability
FAQs
Intelligent web scraper SDK for extracting blog/news content. Supports RSS, sitemaps, and HTML with automatic detection.
We found that @tyroneross/blog-content-scraper demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket releases free Certified Patches for high-severity Nuxt vulnerabilities, including server-side remote code execution through server island props.

Security News
An open letter signed by 50 companies, from NVIDIA and Microsoft to Mistral and Hugging Face, urges Washington not to restrict open weight AI.

Security News
/Research
A fake corepack.org site is impersonating the Node.js tool and delivers an infostealer and proxyware to developers who download it.