Ccfddl X Posts
ccfddl/ccf-deadlines
Prepare and, with a verified authenticated publishing route and authorization, publish daily conference-deadline countdown posts for @ccfddl on X/Twitter.
Set up, override, and debug the default SEO head tags in a Nuxt app with the nuxt-seo-utils module.
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utils --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nuxt-seo-utils .claude/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .claude/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utilsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utils --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/nuxt-seo-utils .agents/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .agents/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utils --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/nuxt-seo-utils .cursor/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .cursor/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/harlan-zw/nuxt-seo-utils.git --path skills/nuxt-seo-utils--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utils --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/nuxt-seo-utils .gemini/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .gemini/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utilsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/nuxt-seo-utils .github/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .github/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install harlan-zw/nuxt-seo-utils nuxt-seo-utils --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/harlan-zw/nuxt-seo-utils.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/nuxt-seo-utils .opencode/skills/nuxt-seo-utils && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "nuxt-seo-utils" agent skill from https://github.com/harlan-zw/nuxt-seo-utils/tree/main/skills/nuxt-seo-utils into .opencode/skills/nuxt-seo-utils/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nuxt-seo-utils", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
nuxt-seo-utilsSet up, override, and debug the default SEO head tags in a Nuxt app with the nuxt-seo-utils module.
Nuxt SEO Utils is an agent skill from harlan-zw/nuxt-seo-utils. Set up, override, and debug the default SEO head tags in a Nuxt app with the nuxt-seo-utils module. Use when a task mentions canonical URLs, the title template or separator, fallback titles, og:image or twitter:image files, favicons and app icons, seo.meta, seoMeta or head in routeRules, useBreadcrumbItems, useShareLinks, the nuxt-seo-utils icons CLI, or the seo config key. Also use when a page tag does not override a default, html lang ignores useHead, or og:image renders twice.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Social media graphics. It works with Nuxt and X (Twitter). The repository describes itself as: SEO utilities to improve your Nuxt sites discoverability and shareability. The licence is MIT.
Read from SKILL.md and the folder at commit 3644935. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
nuxtseo.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Nuxt SEO Utils loads about 2.1k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 919 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from harlan-zw/nuxt-seo-utils at commit 3644935, republished under its MIT licence (© harlan-zw). 919 words, ~2,148 tokens.
.claude/skills/nuxt-seo-utils/SKILL.md (or your agent's skills folder).Requires Nuxt ^4.6.0 || ^5.0.0 and Unhead 3.4.2 or newer.
The module adds default head tags from site config, reads icon and social image files, and ships breadcrumb and share link composables.
Docs: https://nuxtseo.com/docs/seo-utils
The config key is seo. seoUtils does nothing.
Set site.url and site.name. The canonical URL, og:url, the title template, and absolute image URLs read them.
export default defineNuxtConfig({
modules: ['nuxt-seo-utils'],
site: { url: 'https://example.com', name: 'Acme', description: 'Default description', twitter: 'acme', defaultLocale: 'en-US' },
})Crawlers read only the SSR response. The defaults render on the server.
With the defaults, every page gets:
<title> from the template %s %separator %siteName. The separator is |. Change it with site.separator./blog/my-post becomes My Post. definePageMeta({ title }) sets it with a static string.<link rel="canonical"> from site.url and the route path, lowercased, with only these query keys kept: page, sort, filter, search, q, category, tag.og:url (the resolved canonical, including one a page sets), og:type (website), og:site_name (site.name), and description from site.description.og:title, og:description, and twitter:card (summary_large_image), inferred from the title and description.twitter:site and twitter:creator from site.twitter. The @ is added.<html lang> from site.currentLocale or site.defaultLocale, else en.og:locale only when the locale has a region. en-US renders en_US. en renders no tag.og:image and twitter:image values become absolute against site.url.Module tags use tagPriority: 'low', so a page useSeoMeta() or useHead() call replaces them.
A page ogImage also drops the default image's width, height, type, and copied twitter:image. A page ogImageAlt alone keeps the default image.
A page canonical needs no extra priority:
useHead({ link: [{ rel: 'canonical', href: 'https://example.com/preferred' }] })Set seo: { automaticDefaults: false } to drop the canonical, title template, lang, and Open Graph defaults together. No option drops only one of them.
Files in public/ become site-wide head tags at build time:
favicon.{ico,png,svg}, icon*.{ico,png,jpg,svg}, apple-icon*.png, apple-touch-icon*.png: <link rel="icon"> or apple-touch-icon, with type and sizes read from the file.og-image.{png,jpg,jpeg,gif} or opengraph-image.*: og:image with width, height, and type. It also fills twitter:image when no twitter-image.* file exists. The name must match exactly; blog-og-image.png is ignored.<name>.alt.txt next to an image sets og:image:alt.-dark or -light in an icon name adds a prefers-color-scheme media query.The same file names inside pages/<route>/ or pages/<route>/_dir/ apply to that route and its children. They replace a public/ image there.
An icon link in app.head.link with the same rel wins over the files.
Set seo: { metaDataFiles: false } to turn this off.
Generate icon files from one source image in public/:
pnpm exec nuxt-seo-utils icons --source logo.svgIt writes favicon.ico, apple-touch-icon.png, and icon-{16,32,192,512} PNGs to public/. Install the optional peer with pnpm add -D sharp before generating icons.
seo.meta takes useSeoMeta() input and renders on every page:
export default defineNuxtConfig({
seo: { meta: { author: 'Acme Team', themeColor: '#18181b' } },
})routeRules accept seoMeta and head:
export default defineNuxtConfig({
routeRules: {
'/blog/**': { seoMeta: { author: 'Blog Team' }, head: { meta: [{ name: 'x-section', content: 'blog' }] } },
},
})Route rule tags override seo.meta and app.head. A page useSeoMeta() or useHead() call overrides them. The tagPriority option does not change this.
Route rule tags render on the server only. They do not update on client navigation.
useBreadcrumbItems() is auto-imported. It returns a ref of items from the route path, ready for Nuxt UI <UBreadcrumb :items>.
const items = useBreadcrumbItems({
overrides: [undefined, undefined, { label: post.value.title }], // index matches the path segment; false removes it
})nuxt-schema-org installed, it also adds a BreadcrumbList node. Without it, no JSON-LD renders and there is no warning.definePageMeta({ breadcrumb: { label } }), then title in page meta, then the title-cased segment. The index route is Home.id merge their options.const share = useShareLinks({ title: post.value.title, utm: { source: 'auto', campaign: 'launch' } })
// share.value.twitter, .facebook, .linkedin, .whatsapp, .telegram, .reddit, .pinterest, .email, .canonicalUrltitle defaults to site.name, not the page title. Pass it.
UTM defaults to utm_source=<platform> and utm_medium=social (or email). An object without source: 'auto' switches to manual mode: { campaign: 'launch' } sends only utm_campaign.
htmlAttrs.lang in useHead() or app.head is ignored. The module sets lang from site config. Set site.defaultLocale, or use @nuxtjs/i18n.canonicalLowercase lowercases the canonical, og:url, useShareLinks() URLs, and BreadcrumbList item URLs. nuxt-schema-org before 6.4.1 builds the WebPage url from the route path. There, /blog/My-Post gets a canonical of /blog/my-post and a WebPage URL of /blog/My-Post. From 6.4.1, the WebPage url follows the canonical. On an older version, upgrade nuxt-schema-org, use lowercase route paths, or set canonicalLowercase: false. Breadcrumb to links keep their case on purpose.definePageMeta({ title }) takes a static string only. Use useSeoMeta({ title }) for data.ogImage keeps the default image's dimensions and twitter:image, a page canonical leaves og:url on the route URL, a pages/<route>/og-image.png renders og:image:alt twice, and public/opengraph-image.* is ignored.BreadcrumbList item URLs keep the route case, and useShareLinks() lowercases without the site locale.seo.meta and public/og-image.png beat route rule seoMeta and pages/**/og-image.png. Put the route value in the page with useSeoMeta().treeShakeUseSeoMeta needs Unhead v3. On Unhead v2 the module skips it with a warning.automaticTwitterTags: false (removes twitter:card) arrived in 8.5.0.redirectToCanonicalSiteUrl (false): in production, send a 301 from other hosts to the site.url host.canonicalQueryWhitelist: replaces the default list. It does not extend it.minify ({ build: true, runtime: false }): minify static app.head JavaScript/CSS with parser-based tooling. Compact JSON/CSS in prerendered HTML. runtime: true compacts JSON/CSS per SSR request. Dynamic JavaScript and custom script types remain unchanged.automaticOgAndTwitterTags (true): the og:title, og:description, and twitter:card inference.nuxt dev and nuxt build, the module warns about conflicts in app.head, such as a static lang or an og:site_name that differs from site.name. Fix the site config, not the head. Set validateAppHead: false to hide the check./__nuxt-seo-utils/debug.json in dev, or in production with seo: { debug: true }.© harlan-zw, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/nuxt-seo-utils of harlan-zw/nuxt-seo-utils.
Open the folder on GitHubat commit 3644935
Nuxt SEO Utils next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Nuxt SEO Utils this skillharlan-zw/nuxt-seo-utils | 130 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Ccfddl X Postsccfddl/ccf-deadlines | 9.4k | — | ~5.6k | Automated safety check: Pass | MIT | |
| Web Asset Generatoralonw0/web-asset-generator | 514 | 1 repos | ~6.6k | Automated safety check: Pass | MIT | |
| Banner CreatorReScienceLab/opc-skills | 1.8k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Generate Brand Assetscrafter-station/skills | 112 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Open Graphkostja94/marketing-skills | 1k | — | ~1.3k | Automated safety check: Pass | MIT |
ccfddl/ccf-deadlines
Prepare and, with a verified authenticated publishing route and authorization, publish daily conference-deadline countdown posts for @ccfddl on X/Twitter.
alonw0/web-asset-generator
Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn.
ReScienceLab/opc-skills
Create banners using AI image generation. An agent skill from ReScienceLab/opc-skills.
crafter-station/skills
Generate OG images and favicon based on project branding. An agent skill from crafter-station/skills.
kostja94/marketing-skills
When the user wants to add, audit, implement, or optimize Open Graph metadata for social sharing, including og:title, og:description, og:image, og:url, Facebook previews, LinkedIn previews, or…
harlan-zw/requestindexing.com
ALWAYS use when writing code importing "nuxt-og-image". An agent skill from harlan-zw/requestindexing.com.
Works with
Categories
Set up, override, and debug the default SEO head tags in a Nuxt app with the nuxt-seo-utils module. Nuxt SEO Utils is an agent skill from harlan-zw/nuxt-seo-utils. Set up, override, and debug the default SEO head tags in a Nuxt app with the nuxt-seo-utils module.
Nuxt SEO Utils fits situations like: A task mentions canonical URLs; the title template; fallback titles; twitter:image files.
Run `npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a claude-code`. Or copy the skill folder (skills/nuxt-seo-utils in harlan-zw/nuxt-seo-utils) into .claude/skills/nuxt-seo-utils in your project. Claude Code loads it when a task matches its description.
Run `npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a codex`. Or copy the skill folder (skills/nuxt-seo-utils in harlan-zw/nuxt-seo-utils) into .agents/skills/nuxt-seo-utils in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add harlan-zw/nuxt-seo-utils --skill nuxt-seo-utils -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nuxt-seo-utils, .gemini/skills/nuxt-seo-utils, .github/skills/nuxt-seo-utils and .opencode/skills/nuxt-seo-utils in your project.
Going by SKILL.md and its folder, Nuxt SEO Utils needs the command-line tools its instructions call (pnpm).
SKILL.md names 1 domain. As links in the text: nuxtseo.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Nuxt SEO Utils is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Nuxt SEO Utils: Ccfddl X Posts (ccfddl/ccf-deadlines, 9.4k stars), Web Asset Generator (alonw0/web-asset-generator, 514 stars), Banner Creator (ReScienceLab/opc-skills, 1.8k stars) and Generate Brand Assets (crafter-station/skills, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
harlan-zw (a GitHub user) maintains it in harlan-zw/nuxt-seo-utils, which has 130 GitHub stars. The repository was last updated on October 8, 2026.
Source: harlan-zw/nuxt-seo-utils on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.