JSPM

seo-pilot-client

1.0.0
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 1
    • Score
      100M100P100Q16098F
    • License MIT

    TypeScript client library for SEO Pilot API - fetch blog articles, categories, tags, and SEO content

    Package Exports

    • seo-pilot-client
    • seo-pilot-client/dist/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (seo-pilot-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    πŸš€ SEO Pilot Client

    npm version TypeScript MIT License

    A powerful TypeScript client library for the SEO Pilot API. Effortlessly fetch blog articles, categories, tags, and SEO content with built-in caching and type safety.

    ✨ Features

    • πŸ”₯ TypeScript Support - Full type safety and IntelliSense
    • ⚑ Built-in Caching - Intelligent caching with configurable TTL
    • πŸ“„ Pagination - Easy pagination for articles and content
    • 🏷️ Category & Tag Filtering - Filter content by categories and tags
    • πŸ—ΊοΈ Sitemap Generation - Generate SEO-friendly sitemaps
    • πŸ“Š Analytics - Get insights with built-in stats
    • πŸ” Health Monitoring - API health check functionality
    • 🌐 Modern Fetch API - Built on modern web standards

    πŸ“¦ Installation

    npm install seo-pilot-client
    yarn add seo-pilot-client
    pnpm add seo-pilot-client

    πŸš€ Quick Start

    import { SeoPilotClient } from 'seo-pilot-client';
    
    // Initialize the client
    const client = new SeoPilotClient('your-api-key');
    
    // Fetch the latest articles
    const { articles, total } = await client.getPosts(0, 10);
    
    console.log(`Found ${total} articles:`, articles);

    πŸ“– API Reference

    Constructor

    const client = new SeoPilotClient(apiKey: string, baseUrl?: string);
    • apiKey - Your SEO Pilot API key
    • baseUrl - Optional custom API base URL (defaults to https://seo-pilot.ai/api/blog)

    Methods

    πŸ“ Articles

    // Get paginated articles
    const result = await client.getPosts(page: number, limit?: number);
    
    // Get articles by category
    const categoryPosts = await client.getCategoryPosts(
      slug: string, 
      page: number, 
      limit?: number
    );
    
    // Get articles by tag
    const tagPosts = await client.getTagPosts(
      slug: string, 
      page: number, 
      limit?: number
    );
    
    // Get single article
    const article = await client.getPost(slug: string);

    🏷️ Categories & Tags

    // Get all categories
    const categories = await client.getCategories();
    
    // Get all tags
    const tags = await client.getTags();

    πŸ“Š Analytics & SEO

    // Get site statistics
    const stats = await client.getStats();
    
    // Generate sitemap
    const sitemap = await client.getSitemap(baseUrl: string);
    
    // Health check
    const health = await client.healthCheck();

    πŸ—‘οΈ Cache Management

    // Clear all caches
    client.clearCache();

    πŸ’‘ Usage Examples

    Basic Article Fetching

    import { SeoPilotClient } from 'seo-pilot-client';
    
    const client = new SeoPilotClient(process.env.SEO_PILOT_API_KEY!);
    
    async function getLatestArticles() {
      try {
        const { articles, total, pagination } = await client.getPosts(0, 5);
        
        console.log(`πŸ“„ Showing 5 of ${total} articles:`);
        articles.forEach(article => {
          console.log(`β€’ ${article.title} (${article.publishedAt})`);
        });
        
        return articles;
      } catch (error) {
        console.error('❌ Failed to fetch articles:', error);
      }
    }

    Category-Based Content

    async function getTechArticles() {
      const techPosts = await client.getCategoryPosts('technology', 0, 10);
      
      return techPosts.articles.map(post => ({
        title: post.title,
        excerpt: post.excerpt,
        url: `/blog/${post.slug}`
      }));
    }

    SEO Sitemap Generation

    async function generateSitemap() {
      const sitemap = await client.getSitemap('https://yourdomain.com');
      
      // Use sitemap for SEO optimization
      console.log('πŸ—ΊοΈ Generated sitemap:', sitemap);
      return sitemap;
    }

    React Integration Example

    import React, { useEffect, useState } from 'react';
    import { SeoPilotClient } from 'seo-pilot-client';
    
    const client = new SeoPilotClient(process.env.REACT_APP_SEO_PILOT_KEY!);
    
    function BlogList() {
      const [articles, setArticles] = useState([]);
      const [loading, setLoading] = useState(true);
    
      useEffect(() => {
        async function fetchArticles() {
          try {
            const { articles } = await client.getPosts(0, 10);
            setArticles(articles);
          } catch (error) {
            console.error('Failed to fetch articles:', error);
          } finally {
            setLoading(false);
          }
        }
    
        fetchArticles();
      }, []);
    
      if (loading) return <div>Loading articles...</div>;
    
      return (
        <div>
          {articles.map(article => (
            <article key={article.slug}>
              <h2>{article.title}</h2>
              <p>{article.excerpt}</p>
              <time>{article.publishedAt}</time>
            </article>
          ))}
        </div>
      );
    }

    πŸ› οΈ Configuration

    Custom Cache TTL

    // The client uses intelligent caching with a default TTL of 60 seconds
    // Caches are automatically managed and cleared when needed

    Error Handling

    try {
      const articles = await client.getPosts(0, 10);
    } catch (error) {
      if (error.message.includes('HTTP 401')) {
        console.error('Invalid API key');
      } else if (error.message.includes('HTTP 429')) {
        console.error('Rate limit exceeded');
      } else {
        console.error('API error:', error.message);
      }
    }

    πŸ“‹ Requirements

    • Node.js 16.0.0 or higher
    • TypeScript 4.0+ (for TypeScript projects)
    • Valid SEO Pilot API key

    🀝 Contributing

    Contributions are welcome! Please feel free to submit a Pull Request.

    1. Fork the project
    2. Create your feature branch (git checkout -b feature/AmazingFeature)
    3. Commit your changes (git commit -m 'Add some AmazingFeature')
    4. Push to the branch (git push origin feature/AmazingFeature)
    5. Open a Pull Request

    πŸ“„ License

    This project is licensed under the MIT License - see the LICENSE file for details.

    πŸ†˜ Support

    If you encounter any issues or have questions:

    1. Check the documentation
    2. Search existing issues
    3. Create a new issue if needed

    Made with ❀️ by Edvard Hoilund