npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

pp-seo

v0.0.1

Published

`pp-seo` is a standalone Angular library that provides a highly configurable, sectioned form for managing all SEO (Search Engine Optimization) properties in your Angular applications. It supports a wide range of SEO fields, grouped into logical sections,

Downloads

14

Readme

PpSeo

pp-seo is a standalone Angular library that provides a highly configurable, sectioned form for managing all SEO (Search Engine Optimization) properties in your Angular applications. It supports a wide range of SEO fields, grouped into logical sections, and is designed for flexibility, validation, and easy integration.


Features

  • Sectioned SEO Form: All SEO fields are grouped into logical sections (Core Meta, Crawling & Indexing, Social Media, etc.).
  • Field Types: Supports text, textarea, array, dropdown, checkbox, and multiselect fields.
  • Validation: Built-in validation for required fields, max length, and patterns.
  • Hints: Optional hints for each field type.
  • Reactive Updates: Emits changes and supports Angular forms integration.
  • Standalone Component: No need for NgModule imports—just use as a standalone component.
  • Highly Configurable: Show/hide/disable sections or fields as needed.

SEO Sections & Fields

The SEO form is structured into the following sections, each with its own set of fields:

1. Core Meta Tags

  • Title Tag: Page title (required, max 60 chars)
  • Meta Description: Page description (max 160 chars)
  • Meta Keywords: Array of keywords
  • Canonical URL: Preferred URL (max 200 chars)
  • Robots Meta: Indexing instructions (default: index, follow)
  • Viewport: Mobile viewport settings (default: width=device-width, initial-scale=1)
  • Charset: Character encoding (default: utf-8)
  • Language: Page language (default: en)
  • Author, Publisher, Rating, Copyright, Generator, Reply-To, Content-Type

2. Crawling & Indexing

  • Noindex, Nofollow, Noimageindex, Noarchive, Nosnippet, Notranslate: All as checkboxes
  • Unavailable After: Date (YYYY-MM-DD)
  • Paginated Prev/Next: URLs for paginated content

3. Cache & Refresh Control

  • Cache-Control, Pragma, Expires, Refresh

4. Social Media & Open Graph

  • Open Graph: ogTitle, ogDescription, ogType, ogUrl, ogImage, ogImageAlt, ogImageWidth, ogImageHeight, ogSiteName, ogLocale
  • Twitter: twitterCard, twitterTitle, twitterDescription, twitterImage, twitterImageAlt, twitterSite, twitterCreator
  • Facebook: fbAppId
  • Pinterest: pinterestDescription, pinterestMedia, pinterestNoPin

5. Mobile & App-Specific

  • Apple Touch Icon, Apple Mobile Web App Capable, Apple Status Bar Style, Mobile Web App Capable, Theme Color, Microsoft Tile Color, Microsoft Tile Image

6. Structured Data

  • JSON-LD: Structured data in JSON-LD format

7. Alternate Tags

  • Hreflang: Array of language-code|url
  • Alternate Media, Alternate Format

8. Site Verification

  • Google, Bing, Yandex, Pinterest, Facebook, Norton Safe Web: Verification codes

9. Security & Privacy

  • Referrer Policy, Content Security Policy, Permissions Policy, X-UA-Compatible, X-Frame-Options

10. Performance

  • Preconnect, Prefetch, Preload, DNS-Prefetch: Arrays of URLs/domains
  • Prerender: URL

Installation

Install the library using npm:

npm install pp-seo

Usage

1. Import the Standalone Component

import { Seo } from "pp-seo";

2. Add to Your Component

@Component({
  selector: "my-component",
  standalone: true,
  imports: [Seo],
  template: ` <pp-seo [properties]="seoProperties" (propertiesChange)="onSeoChange($event)"> </pp-seo> `,
})
export class MyComponent {
  seoProperties = this.getNewSeoProperties();

  onSeoChange(updated: any) {
    // Handle updated SEO properties
  }

  getNewSeoProperties() {
    // Optionally use Seo.prototype.getNewSeoProperties() for defaults
    // Or copy the structure from the documentation
  }
}

3. Properties & Events

  • [properties]: The full PpSeo object (see below for structure).
  • (propertiesChange): Emits the updated PpSeo object on any change.

PpSeo Object Structure

The PpSeo object is a deeply structured object with sections and fields. Each field has:

  • value: The current value
  • label: Display label
  • description: Help text
  • type: One of text, textarea, array, dropdown, checkbox, multiselect
  • validation: { required, maxLength, pattern }
  • hidden: Hide this field
  • disabled: Disable this field

Each section (e.g., coreMeta, socialMedia) has:

  • label: Section label
  • fields: Object of fields
  • hidden: Hide this section
  • disabled: Disable this section

You can use the default structure by calling Seo.prototype.getNewSeoProperties().


Field Types

  • TEXT: Single-line input
  • TEXTAREA: Multi-line input
  • ARRAY: List of values (add/remove)
  • DROPDOWN: Select from options
  • CHECKBOX: Boolean toggle
  • MULTISELECT: Multiple select

Validation

  • Required fields are enforced.
  • Max length and pattern are validated.
  • Invalid fields are tracked and can be highlighted in the UI.

Example: Customizing the Form

You can hide or disable entire sections or individual fields by setting hidden or disabled to true in the PpSeo object.

seoProperties.sections.socialMedia.hidden = true; // Hide Social Media section
seoProperties.sections.coreMeta.fields.title.disabled = true; // Disable Title field

Building the Library

To build the library, run:

ng build pp-seo

The build artifacts will be placed in the dist/pp-seo directory.


Publishing the Library

After building, publish your library to npm:

cd dist/pp-seo
npm publish

Running Unit Tests

To execute unit tests:

ng test pp-seo

License

MIT

Support