og-inspect
Inspect a URL's Open Graph and Twitter Card metadata and render a styled HTML page showing how the link unfurls on Facebook, X/Twitter, LinkedIn…
Skill by sejas
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sejas-og-inspect
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/og-inspect
What's inside
- Skill name
og-inspect- Description
- Inspect a URL's Open Graph and Twitter Card metadata and render a styled HTML page showing how the link unfurls on Facebook, X/Twitter, LinkedIn, Slack/Discord, and Tumblr. Also prints a JSON summary to stdout. Use when the user asks to "preview a link", "check OG tags", "inspect Open Graph", "see how a URL looks when shared", or invokes `/og-inspect <url>`.
- License
- MIT
- Instructions
- 486 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (1)
- SKILL.md
SKILL.md (first lines)
# /og-inspect — Open Graph / share-card inspector
Given a URL, fetch the page, extract Open Graph + Twitter Card metadata, render a styled HTML preview showing how the link unfurls on Facebook, X/Twitter, LinkedIn, Slack/Discord, and Tumblr, and print a JSON summary. Like https://www.opengraph.xyz/ but local.
## Workflow
1. **Get the URL.** The user invokes `/og-inspect <url>`. If no URL is provided, ask: "Which URL should I inspect?"
2. **Run the inspector.** Execute the bash block below with the URL as `$1`. It fetches the page with `curl`, parses meta tags with Python stdlib (`html.parser`), writes a styled HTML preview to `~/claude.nosync/og-previews/YYYY-MM-DD-<host>-<slug>.html`, prints the absolute path of the HTML file to stderr, and prints the JSON summary to stdout.
3. **Open the HTML file** in the default browser with `open "<path>"`.
4. **Print the JSON** result to the terminal (it is already on stdout from step 2 — relay it to the user).
## The script
Run this with the URL as the first argument. Treat the URL as untrusted input — the script already does shell-safe quoting and no `eval`.
```bash
set -uo pipefail
URL="${1:-}"
if [ -z "$URL" ]; then
echo "usage: og-inspect <url>" >&2
exit 1
fi
# Normalize: prepend https:// if no scheme
if ! printf '%s' "$URL" | grep -qE '^https?://'; then
URL="https://$URL"
fi
OUTDIR="$HOME/claude.nosync/og-previews"
mkdir -p "$OUTDIR"
TMP_HTML="$(mktemp -t og-inspect.XXXXXX).html"
TMP_META="$(mktemp -t og-inspect.XXXXXX).meta"
TMP_JSON="$(mktemp -t og-inspect.XXXXXX).json"
TMP_PATH="$(mktemp -t og-inspect.XXXXXX).path"
trap 'rm -f "$TMP_HTML" "$TMP_META" "$TMP_JSON" "$TMP_PATH"' EXIT
# Fetch. Always emit the meta file even on failure so Python can render a stub.
# On TLS verification failure (curl exit 60), retry with -k and flag a warning.
TLS_INSECURE=0
CURL_COMMON=( -sSL
-A "Mozilla/5.0 (compatible; OGInspectBot/1.0)"
-H "Accept: text/html,application/xhtml+xml"
--max-time 15
--max-filesize 5000000
-w '%{http_code}\n%{url_effective}\n%{content_type}\n'
-o "$TMP_HTML" )
curl "${CURL_COMMON[@]}" "$URL" > "$TMP_META" 2>/dev/null
RC=$?
if [ "$RC" -eq 60 ]; then
TLS_INSECURE=1
curl -k "${CURL_COMMON[@]}" "$URL" > "$TMP_META" 2>/dev/null
RC=$?
fi
if [ "$RC" -ne 0 ]; then
printf '0\n%s\n\n' "$URL" > "$TMP_META"
fi
# Parse + render. Python writes JSON to TMP_JSON and the output filepath to TMP_PATH.
python3 - "$URL" "$TMP_HTML" "$TMP_META" "$OUTDIR" "$TLS_INSECURE" >"$TMP_JSON" 2>"$TMP_PATH" <<'PY'
import sys, os, json, html, re
from datetime import datetime, timezone
from html.parser import HTMLParser
from urllib.parse import urljoin, urlparse
orig_url, tmp_html, tmp_meta, outdir, tls_insecure = sys.argv[1:6]
tls_insecure = tls_insecure == "1"
with open(tmp_meta) as f:
lines = f.read().splitlines()
status_str = lines[0] if len(lines) > 0 else "0"
final_url = lines[1] if len(lines) > 1 and lines[1] else orig_url
ctype = lines[2] if len(lines) > 2 else ""
# Decode body with charset detection (file may be missing/empty if curl failed)
try:
with open(tmp_html, "rb") as f:
raw = f.read()
except FileNotFoundError:
raw = b""
charset = None
m = re.search(r"charset=([\w\-]+)", ctype, re.I)
if m: charset = m.group(1)
if not charset:
mm = re.search(rb'<meta[^>]+charset=["\']?([\w\-]+)', raw[:4096], re.I)
if mm:
try: charset = mm.group(1).decode("ascii")
except Exception: pass
charset = charset or "utf-8"
try:
text = raw.decode(charset, errors="replace")
except LookupError:
text = raw.decode("utf-8", errors="replace")
text = text.replace("\x00", "")
class MetaParser(HTMLParser):
def __init__(self):
super().__init__()
self.metas, self.links = [], []
self.title = None
self._in_title = False
self._title_parts = []
def handle_starttag(self, tag, attrs):
d = {k.lower(): v for k, v in attrs}
if tag == "meta":
prop = d.get("property") or d.get("name") or d.get("itemprop")
content = d.get("content")
if prop and content is not None:
self.metas.append((prop.lower(), content))
elif tag == "link":
rel, href = d.get("rel"), d.get("href")
if rel and href: self.links.append((rel.lower(), href))
elif tag == "title":
self._in_title = True
def handle_endtag(self, tag):
if tag == "title":
self._in_title = FalseFrom sejas/ai-code-skills, MIT.
More from sejas/ai-code-skills
- 0.603score
gpt-image
sejas
Generate and edit images with OpenAI GPT Image 2.5 via fal.ai.
SkillAFreshness: A★ 2Claude Code +9 - 0.557score
id-photo-sheet
sejas
Use when the user needs ID/passport/carnet photos (foto carnet, foto de carné, DNI, visa) at an exact mm size (e.g.
SkillBFreshness: B★ 2Claude Code +9 - 0.507score
ai-radar
sejas
Use when Antonio wants to catch up on frontier AI — "what's new in AI", "AI radar", "what is karpathy working on", "AI trends", "research digest", "what…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
brainstorming-names
sejas
Use when the user wants to name or rename something — a product, feature, brand, project, command, or company — or asks to "brainstorm names", "find a better…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
first-time-contributors
sejas
Use when checking whether recently merged PRs in a GitHub repository include first-time contributors — e.g.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
pr-leaderboard
sejas
Use when asked to analyze, rank, or explore merged PRs in a GitHub repo — "who merged what this week", "PR leaderboard", "rank contributors", "top authors"…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
make-pdf
sejas
Turn a markdown file into a publication-quality PDF — cover page, clickable table of contents with page numbers, running headers, page numbers, curly quotes…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
design-review
sejas
Designer's-eye QA of a running UI — screenshots it at real breakpoints, then reports spacing, hierarchy, alignment, contrast, state and motion defects ranked…
SkillCFreshness: C★ 2Claude Code +9 - 0.487score
mac-cleanup
sejas
This skill should be used when the user asks to "clean up my Mac", "free disk space", "my disk is full", "what's taking up space", "reclaim storage", "offload…
SkillCFreshness: C★ 2Claude Code +9 - 0.443score
commit
sejas
Write a commit message and create a git commit.
SkillDFreshness: D★ 2Claude Code +9 - 0.443score
presentation
sejas
Generate a Marp presentation from an intent's spec.
SkillDFreshness: D★ 2Claude Code +9 - 0.436score
explain
sejas
Search the codebase for function source code and explain it like for a junior developer
SkillDFreshness: D★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- May 14, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/sejas/ai-code-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sejas
- 0.603score
gpt-image
sejas
Generate and edit images with OpenAI GPT Image 2.5 via fal.ai.
SkillAFreshness: A★ 2Claude Code +9 - 0.557score
id-photo-sheet
sejas
Use when the user needs ID/passport/carnet photos (foto carnet, foto de carné, DNI, visa) at an exact mm size (e.g.
SkillBFreshness: B★ 2Claude Code +9 - 0.507score
first-time-contributors
sejas
Use when checking whether recently merged PRs in a GitHub repository include first-time contributors — e.g.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
ai-radar
sejas
Use when Antonio wants to catch up on frontier AI — "what's new in AI", "AI radar", "what is karpathy working on", "AI trends", "research digest", "what…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
brainstorming-names
sejas
Use when the user wants to name or rename something — a product, feature, brand, project, command, or company — or asks to "brainstorm names", "find a better…
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
pr-leaderboard
sejas
Use when asked to analyze, rank, or explore merged PRs in a GitHub repo — "who merged what this week", "PR leaderboard", "rank contributors", "top authors"…
SkillCFreshness: C★ 2Claude Code +9
Cite this page
og-inspect skill. Agent Mart. https://agentmart.dev/skills/sejas-og-inspect (last updated 2026-10-24)