Title: Digigyan SEO Toolkit
Author: vishal_elite
Published: <strong>August 28, 2026</strong>
Last modified: August 28, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/digigyan-seo-toolkit.svg)

# Digigyan SEO Toolkit

 By [vishal_elite](https://profiles.wordpress.org/vishaldmexpert/)

[Download](https://downloads.wordpress.org/plugin/digigyan-seo-toolkit.1.6.5.zip)

 * [Details](https://wordpress.org/plugins/digigyan-seo-toolkit/#description)
 * [Reviews](https://wordpress.org/plugins/digigyan-seo-toolkit/#reviews)
 *  [Installation](https://wordpress.org/plugins/digigyan-seo-toolkit/#installation)
 * [Development](https://wordpress.org/plugins/digigyan-seo-toolkit/#developers)

 [Support](https://wordpress.org/support/plugin/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

 *   [ vishal_elite ](https://profiles.wordpress.org/vishaldmexpert/)

[Translate “Digigyan SEO Toolkit” into your language.](https://translate.wordpress.org/projects/wp-plugins/digigyan-seo-toolkit)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/digigyan-seo-toolkit/),
check out the [SVN repository](https://plugins.svn.wordpress.org/digigyan-seo-toolkit/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/digigyan-seo-toolkit/)
by [RSS](https://plugins.trac.wordpress.org/log/digigyan-seo-toolkit/?limit=100&mode=stop_on_copy&format=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

 * Improved: when a Find & Replace “Find” value contains an [ fragment (e.g. from a DOCX interlinking doc, for removing or repointing an existing link), it’s now matched by href + visible text using a tolerant regex instead of requiring an exact literal HTML match. Extra attributes (target, rel, class), different attribute order, and Elementor’s JSON-escaped quotes/slashes are all tolerated. Plain text-only Find/Replace rows are unaffected — same exact behavior as before.](https://wordpress.org/plugins/digigyan-seo-toolkit/...?output_format=md)

#### 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.](https://wordpress.org/plugins/digigyan-seo-toolkit/...?output_format=md)

#### 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.

## Meta

 *  Version **1.6.5**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.2 or higher **
 * Tags
 * [Alt Text](https://wordpress.org/plugins/tags/alt-text/)[broken links](https://wordpress.org/plugins/tags/broken-links/)
   [bulk](https://wordpress.org/plugins/tags/bulk/)[meta](https://wordpress.org/plugins/tags/meta/)
   [seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/digigyan-seo-toolkit/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/digigyan-seo-toolkit/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/digigyan-seo-toolkit/reviews/)

## Contributors

 *   [ vishal_elite ](https://profiles.wordpress.org/vishaldmexpert/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/digigyan-seo-toolkit/)