webperf-media

安装量: 36
排名: #19470

安装

npx skills add https://github.com/nucliweb/webperf-snippets --skill webperf-media
WebPerf: Media Performance
JavaScript snippets for measuring web performance in Chrome DevTools. Execute with
mcp__chrome-devtools__evaluate_script
, capture output with
mcp__chrome-devtools__get_console_message
.
Scripts
scripts/Image-Element-Audit.js
— Image Element Audit
scripts/SVG-Embedded-Bitmap-Analysis.js
— SVG Embedded Bitmap Analysis
scripts/Video-Element-Audit.js
— Video Element Audit
Descriptions and thresholds:
references/snippets.md
Common Workflows
Complete Media Audit
When the user asks for media optimization or "audit images and videos":
Image-Element-Audit.js
- Analyze all images (format, lazy loading, sizing, fetchpriority)
Video-Element-Audit.js
- Analyze all videos (poster, preload, formats, autoplay)
SVG-Embedded-Bitmap-Analysis.js
- Detect inefficient bitmap images embedded in SVGs
Image Optimization Workflow
When the user asks "optimize images" or "check image performance":
Image-Element-Audit.js
- Full image audit
Cross-reference with
webperf-loading
skill:
Find-Above-The-Fold-Lazy-Loaded-Images.js (incorrectly lazy-loaded images)
Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js (missing lazy loading)
Find-Images-With-Lazy-and-Fetchpriority.js (contradictory attributes)
Priority-Hints-Audit.js (LCP image should have fetchpriority="high")
Video Performance Audit
When the user asks "optimize videos" or "check video performance":
Video-Element-Audit.js
- Full video audit
Cross-reference with
webperf-core-web-vitals
skill:
LCP-Video-Candidate.js (check if video/poster is LCP)
Cross-reference with
webperf-loading
skill:
Priority-Hints-Audit.js (video poster priority)
Resource-Hints-Validation.js (video preload)
LCP Image Investigation
When LCP is an image and needs optimization:
Cross-reference with
webperf-core-web-vitals
skill:
LCP.js (measure LCP)
LCP-Image-Entropy.js (analyze image complexity)
Image-Element-Audit.js
- Check format, dimensions, lazy loading
Cross-reference with
webperf-loading
skill:
Find-Above-The-Fold-Lazy-Loaded-Images.js (should NOT be lazy)
Priority-Hints-Audit.js (should have fetchpriority="high")
Resource-Hints-Validation.js (consider preload)
Layout Shift from Images
When CLS is caused by images without dimensions:
Image-Element-Audit.js
- Check for missing width/height attributes
Cross-reference with
webperf-core-web-vitals
skill:
CLS.js (measure total CLS)
Cross-reference with
webperf-interaction
skill:
Layout-Shift-Loading-and-Interaction.js (when shifts occur)
SVG Optimization Audit
When the user asks about SVG performance or file sizes are large:
SVG-Embedded-Bitmap-Analysis.js
- Detect raster images embedded in vector SVGs
Recommend SVGO optimization for SVGs without embedded bitmaps
Recommend extracting bitmaps to separate image files with proper formats
Decision Tree
Use this decision tree to automatically run follow-up snippets based on results:
After Image-Element-Audit.js
If images missing width/height attributes
→ Layout shift risk, run:
webperf-core-web-vitals:CLS.js
(measure CLS impact)
webperf-interaction:Layout-Shift-Loading-and-Interaction.js
(timing of shifts)
Recommend adding explicit dimensions to all images
If images using wrong format (JPEG for graphics, PNG for photos)
→ Recommend:
Modern formats: WebP, AVIF
Appropriate format for content type
Format-specific compression settings
If images much larger than display size
→ Recommend:
Responsive images with srcset
Appropriate image CDN sizing
srcset with multiple sizes for different viewports
If above-the-fold images are lazy-loaded
→ Run:
webperf-loading:Find-Above-The-Fold-Lazy-Loaded-Images.js
(confirm)
webperf-core-web-vitals:LCP.js
(measure LCP impact)
Recommend removing loading="lazy" from above-fold images
If LCP image lacks fetchpriority="high"
→ Run:
webperf-core-web-vitals:LCP.js
(measure current LCP)
webperf-loading:Priority-Hints-Audit.js
(full priority audit)
Recommend adding fetchpriority="high" to LCP image
If below-the-fold images are NOT lazy-loaded
→ Run:
webperf-loading:Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js
(confirm)
Recommend adding loading="lazy" to offscreen images
If images have both loading="lazy" AND fetchpriority="high"
→ Run:
webperf-loading:Find-Images-With-Lazy-and-Fetchpriority.js
(confirm contradiction)
Recommend removing one of the conflicting attributes
If images missing alt text
→ Accessibility issue, recommend adding descriptive alt text
After Video-Element-Audit.js
If video is LCP candidate
→ Run:
webperf-core-web-vitals:LCP-Video-Candidate.js
(confirm)
webperf-core-web-vitals:LCP.js
(measure LCP)
webperf-core-web-vitals:LCP-Sub-Parts.js
(break down timing)
Optimize video poster image or consider image alternative
If video missing poster
→ Recommend:
Adding poster image for better perceived performance
Using first frame or custom thumbnail
Optimizing poster as you would an image
If video uses preload="auto"
→ Bandwidth concern, evaluate:
Is video above-the-fold? Keep preload="auto"
Is video below-the-fold? Change to preload="metadata" or "none"
Is autoplay intended? Verify preload matches intent
If autoplay video without muted
→ Browser will block, recommend:
Adding muted attribute
Or removing autoplay
If video missing multiple formats
→ Recommend:
WebM for Chrome/Firefox
MP4 as fallback for Safari
Order sources by efficiency (WebM first)
If large video files (>5MB)
→ Recommend:
Compression/transcoding
Adaptive bitrate streaming (HLS, DASH)
Loading strategy optimization
After SVG-Embedded-Bitmap-Analysis.js
If bitmap images found in SVGs
→ Recommend:
Extract bitmaps to separate files
Use WebP/AVIF format for extracted images
Reference images from SVG with element
Or convert to pure vector if possible
If large embedded bitmaps (>100KB)
→ Critical inefficiency:
SVG parsing overhead + large bitmap = worst of both worlds
Urgently recommend extraction
If multiple small bitmaps in SVG
→ Consider:
CSS sprites for small icons
SVG symbols for reusable graphics
Extracting to individual optimized images
Cross-Skill Triggers
These triggers recommend using snippets from other skills:
From Media to Core Web Vitals Skill
If LCP image detected
→ Use
webperf-core-web-vitals
skill:
LCP.js (measure LCP)
LCP-Sub-Parts.js (break down timing phases)
LCP-Image-Entropy.js (analyze image complexity)
If video is LCP candidate
→ Use
webperf-core-web-vitals
skill:
LCP-Video-Candidate.js (confirm and analyze)
LCP.js (measure impact)
If images causing layout shifts
→ Use
webperf-core-web-vitals
skill:
CLS.js (measure cumulative shift)
From Media to Loading Skill
If lazy loading issues detected
→ Use
webperf-loading
skill:
Find-Above-The-Fold-Lazy-Loaded-Images.js (incorrectly lazy)
Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js (missing lazy)
Find-Images-With-Lazy-and-Fetchpriority.js (contradictory attributes)
If LCP image needs priority optimization
→ Use
webperf-loading
skill:
Priority-Hints-Audit.js (fetchpriority analysis)
Resource-Hints-Validation.js (preload validation)
If images competing with critical resources
→ Use
webperf-loading
skill:
Find-render-blocking-resources.js (resource priority conflicts)
TTFB-Resources.js (identify slow image CDN)
From Media to Interaction Skill
If images causing layout shifts during interaction
→ Use
webperf-interaction
skill:
Layout-Shift-Loading-and-Interaction.js (shift timing analysis)
Performance Budget Thresholds
Use these thresholds to trigger recommendations:
Image File Sizes:
Warning
Individual image > 500KB → Check format and compression
Critical
Individual image > 1MB → Urgent optimization needed
Total images
> 5MB on initial load → Implement lazy loading
Image Formats:
JPEG for graphics/icons
→ Recommend PNG or SVG
PNG for photos
→ Recommend JPEG, WebP, or AVIF
GIF for animations
→ Recommend video (MP4/WebM) or animated WebP
No modern formats (WebP/AVIF)
→ Recommend upgrading
Image Dimensions:
Intrinsic size > 2x display size
→ Recommend responsive images
Intrinsic size < display size
→ Upscaling = blurry, provide larger source
Video File Sizes:
Warning
Video > 10MB → Consider compression or streaming
Critical
Video > 50MB → Urgent optimization or streaming needed Lazy Loading: Above-fold images lazy-loaded → Critical LCP impact, fix immediately Below-fold images NOT lazy-loaded → Wasted bandwidth, implement lazy loading

10 images eager-loaded → Excessive, implement lazy loading Priority Hints: LCP image without fetchpriority="high" → Add for 10-30% LCP improvement Non-LCP images with fetchpriority="high" → Remove, wasting browser hints Lazy + fetchpriority="high" conflict → Fix contradiction Common Issues and Resolutions Issue: LCP is slow and LCP element is an image Run Image-Element-Audit.js Run webperf-core-web-vitals:LCP-Image-Entropy.js Check: format, lazy loading, fetchpriority, preload Fix in order: remove lazy, add fetchpriority="high", optimize format, add preload Issue: CLS from images Run Image-Element-Audit.js Check for missing width/height Add explicit dimensions or aspect-ratio CSS Verify with webperf-core-web-vitals:CLS.js Issue: Page loads too many images Run Image-Element-Audit.js Run webperf-loading:Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js Implement lazy loading on below-fold images Consider pagination or infinite scroll Issue: Images are the wrong format Run Image-Element-Audit.js Check format vs content type Recommend WebP with JPEG/PNG fallback Consider AVIF for even better compression Issue: Video is LCP Run Video-Element-Audit.js Run webperf-core-web-vitals:LCP-Video-Candidate.js Optimize poster image or consider static image alternative Add fetchpriority="high" to poster if keeping video Issue: SVG files are huge Run SVG-Embedded-Bitmap-Analysis.js Extract embedded bitmaps Run SVGO on pure SVG Re-measure file sizes References references/snippets.md — Descriptions and thresholds for each script references/schema.md — Return value schema for interpreting script output Execute via mcp__chrome-devtools__evaluate_script → read with mcp__chrome-devtools__get_console_message .

返回排行榜