Automated GitHub Description & Topics Generator & 1-Second Console Injector
Optimized for SEO, GEO (AI Overviews, ChatGPT, Perplexity), and zero-friction repository setup.
English • 简体中文 • 日本語 • Español
Why This Exists • 1-Click Install • SEO & GEO Standards • How to Use • FAQ
If you are using Antigravity, Claude Code, or other agentic coding assistants, copy and paste this single prompt directly into your chat:
Please install and set up this GitHub metadata automation skill:
https://github.com/Sacilave/github-info-injector.git
After installation, inspect the current repository and generate an automated console injection script for its description and topics.GitHub's repository settings web interface has a well-known friction point:
- No batch paste for Topics: Pasting comma-separated keywords into the Topics input field pastes the entire string as a single tag instead of splitting it into individual tags. Users are forced to type and hit enter up to 20 times manually.
- Suboptimal SEO & GEO copy: Most repository descriptions are either missing, filled with generic buzzwords ("An awesome, blazingly fast library..."), or lack high-density entity keywords required by traditional search engines and AI models (ChatGPT, Perplexity, Google AI Overviews).
github-info-injector solves both issues:
- Analyzes your codebase to generate a function-first, fluff-free English description and up to 20 structured topics.
- Generates a ready-to-run browser console script that leverages native React property setters to inject both Description and all 20 Topics asynchronously in under 2 seconds.
This tool enforces strict information architecture principles:
- Function First, Modifiers Last:
- ❌ Fluff: "The most revolutionary and blazing-fast multi-threaded HTTP crawler for developers."
- ✅ Function-first: "HTTP crawler to extract structured HTML datasets with asynchronous multi-threading and proxy rotation."
- Length Guardrails:
- Strictly targets 140 to 180 characters to ensure full visibility on GitHub mobile web and Google Search SERP snippets without ellipses truncation.
- Entity Clustering for Topics:
- Selects up to 20 lowercase kebab-case tags spanning runtime stack, core domain, integrations, and search intents.
- Strict Privacy Sanitization:
- Strips local paths (
C:\Users\...), private keys, service account credentials, internal ports, and corporate intranets.
- Strips local paths (
Run /github-info-injector inside any codebase. The agent will read your manifests (package.json, Cargo.toml, etc.) and docs, then return an automated JavaScript snippet.
- Open your repository on GitHub.
- Click the ⚙️ icon next to About on the right sidebar.
- Press
F12to open DevTools, switch to the Console tab. - Paste the generated snippet and press
Enter. - Click the green Save changes button. Done!
If you want to quickly test the script format manually in your browser console:
(async () => {
const DESCRIPTION = "Automate URL submission to Google Search Indexing API v3 with zero-dependency proxy tunneling.";
const TOPICS = ["google-indexing-api", "seo", "googlebot", "sitemap", "automation", "nodejs"];
const setNativeValue = (el, val) => {
const setter = Object.getOwnPropertyDescriptor(el.__proto__, 'value')?.set ||
Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set ||
Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value')?.set;
if (setter) setter.call(el, val); else el.value = val;
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
};
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
const desc = document.querySelector('input[name="repo_description"]') || document.querySelector('input#repo_description');
if (desc) { desc.focus(); setNativeValue(desc, DESCRIPTION); console.log('✅ Description filled.'); }
const topicInput = document.querySelector('input[name="repo_topics"]') || document.querySelector('input#repo_topics') || document.activeElement;
if (topicInput && Array.isArray(TOPICS)) {
for (const t of TOPICS) {
topicInput.focus();
setNativeValue(topicInput, t);
topicInput.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', code: 'Enter', keyCode: 13, which: 13, bubbles: true }));
topicInput.dispatchEvent(new KeyboardEvent('keyup', { key: 'Enter', code: 'Enter', keyCode: 13, which: 13, bubbles: true }));
await sleep(120);
}
console.log(`✅ ${TOPICS.length} topics added.`);
}
console.log('🎉 Done! Click "Save changes" in GitHub.');
})();Q: Why didn't a regular forEach work on GitHub's topic input?
A: GitHub's web interface utilizes modern React / Primer WebComponents. Tag creation is an asynchronous state transition triggered by Enter key events. A synchronous loop overwrites the input value before React dispatches the tag creation event. This tool uses native prototype property setters and sequential 120ms tick pacing to ensure 100% reliability.Q: Does this require GitHub Personal Access Tokens (PAT)?
A: No. It operates entirely client-side inside your own authenticated browser session via the DevTools console, eliminating token permissions management or credential leakage risks.Distributed under the MIT License.