Scholarship Pulse Auto Publisher
Open-source WordPress plugin that finds scholarship announcements from trusted feeds and authorized social APIs, removes duplicates, extracts deadlines, and builds daily roundup tables.
by Fully Funded Scholarships · github.com/yousafsaeed1990-design/scholarship-pulse-wordpress · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/yousafsaeed1990-design/scholarship-pulse-wordpress/archive/refs/heads/main.zipReadme
Scholarship Pulse Auto Publisher for WordPress
Scholarship Pulse is an open-source WordPress plugin that collects recently announced scholarships, fellowships, studentships, grants, bursaries, and internships from administrator-approved sources, removes duplicates, extracts clearly stated deadlines, and creates one daily roundup table.
The project is maintained by Fully Funded Scholarships, an international scholarship and higher-education news platform.
Editorial principle: automation should assist scholarship editors, not replace source verification. The plugin creates drafts by default.
What it does
- Reads up to 50 administrator-approved RSS or Atom feeds.
- Optionally queries X recent search using the site owner's bearer token.
- Optionally reads posts from one Facebook Page through an authorized Page access token.
- Filters items by configurable scholarship-related keywords.
- extracts a deadline only when terms such as
deadline,closing date,apply by, orapplications closeappear near a date. - Rejects opportunities whose extracted deadlines have already passed.
- Deduplicates by normalized destination URL and normalized title.
- Remembers seen opportunities for 180 days.
- Creates or updates a single roundup post for the current date.
- Supports draft or automatic-publish mode, category selection, author selection, and a manual Run now button.
- Includes a WP-CLI command:
wp scholarship-pulse run. - Exposes filters for custom providers and final post customization.
Why it does not scrape arbitrary social pages
X and Meta require authenticated API access for reliable programmatic collection. This plugin does not bypass login screens, anti-bot systems, rate limits, robots rules, paywalls, or platform permissions. It accepts feeds and credentials that the WordPress administrator is entitled to use.
That makes the repository safer, more maintainable, and more useful than a brittle HTML scraper.
Installation
- Download the latest release ZIP.
- In WordPress, open Plugins → Add New → Upload Plugin.
- Upload the ZIP and activate Scholarship Pulse Auto Publisher.
- Open Settings → Scholarship Pulse.
- Add one trusted RSS or Atom URL per line.
- Keep the article status set to Draft while testing.
- Click Fetch and build roundup.
- Inspect the generated table, source links, eligibility relevance, and deadlines.
- Switch to automatic publishing only after your feeds consistently produce accurate results.
Example source strategy
Use official or permissioned sources wherever possible:
- University news and funding RSS feeds.
- Government scholarship and education-ministry feeds.
- Research council, foundation, and funding-body feeds.
- Authorized Facebook Pages managed by your organization.
- An authenticated X search restricted to trusted accounts or domains.
- Public Atom/RSS feeds from communities that permit automated access.
A tightly curated list of 15 official feeds will usually outperform a noisy search across the entire social web.
Suggested X query
(scholarship OR fellowship OR studentship) has:links -is:retweet lang:en
For better accuracy, restrict searches to trusted accounts:
(from:TrustedUniversity OR from:FundingAgency) (scholarship OR fellowship) has:links -is:retweet
X API usage may be billable. Review current X developer pricing before enabling this provider.
Daily schedule and WP-Cron
The plugin schedules one daily WP-Cron event. WP-Cron is traffic-driven, so a low-traffic site may execute the event later than expected. Sites requiring an exact publishing time should trigger WordPress cron from the hosting control panel or a real system cron.
Example server cron command:
*/15 * * * * curl -fsS https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Use the correct site URL and follow your host's guidance.
Deduplication logic
Each accepted opportunity receives two hashes:
- A canonicalized URL hash after common tracking parameters are removed.
- A normalized-title hash after punctuation and promotional phrases are removed.
An item is skipped when either hash has already been stored. Hashes are retained for 180 days and are written only after WordPress successfully saves the roundup.
Deadline extraction limits
The deadline parser is deliberately conservative. It recognizes common English formats only when deadline wording appears near the date, including:
Deadline: September 30, 2026Applications close 30 September 2026Apply by 2026-09-30Closing date: 30/09/2026Rolling basis
It does not crawl every linked webpage or use an AI model to infer missing deadlines. A source may extend, change, localize, or separately define programme deadlines. Every generated article therefore includes a verification warning.
Extending the plugin
Add records from another permitted provider:
add_filter( 'ffs_sp_collected_items', function ( array $items, array $settings ): array {
$items[] = array(
'title' => 'Example International Scholarship 2027',
'description' => 'Applications close 30 September 2026.',
'url' => 'https://example.edu/scholarship',
'source_url' => 'https://example.edu/news/announcement',
'source' => 'Example University',
'published' => time(),
'provider' => 'Custom API',
);
return $items;
}, 10, 2 );
Modify the WordPress post before it is saved:
add_filter( 'ffs_sp_before_publish', function ( array $post, array $items, array $settings ): array {
$post['post_status'] = 'pending';
return $post;
}, 10, 3 );
Security and privacy
- Settings require the
manage_optionscapability. - The manual action uses a WordPress nonce.
- Remote API requests use WordPress safe HTTP functions.
- API credentials are never included in the run log.
- Credentials must never be committed to GitHub.
- The plugin does not send analytics or administrator data to the maintainer.
- Feed URLs are administrator-controlled; add only trusted public endpoints.
See SECURITY.md for responsible disclosure guidance.
Development status
Version 1.0.0 is an initial public release. The PHP files have been syntax-checked, but every publisher should test the plugin on a staging site with its own theme, editorial workflow, feeds, API permissions, caching, and cron setup before production use.
Requirements
- WordPress 6.2 or later.
- PHP 7.4 or later.
- HTTPS and outbound HTTP access for external providers.
- Optional X developer bearer token.
- Optional Meta Page ID and authorized Page access token.
License
Scholarship Pulse Auto Publisher is licensed under the GNU General Public License v2.0 or later.
Contributing
Bug reports, new permitted provider adapters, parser tests, accessibility improvements, and documentation fixes are welcome. Read CONTRIBUTING.md before opening a pull request.