@memberjunction/content-autotagging 2.43.0 → 2.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,20 @@
1
- # MemberJunction Content Autotagging
1
+ # @memberjunction/content-autotagging
2
2
 
3
- A powerful package for automatically processing and tagging content from various sources using AI models.
3
+ A powerful AI-driven package for automatically processing, analyzing, and tagging content from various sources including RSS feeds, websites, local files, and cloud storage.
4
4
 
5
5
  ## Overview
6
6
 
7
- The `@memberjunction/content-autotagging` package is designed to automate the process of ingesting, analyzing, and tagging content from diverse sources such as RSS feeds, websites, local files, and cloud storage. It leverages AI capabilities to extract meaningful tags, summaries, and metadata from content, helping organizations better organize and retrieve information.
7
+ The `@memberjunction/content-autotagging` package provides an extensible framework for ingesting content from diverse sources and leveraging AI models to extract meaningful tags, summaries, and metadata. Built on the MemberJunction platform, it helps organizations automatically organize and categorize their content for improved searchability and insights.
8
+
9
+ ## Features
10
+
11
+ - **Multiple Content Sources**: Support for RSS feeds, websites, local file systems, and cloud storage (Azure Blob)
12
+ - **AI-Powered Processing**: Integrates with various AI models to generate tags, summaries, and metadata
13
+ - **Extensible Architecture**: Easy to add new content sources and processing strategies
14
+ - **Smart Content Detection**: Validates content types and filters out irrelevant content
15
+ - **Incremental Processing**: Only processes new or modified content since last run
16
+ - **File Format Support**: Handles PDFs, Office documents, HTML, and plain text
17
+ - **Chunking Strategy**: Intelligently chunks large content to fit within AI model token limits
8
18
 
9
19
  ## Installation
10
20
 
@@ -14,130 +24,276 @@ npm install @memberjunction/content-autotagging
14
24
 
15
25
  ## Dependencies
16
26
 
17
- This package is part of the MemberJunction ecosystem and relies on several core MemberJunction packages:
18
-
19
- - `@memberjunction/ai` - For AI model integration
20
- - `@memberjunction/aiengine` - For AI processing pipeline
21
- - `@memberjunction/core` - For MemberJunction core functionality
22
- - `@memberjunction/core-entities` - For entity models
23
- - `@memberjunction/global` - For global utilities and configurations
24
-
25
- External dependencies include:
26
- - `axios` - For HTTP requests
27
- - `cheerio` - For HTML parsing
28
- - `pdf-parse` - For PDF document parsing
29
- - `officeparser` - For Microsoft Office document parsing
30
- - `rss-parser` - For RSS feed parsing
31
- - `date-fns` - For date manipulation
27
+ ### MemberJunction Dependencies
28
+ - `@memberjunction/ai` (2.43.0) - AI model integration
29
+ - `@memberjunction/aiengine` (2.43.0) - AI processing pipeline
30
+ - `@memberjunction/core` (2.43.0) - Core MemberJunction functionality
31
+ - `@memberjunction/core-entities` (2.43.0) - Entity models
32
+ - `@memberjunction/global` (2.43.0) - Global utilities
33
+
34
+ ### External Dependencies
35
+ - `axios` - HTTP requests
36
+ - `cheerio` - HTML parsing and web scraping
37
+ - `pdf-parse` - PDF document parsing
38
+ - `officeparser` - Microsoft Office document parsing
39
+ - `rss-parser` - RSS feed parsing
40
+ - `date-fns` & `date-fns-tz` - Date manipulation and timezone handling
41
+ - `openai` - OpenAI API integration
42
+ - `xml2js` - XML parsing
43
+ - `crypto` - Checksum generation
32
44
 
33
45
  ## Architecture
34
46
 
35
- The package follows a modular, extensible architecture with several key components:
47
+ The package follows a modular architecture with these key components:
36
48
 
37
- 1. **Content Sources** - Adapters for different content types (RSS, web, files)
38
- 2. **Content Processors** - Logic for processing content based on its type
39
- 3. **Tag Generators** - AI-powered systems for generating tags from content
40
- 4. **Storage Adapters** - For persisting processed content to the MemberJunction database
49
+ ### Core Classes
50
+
51
+ 1. **AutotagBase** - Abstract base class defining the autotagging interface
52
+ 2. **AutotagBaseEngine** - Central processing engine handling AI interactions and content processing
53
+ 3. **Content Source Implementations**:
54
+ - `AutotagRSSFeed` - RSS feed processing
55
+ - `AutotagWebsite` - Website crawling and processing
56
+ - `AutotagLocalFileSystem` - Local file processing
57
+ - `AutotagAzureBlob` - Azure Blob Storage integration
41
58
 
42
59
  ## Usage
43
60
 
44
- ### Basic Example
61
+ ### RSS Feed Processing
45
62
 
46
63
  ```typescript
47
- import { ContentAutotaggingProcessor } from '@memberjunction/content-autotagging';
64
+ import { AutotagRSSFeed } from '@memberjunction/content-autotagging';
65
+ import { UserInfo } from '@memberjunction/core';
48
66
 
49
- // Initialize the processor
50
- const processor = new ContentAutotaggingProcessor();
67
+ const rssTagger = new AutotagRSSFeed();
68
+ const userContext: UserInfo = { /* your user context */ };
51
69
 
52
- // Process content from various sources
53
- async function processContent() {
54
- // Process RSS feeds
55
- await processor.processRSSFeeds();
56
-
57
- // Process web content
58
- await processor.processWebContent('https://example.com/article');
59
-
60
- // Process local documents
61
- await processor.processLocalDocument('/path/to/document.pdf');
62
- }
70
+ // Process all configured RSS feeds
71
+ await rssTagger.Autotag(userContext);
72
+ ```
73
+
74
+ ### Website Content Processing
75
+
76
+ ```typescript
77
+ import { AutotagWebsite } from '@memberjunction/content-autotagging';
78
+ import { UserInfo } from '@memberjunction/core';
63
79
 
64
- processContent();
80
+ const websiteTagger = new AutotagWebsite();
81
+ const userContext: UserInfo = { /* your user context */ };
82
+
83
+ // Process all configured websites with crawling options
84
+ await websiteTagger.Autotag(userContext);
65
85
  ```
66
86
 
67
- ### Cloud Storage Integration
87
+ ### Local File System Processing
68
88
 
69
89
  ```typescript
70
- import {
71
- ContentAutotaggingProcessor,
72
- AzureBlobStorageAdapter
73
- } from '@memberjunction/content-autotagging';
74
-
75
- // Create storage adapter
76
- const storageAdapter = new AzureBlobStorageAdapter({
77
- connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
78
- containerName: 'content'
79
- });
80
-
81
- // Initialize processor with storage adapter
82
- const processor = new ContentAutotaggingProcessor({ storageAdapter });
83
-
84
- // Process documents from cloud storage
85
- async function processCloudDocuments() {
86
- await processor.processCloudDocuments();
87
- }
90
+ import { AutotagLocalFileSystem } from '@memberjunction/content-autotagging';
91
+ import { UserInfo } from '@memberjunction/core';
88
92
 
89
- processCloudDocuments();
93
+ const fileTagger = new AutotagLocalFileSystem();
94
+ const userContext: UserInfo = { /* your user context */ };
95
+
96
+ // Process files from configured local directories
97
+ await fileTagger.Autotag(userContext);
90
98
  ```
91
99
 
92
- ## Content Processing Flow
100
+ ### Azure Blob Storage Processing
93
101
 
94
- 1. **Content Acquisition** - Content is retrieved from the source (RSS feed, web page, file system, cloud storage)
95
- 2. **Parsing & Extraction** - Raw content is parsed based on its type (HTML, PDF, Office document, etc.)
96
- 3. **AI Processing** - Extracted text is sent to AI models for analysis, generating tags, summaries, and metadata
97
- 4. **Storage** - Processed content with its AI-generated tags is stored in the MemberJunction database
98
- 5. **Notification** - Optional notifications are sent upon completion (if configured)
102
+ ```typescript
103
+ import { AutotagAzureBlob } from '@memberjunction/content-autotagging';
104
+ import { UserInfo } from '@memberjunction/core';
99
105
 
100
- ## Extending the Package
106
+ const blobTagger = new AutotagAzureBlob(
107
+ process.env.AZURE_STORAGE_CONNECTION_STRING,
108
+ 'your-container-name'
109
+ );
110
+
111
+ await blobTagger.Authenticate();
112
+ await blobTagger.Autotag(userContext);
113
+ ```
101
114
 
102
- ### Adding Custom Content Sources
115
+ ### Direct Engine Usage
103
116
 
104
- You can extend the package by creating custom content source adapters:
117
+ For more control over the processing pipeline:
105
118
 
106
119
  ```typescript
107
- import { BaseContentSource, ContentItem } from '@memberjunction/content-autotagging';
108
-
109
- export class MyCustomSource extends BaseContentSource {
110
- async getContentItems(): Promise<ContentItem[]> {
111
- // Implementation for retrieving content items from your source
112
- return [
113
- {
114
- id: 'unique-id',
115
- title: 'Content Title',
116
- content: 'Content text...',
117
- url: 'https://source.url',
118
- publishDate: new Date(),
119
- author: 'Author Name',
120
- sourceType: 'custom'
121
- }
122
- ];
120
+ import { AutotagBaseEngine } from '@memberjunction/content-autotagging';
121
+ import { ContentItemEntity } from '@memberjunction/core-entities';
122
+
123
+ const engine = AutotagBaseEngine.Instance;
124
+
125
+ // Process specific content items
126
+ const contentItems: ContentItemEntity[] = [ /* your content items */ ];
127
+ await engine.ExtractTextAndProcessWithLLM(contentItems, userContext);
128
+ ```
129
+
130
+ ## Content Processing Pipeline
131
+
132
+ 1. **Content Source Discovery**: Retrieves configured content sources from the database
133
+ 2. **Content Acquisition**: Fetches content from each source (RSS, web, files, etc.)
134
+ 3. **Change Detection**: Compares checksums to identify new or modified content
135
+ 4. **Text Extraction**: Extracts text from various formats (HTML, PDF, Office docs)
136
+ 5. **AI Processing**:
137
+ - Chunks content to fit model token limits
138
+ - Validates content type
139
+ - Generates title, summary, and keywords
140
+ - Extracts custom attributes based on content type
141
+ 6. **Storage**: Saves results to MemberJunction entities:
142
+ - Content Items
143
+ - Content Item Tags
144
+ - Content Item Attributes
145
+
146
+ ## Configuration
147
+
148
+ ### Content Source Configuration
149
+
150
+ Content sources are configured in the MemberJunction database with these key fields:
151
+ - `Name`: Display name
152
+ - `URL`: Source location (RSS URL, website URL, file path, etc.)
153
+ - `ContentTypeID`: Type of content (article, blog post, etc.)
154
+ - `ContentSourceTypeID`: Source type (RSS Feed, Website, etc.)
155
+ - `ContentFileTypeID`: Expected file format
156
+
157
+ ### AI Model Configuration
158
+
159
+ The package uses AI models configured in MemberJunction. Key parameters:
160
+ - `modelID`: Specific AI model to use
161
+ - `minTags`: Minimum number of tags to generate
162
+ - `maxTags`: Maximum number of tags to generate
163
+ - Token limits are automatically handled based on model configuration
164
+
165
+ ### Website Crawling Options
166
+
167
+ For website sources, these parameters can be configured:
168
+ - `CrawlOtherSitesInTopLevelDomain`: Whether to crawl other subdomains
169
+ - `CrawlSitesInLowerLevelDomain`: Whether to crawl child paths
170
+ - `MaxDepth`: Maximum crawl depth
171
+ - `RootURL`: Base URL for crawling
172
+ - `URLPattern`: Regex pattern for URL filtering
173
+
174
+ ## Extending the Package
175
+
176
+ ### Creating a Custom Content Source
177
+
178
+ ```typescript
179
+ import { AutotagBase } from '@memberjunction/content-autotagging';
180
+ import { RegisterClass } from '@memberjunction/global';
181
+ import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
182
+ import { UserInfo } from '@memberjunction/core';
183
+
184
+ @RegisterClass(AutotagBase, 'AutotagCustomSource')
185
+ export class AutotagCustomSource extends AutotagBase {
186
+ public async SetContentItemsToProcess(
187
+ contentSources: ContentSourceEntity[]
188
+ ): Promise<ContentItemEntity[]> {
189
+ // Implement logic to fetch and create content items
190
+ const contentItems: ContentItemEntity[] = [];
191
+
192
+ // Your custom source logic here
193
+
194
+ return contentItems;
195
+ }
196
+
197
+ public async Autotag(contextUser: UserInfo): Promise<void> {
198
+ // Set up content source type
199
+ const contentSourceTypeID = await this.engine.setSubclassContentSourceType(
200
+ 'Custom Source',
201
+ contextUser
202
+ );
203
+
204
+ // Get configured sources
205
+ const contentSources = await this.engine.getAllContentSources(
206
+ contextUser,
207
+ contentSourceTypeID
208
+ );
209
+
210
+ // Process content
211
+ const contentItems = await this.SetContentItemsToProcess(contentSources);
212
+ await this.engine.ExtractTextAndProcessWithLLM(contentItems, contextUser);
123
213
  }
124
214
  }
125
215
  ```
126
216
 
127
- ## Configuration
217
+ ### Custom Content Type Attributes
218
+
219
+ Add custom prompts for specific content types by creating Content Type Attributes in the database. These will be automatically included in the AI processing prompts.
220
+
221
+ ## API Reference
222
+
223
+ ### AutotagBase (Abstract)
224
+
225
+ ```typescript
226
+ abstract class AutotagBase {
227
+ abstract SetContentItemsToProcess(
228
+ contentSources: ContentSourceEntity[]
229
+ ): Promise<ContentItemEntity[]>;
230
+
231
+ abstract Autotag(contextUser: UserInfo): Promise<void>;
232
+ }
233
+ ```
128
234
 
129
- The package supports configuration through environment variables or a configuration object:
235
+ ### AutotagBaseEngine
130
236
 
131
237
  ```typescript
132
- const processor = new ContentAutotaggingProcessor({
133
- aiModel: 'gpt-4',
134
- maxContentLength: 10000,
135
- taggingPrompt: 'Extract relevant tags from the following content:',
136
- batchSize: 5,
137
- storageAdapter: customStorageAdapter
138
- });
238
+ class AutotagBaseEngine extends AIEngine {
239
+ // Process content items with AI
240
+ async ExtractTextAndProcessWithLLM(
241
+ contentItems: ContentItemEntity[],
242
+ contextUser: UserInfo
243
+ ): Promise<void>;
244
+
245
+ // Process individual content item text
246
+ async ProcessContentItemText(
247
+ params: ContentItemProcessParams,
248
+ contextUser: UserInfo
249
+ ): Promise<void>;
250
+
251
+ // Get all content sources for a type
252
+ async getAllContentSources(
253
+ contextUser: UserInfo,
254
+ contentSourceTypeID: string
255
+ ): Promise<ContentSourceEntity[]>;
256
+ }
139
257
  ```
140
258
 
259
+ ## Environment Variables
260
+
261
+ ```bash
262
+ # For Azure Blob Storage
263
+ AZURE_STORAGE_CONNECTION_STRING=your_connection_string
264
+
265
+ # AI Model API Keys (handled by @memberjunction/ai)
266
+ OPENAI_API_KEY=your_openai_key
267
+ # Other AI provider keys as needed
268
+ ```
269
+
270
+ ## Error Handling
271
+
272
+ The package includes comprehensive error handling:
273
+ - Invalid content detection with automatic cleanup
274
+ - Checksum-based duplicate detection
275
+ - Graceful handling of parsing failures
276
+ - Token limit management with automatic chunking
277
+ - Network retry logic for external sources
278
+
279
+ ## Performance Considerations
280
+
281
+ - **Incremental Processing**: Only new/modified content is processed
282
+ - **Parallel Processing**: Content items can be processed in parallel
283
+ - **Chunking**: Large documents are automatically chunked for AI processing
284
+ - **Caching**: Processed content checksums prevent reprocessing
285
+
286
+ ## Database Schema
287
+
288
+ The package works with these MemberJunction entities:
289
+ - `Content Sources` - Configuration for each source
290
+ - `Content Items` - Individual pieces of content
291
+ - `Content Item Tags` - Generated tags
292
+ - `Content Item Attributes` - Additional extracted metadata
293
+ - `Content Process Runs` - Processing history
294
+ - `Content Types` - Content categorization
295
+ - `Content Source Types` - Source type definitions
296
+
141
297
  ## License
142
298
 
143
299
  ISC
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ /// <reference types="node" />
3
4
  import { CloudStorageBase } from "../generic/CloudStorageBase";
4
5
  import { UserInfo } from "@memberjunction/core";
5
6
  import { ContentItemEntity } from "@memberjunction/core-entities";
@@ -1 +1 @@
1
- {"version":3,"file":"AutotagAzureBlob.d.ts","sourceRoot":"","sources":["../../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,qBAAa,gBAAiB,SAAQ,gBAAgB;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;gBAElB,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAW9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwC1J,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1C,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAYtF"}
1
+ {"version":3,"file":"AutotagAzureBlob.d.ts","sourceRoot":"","sources":["../../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,qBAAa,gBAAiB,SAAQ,gBAAgB;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;gBAElB,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAW9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwC1J,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1C,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAYtF"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { UserInfo } from '@memberjunction/core';
3
4
  import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
4
5
  import { ContentSourceParams, ContentSourceTypeParams } from './content.types';
@@ -1 +1 @@
1
- {"version":3,"file":"AutotagBaseEngine.d.ts","sourceRoot":"","sources":["../../../../src/Engine/generic/AutotagBaseEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutotagBaseEngine.d.ts","sourceRoot":"","sources":["../../../../src/Engine/generic/AutotagBaseEngine.ts"],"names":[],"mappings":"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"}