Digigyan SEO Toolkit

Description

Digigyan SEO Toolkit gives you nine SEO and content tools under one tabbed admin page. No more editing posts one by one — upload a CSV and let the plugin do the heavy lifting.

SEO Meta Importer

Bulk-update the SEO meta title and meta description for any public URL on your site: pages, posts, category and tag pages, custom taxonomies, custom post types, and the static front page.

Writes to whichever SEO plugin is active — Yoast SEO, Rank Math, All in One SEO, SEOPress, SmartCrawl, and The SEO Framework are all supported.

CSV columns: URL, Meta Title, Meta Description

Image Alt Text Importer

Bulk-set image ALT text across your entire site. Updates the Media Library alt field and the alt attribute on matching <img> tags in your page and post content.

  • If an image already has alt text, it is replaced.
  • Size variants like -1024x768 or -scaled are automatically matched to the same image.

CSV columns: Image URL, Alt Text

Link Fixer

Replace or remove links across your site from a CSV. Works on regular post/page content, Elementor templates, and WordPress menus.

  • Replace a broken URL with a new one.
  • Remove a link entirely (keep the visible text, or replace the href with #).
  • Fix links on a single page or site-wide in one pass.

CSV columns: Page URL, Broken Link, New Link (or “Remove”)

Anchor Text Fixer

Fix a specific link by matching both its anchor text and current URL, then update the anchor text, the URL, or both — changing only that exact link. Works across Gutenberg, the Classic Editor, and Elementor page data.

  • Blank New columns are left unchanged.
  • A New Hyperlink starting with “Remove” removes the link and keeps the visible text.
  • Links matching more than once are flagged for manual review instead of being changed blindly.

CSV columns: Page URL, Current Anchor Text, Current Hyperlink, New Anchor Text, New Hyperlink

H1 Fixer

Fix the two most common H1 audit warnings (multiple H1s and missing H1s) across posts, pages, and Elementor content in one upload. Convert extra H1s to H2 or paragraph, add a missing H1, rename an H1, or promote an H2 to H1. Existing classes and inline styles are preserved.

CSV columns: Page URL, Action (fix-multiple / to-paragraph / add-h1 / rename-h1 / promote-to-h1), H1 Text, Find Text / Convert To

Find & Replace

Search for any text, HTML fragment, or anchor link in your content and replace it site-wide from one CSV, XLSX, or DOCX. Works in the Classic editor, Gutenberg, and Elementor, and can add, remove, or repoint links (including hyperlinks inside a Word document).

CSV / XLSX / DOCX columns: URL, Find Text, Replace With, Old URL, New URL, Anchor Text, Case Sensitive (last four optional)

Canonical

Bulk-set or clear the canonical URL for any post or page from a CSV. Writes to your active SEO plugin: Yoast, Rank Math, All in One SEO, or SEOPress.

CSV columns: URL, Canonical URL

Schema

Bulk-add JSON-LD schema markup by uploading a DOCX or CSV. The schema is stored per page and injected into the page <head> automatically, without affecting schema added by Yoast, Rank Math, or your theme.

CSV columns: URL, Schema JSON (or a DOCX with a Page URL line followed by a JSON-LD script block)

Performance

Reduce the CSS and JS warnings flagged by SE Ranking and Semrush. Minify locally-hosted CSS and JS (originals are never modified — minified copies are cached and served in their place), and generate browser-caching and GZIP/Brotli .htaccess rules you can copy or apply in one click. Every optimization can be toggled off to restore the previous state.

General Features

  • The CSV/DOCX tools run batched inside wp-admin with pause/resume support — safe for large sites and shared hosting.
  • Downloadable CSV reports after each run.
  • Sample CSV/DOCX download button on each tab.
  • Works with Yoast, Rank Math, All in One SEO, SEOPress, SmartCrawl, and The SEO Framework where relevant.
  • No external API calls; everything runs locally on your server.

Installation

  1. Upload the digigyan-seo-toolkit folder to the /wp-content/plugins/ directory, or install directly through the WordPress plugin screen.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Navigate to Digigyan SEO Toolkit in the left admin menu.
  4. Choose a tab (SEO Meta, Alt Text, Link Fixer, Anchor Text, H1 Fixer, Find & Replace, Canonical, Schema, or Performance), download its sample file, fill it in, and upload. (Performance has no upload — just toggles.)

FAQ

Which SEO plugins are supported by the SEO Meta tab?

Yoast SEO, Rank Math, All in One SEO, SEOPress, SmartCrawl, and The SEO Framework. If none are active, the plugin writes to standard WordPress post meta as a fallback.

Will it overwrite existing alt text or meta that I’ve already set?

Yes — if a value exists it will be replaced. Filter out rows you want to skip before uploading.

Is it safe to use on a large site?

Yes. Processing is batched (5 rows per batch by default) with pause/resume support. Safe on shared hosting with restrictive PHP timeouts.

Does it work with Elementor?

Yes. The Alt Text and Link Fixer tools handle Elementor page data, header/footer, and global widget templates.

Does it add any output to the public site?

No. The plugin is entirely admin-only.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Digigyan SEO Toolkit” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Digigyan SEO Toolkit” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.6.5

  • Removed: CSS/JS file-based minification feature (wrote .css/.js files to uploads, which is not permitted by the WordPress Plugin Directory guidelines). Browser caching and GZIP .htaccess rules and JS defer are unaffected.

1.6.4

  • Fix: JSON-LD </script> escaping is now case-insensitive (preg_replace with the i flag) so mixed-case variants such as </SCRIPT> can no longer break out of the JSON-LD block; the previous str_replace chain was also double-escaping already-escaped sequences.

1.6.3

  • Renamed: Plugin is now Digigyan SEO Toolkit (previously Bulk SEO Toolkit) — all internal slugs, upload paths, and text domains updated accordingly.
  • Improvement: Admin CSS and JavaScript are now properly enqueued via the admin_enqueue_scripts hook using wp_register_style / wp_add_inline_style and wp_register_script / wp_add_inline_script, replacing the previous inline <style> / <script> output.
  • Improvement: Find & Replace, Canonical, and Schema batch scripts now pass their nonce and AJAX URL through wp_localize_script instead of inline JS variables.
  • Fix: Removed the upgrader_package_options filter that was no longer needed.
  • Fix: JSON-LD output now escapes </script> sequences inside the schema JSON to prevent HTML parser breakout.
  • Fix: Admin path resolution now uses WP_CONTENT_DIR + content_url() for reliable URL-to-filesystem mapping instead of ABSPATH.
  • Fix: Copy Log button now checks window.isSecureContext === true (strict boolean) before attempting the Clipboard API — previously !== false passed undefined as truthy on some environments, causing a silent failure on non-HTTPS admin URLs.

1.6.2

  • Fix: Schema JSON validation was rejecting otherwise-correct JSON-LD pasted from a DOCX because Word commonly stores indentation/spacing as non-breaking spaces (U+00A0) rather than plain spaces — valid to the eye, but not valid JSON whitespace per RFC 8259, so json_decode() reported “Syntax error” even on visually-correct JSON. The extracted JSON is now normalized (NBSP and several other invisible Unicode space variants converted to plain ASCII space/newline) before validation.

1.6.1

  • Fix: Find & Replace reported “Updated” for a row even when Find and Replace were identical text (a common no-op row, or one whose only real difference was a hyperlink that didn’t survive DOCX import) — str_replace()’s match count was being treated as a real-change count. The report/console now correctly show “No changes: Find and Replace produce identical text — nothing to update” instead of a false “Updated”, and the Elementor path no longer writes to the database when nothing actually changed.
  • Added: DOCX import now preserves bold/italic per Word run (not just hyperlinks), and Find & Replace uses it to decide formatting intent — if a suggestion doesn’t mention formatting, any existing / wrapping the matched live text is preserved around the replacement; if the doc explicitly shows Find as bold and Replace as not (or vice versa), that explicit change is applied instead.

1.6.0

  • Added: real “Download sample DOCX” buttons for Find & Replace and Schema (the two tools that accept DOCX), generated on the fly in the exact format their parsers expect — including worked examples of adding, removing, and repointing a Word hyperlink for Find & Replace, since that can’t be shown in a CSV. Schema also gained a “Download sample CSV” button it was previously missing entirely.
  • Fix: Schema’s DOCX “Page URL”/”URL”/”Page” line detection had the same single-character-separator limitation as Find & Replace — hardened to accept colon, hyphen, en dash, or em dash in any combination.

1.5.9

  • Fix: the DOCX “Page URL:”/”Find With:”/”Replace With:” label parser required an exact colon separator, so real-world docs broke it two different ways — “Page URL: – https://…” (colon plus a dash before the value corrupted the captured URL/text with a leading “- “) and “URL – https://…” (an en dash instead of a colon meant the label was never recognized at all, so nothing parsed). The separator is now tolerant of a colon, hyphen, en dash, or em dash in any combination, so both styles parse correctly.

1.5.8

  • Improved: the “Yoast SEO scores cleared” notice after a SEO Meta run previously only said scores would update “the next time each post is opened in the editor” — requiring opening every post individually. It now links directly to Yoast’s own SEO Tools page, where the “SEO data” section’s “Start SEO data optimization” button recalculates every post’s score server-side in one click, without opening them one by one. (Rank Math already had this same direct link; Yoast was missing it.)

1.5.7

  • Fix: the “Copy log” button previously showed “Copied!” even when the copy silently failed (e.g. non-HTTPS admin, an unfocused document, or an older browser blocking the Clipboard API), since the fallback path didn’t check whether document.execCommand(“copy”) actually succeeded. It now verifies success, and if programmatic copy truly isn’t possible, highlights the console text and shows “Selected — press Ctrl+C” so you can still copy it manually instead of the button doing nothing.

1.5.6

  • Fix: SEO Meta’s column auto-detection now recognizes “keyphrase” as a synonym for “keyword” (Yoast’s own UI calls this field “Focus keyphrase,” not “Focus keyword”) — files using that header were previously rejected with “no column header containing title/desc/keyword.” Also, when a file has both a “before” column (Current/Existing/Old Focus Keyphrase) and a “target” column (Recommended/New/Suggested), the target column is now always the one written — the before column is explicitly excluded, matching the same rule already used for Title/Description columns.

1.5.5

  • Fix: SEO Meta, Alt Text, Link Fixer, Anchor Text Fixer, and H1 Fixer all accept .xlsx server-side (in addition to .csv) but their file picker only allowed selecting .csv and the button said “Load CSV”. The file input now allows .xlsx too, and the button reads “Load File” on every tab (matching Schema, which already accepted CSV/XLSX/DOCX).

1.5.4

  • Fix: Alt Text previously reported “Not found” for any row where nothing changed, even when the Media Library attachment was found successfully but its alt text already matched the CSV’s target value (e.g. set correctly by a prior run). It now distinguishes that case — reported as “Already up to date” / skipped — from a genuine no-match, so an existing, correctly-tagged image no longer looks like a matching failure.

1.5.3

  • Fix: Alt Text’s Media Library lookup (seobulkkit_alt_find_attachment_id_by_url) previously stripped “-scaled” from the search filename and required an exact tail match, so it missed images where WordPress’s own big-image auto-scaling made “-scaled” a permanent part of the primary attached file’s path (not just a resized derivative). The lookup now matches on filename stem + extension with the suffix optional either way, so these rows are found correctly instead of reporting “could not be matched anywhere.”

1.5.2

  • Improved: the live console now shows what was actually written, not just that a row succeeded — SEO Meta shows which of Title/Description/Keyword changed and their new text; Alt Text shows the new alt text; Canonical shows the new canonical URL; Link Fixer/Anchor Text Fixer/Find & Replace show the old new value; H1 Fixer shows the new heading text.

1.5.1

  • Fix: URL resolution (used by SEO Meta, Find & Replace, Canonical, Schema, H1 Fixer, Link Fixer, and Anchor Text Fixer) now strips a stray trailing period/comma/semicolon/colon/exclamation/question-mark from a URL before resolving it — a common artifact when a URL was the last word of a sentence in a source document (e.g. “…page-slug/.” instead of “…page-slug/”), which previously made the row fail with “URL could not be resolved to a post.”

1.5.0

  • Added: every batch tool (SEO Meta, Alt Text, Link Fixer, Anchor Text Fixer, H1 Fixer, Find & Replace, Canonical, Schema) now shows a live scrolling “Live progress” console while a batch job runs — each page/URL as it’s processed, with its outcome (updated/skipped/not-found) and a timestamp. Includes a running elapsed-time indicator and a “Copy log” button to copy the full session log to the clipboard.

1.4.2

1.4.1

  • Fix: the CSV/XLSX/DOCX importer for Find & Replace previously read only plain visible text out of uploaded DOCX files, silently discarding any Word hyperlinks. For “interlinking suggestion” documents where the “Replace With” paragraph differs from “Find With” only by a hyperlink wrapped around one phrase, this meant Find and Replace came out byte-identical — the tool reported “Updated” for every row but never actually inserted a link anywhere. The DOCX parser now resolves each against the document’s relationships and embeds it as a real in the extracted text, so these interlinks are now actually inserted.

1.4.0

  • Added: Find & Replace now shows a live scrolling console during Process One Batch / Auto-Run, listing each page URL as it’s processed with its outcome (updated / skipped / not matched) — previously the UI only showed an aggregate percentage with no per-page detail.

1.3.9

  • Fix: seobulkkit_clear_page_caches() now also purges WP Rocket (rocket_clean_domain / rocket_clean_minify), which was missing from the supported cache-plugin list. This is the specific cache plugin running on sites where the report said “Replaced”/”Fixed” but the live page kept showing the old broken link — the database write was correct, WP Rocket’s cached HTML just was never invalidated.

1.3.8

  • Fix: Link Fixer (and Anchor Text Fixer’s URL matching) now tolerates a trailing empty hash fragment (“#” or “#/”) on the live href when matching against the “Broken Link” URL from the CSV. Some themes/page builders append “#/” to links; previously that made the match exact-fail and the row was reported “not found” even though the link was really there.

1.3.7

  • Fix: Link Fixer, Alt Text, Anchor Text, Find & Replace, Canonical URL, and H1 Fixer jobs now purge known page-cache plugins (WP Fastest Cache, W3 Total Cache, WP Super Cache, LiteSpeed Cache, Autoptimize) when a batch finishes, matching what the SEO Meta and Schema tools already did. Previously the database was updated correctly (and the report showed “Updated”/”Fixed”), but a caching plugin could keep serving the old cached page, making it look like nothing changed on the live site.
  • Improved: redesigned the admin dashboard — icon header, pill-style tab navigation with per-tool icons, card-based panels, and polished progress bars/info boxes across all nine tools.

1.0.0

  • Initial release.
  • SEO Meta Importer: supports Yoast, Rank Math, All in One SEO, SEOPress, SmartCrawl, The SEO Framework.
  • Image Alt Text Importer: updates Media Library alt field and inline img tags.
  • Link Fixer: replace or remove links in post content, Elementor templates, and WordPress menus.
  • Anchor Text Fixer: match a link by anchor text and URL, then update its anchor text and/or destination.
  • Batched processing with pause/resume and downloadable CSV reports.