myaidev-method 0.3.4 → 0.3.5
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/.claude-plugin/plugin.json +0 -1
- package/.env.example +5 -4
- package/CHANGELOG.md +2 -2
- package/CONTENT_CREATION_GUIDE.md +489 -3211
- package/DEVELOPER_USE_CASES.md +1 -1
- package/MODULAR_INSTALLATION.md +2 -2
- package/README.md +39 -33
- package/TECHNICAL_ARCHITECTURE.md +1 -1
- package/USER_GUIDE.md +242 -190
- package/agents/content-editor-agent.md +90 -0
- package/agents/content-planner-agent.md +97 -0
- package/agents/content-research-agent.md +62 -0
- package/agents/content-seo-agent.md +101 -0
- package/agents/content-writer-agent.md +69 -0
- package/agents/infographic-analyzer-agent.md +63 -0
- package/agents/infographic-designer-agent.md +72 -0
- package/bin/cli.js +776 -422
- package/{content-rules.example.md → content-rules-example.md} +2 -2
- package/dist/mcp/health-check.js +82 -68
- package/dist/mcp/mcp-config.json +8 -0
- package/dist/mcp/openstack-server.js +1746 -1262
- package/dist/server/.tsbuildinfo +1 -1
- package/extension.json +21 -4
- package/package.json +181 -184
- package/skills/company-config/SKILL.md +133 -0
- package/skills/configure/SKILL.md +1 -1
- package/skills/myai-configurator/SKILL.md +77 -0
- package/skills/myai-configurator/content-creation-configurator/SKILL.md +516 -0
- package/skills/myai-configurator/content-maintenance-configurator/SKILL.md +397 -0
- package/skills/myai-content-enrichment/SKILL.md +114 -0
- package/skills/myai-content-ideation/SKILL.md +288 -0
- package/skills/myai-content-ideation/evals/evals.json +182 -0
- package/skills/myai-content-production-coordinator/SKILL.md +946 -0
- package/skills/{content-rules-setup → myai-content-rules-setup}/SKILL.md +1 -1
- package/skills/{content-verifier → myai-content-verifier}/SKILL.md +1 -1
- package/skills/myai-content-writer/SKILL.md +333 -0
- package/skills/{infographic → myai-infographic}/SKILL.md +1 -1
- package/skills/myai-proprietary-content-verifier/SKILL.md +175 -0
- package/skills/myai-proprietary-content-verifier/evals/evals.json +36 -0
- package/skills/myai-skill-builder/SKILL.md +699 -0
- package/skills/myai-skill-builder/agents/analyzer-agent.md +137 -0
- package/skills/myai-skill-builder/agents/comparator-agent.md +77 -0
- package/skills/myai-skill-builder/agents/grader-agent.md +103 -0
- package/skills/myai-skill-builder/assets/eval_review.html +131 -0
- package/skills/myai-skill-builder/references/schemas.md +211 -0
- package/skills/myai-skill-builder/scripts/aggregate_benchmark.py +190 -0
- package/skills/myai-skill-builder/scripts/generate_review.py +381 -0
- package/skills/myai-skill-builder/scripts/package_skill.py +91 -0
- package/skills/myai-skill-builder/scripts/run_eval.py +105 -0
- package/skills/myai-skill-builder/scripts/run_loop.py +211 -0
- package/skills/myai-skill-builder/scripts/utils.py +123 -0
- package/skills/myai-visual-generator/SKILL.md +125 -0
- package/skills/myai-visual-generator/evals/evals.json +155 -0
- package/skills/myai-visual-generator/references/infographic-pipeline.md +73 -0
- package/skills/myai-visual-generator/references/research-visuals.md +57 -0
- package/skills/myai-visual-generator/references/services.md +89 -0
- package/skills/myai-visual-generator/scripts/visual-generation-utils.js +1272 -0
- package/skills/myaidev-figma/SKILL.md +212 -0
- package/skills/myaidev-figma/capture.js +133 -0
- package/skills/myaidev-figma/crawl.js +130 -0
- package/skills/myaidev-figma-configure/SKILL.md +130 -0
- package/skills/openstack-manager/SKILL.md +1 -1
- package/skills/payloadcms-publisher/SKILL.md +141 -77
- package/skills/payloadcms-publisher/references/field-mapping.md +142 -0
- package/skills/payloadcms-publisher/references/lexical-format.md +97 -0
- package/skills/security-auditor/SKILL.md +1 -1
- package/src/cli/commands/addon.js +105 -7
- package/src/config/workflows.js +172 -228
- package/src/lib/ascii-banner.js +197 -182
- package/src/lib/{content-coordinator.js → content-production-coordinator.js} +649 -459
- package/src/lib/installation-detector.js +93 -59
- package/src/lib/payloadcms-utils.js +285 -510
- package/src/lib/workflow-installer.js +55 -0
- package/src/mcp/health-check.js +82 -68
- package/src/mcp/openstack-server.js +1746 -1262
- package/src/scripts/configure-visual-apis.js +224 -173
- package/src/scripts/configure-wordpress-mcp.js +96 -66
- package/src/scripts/init/install.js +109 -85
- package/src/scripts/init-project.js +138 -67
- package/src/scripts/utils/write-content.js +67 -52
- package/src/scripts/wordpress/publish-to-wordpress.js +128 -128
- package/src/templates/claude/CLAUDE.md +19 -12
- package/hooks/hooks.json +0 -26
- package/skills/content-coordinator/SKILL.md +0 -130
- package/skills/content-enrichment/SKILL.md +0 -80
- package/skills/content-writer/SKILL.md +0 -285
- package/skills/skill-builder/SKILL.md +0 -417
- package/skills/visual-generator/SKILL.md +0 -140
- /package/skills/{content-writer → myai-content-writer}/agents/editor-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/research-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/seo-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/visual-planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/writer-agent.md +0 -0
|
@@ -21,144 +21,144 @@ const args = process.argv.slice(2);
|
|
|
21
21
|
const filePath = args[0];
|
|
22
22
|
const statusIndex = args.indexOf("--status");
|
|
23
23
|
const requestedStatus =
|
|
24
|
-
|
|
24
|
+
statusIndex !== -1 && args[statusIndex + 1] ? args[statusIndex + 1] : "draft";
|
|
25
25
|
|
|
26
26
|
if (!filePath) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
console.error("Error: File path is required");
|
|
28
|
+
console.error(
|
|
29
|
+
"Usage: node publish-to-wordpress.js <file-path> [--status draft|publish]",
|
|
30
|
+
);
|
|
31
|
+
process.exit(1);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
// Validate WordPress configuration
|
|
35
35
|
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
!process.env.WORDPRESS_URL ||
|
|
37
|
+
!process.env.WORDPRESS_USERNAME ||
|
|
38
|
+
!process.env.WORDPRESS_APP_PASSWORD
|
|
39
39
|
) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
console.error("Error: WordPress configuration is incomplete");
|
|
41
|
+
console.error("Required environment variables:");
|
|
42
|
+
console.error(" - WORDPRESS_URL");
|
|
43
|
+
console.error(" - WORDPRESS_USERNAME");
|
|
44
|
+
console.error(" - WORDPRESS_APP_PASSWORD");
|
|
45
|
+
console.error(
|
|
46
|
+
"\nRun /myai-configurator wordpress to set up your WordPress connection",
|
|
47
|
+
);
|
|
48
|
+
process.exit(1);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
async function publishToWordPress() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
52
|
+
try {
|
|
53
|
+
// Read and parse markdown file
|
|
54
|
+
const absolutePath = resolve(filePath);
|
|
55
|
+
const fileContent = readFileSync(absolutePath, "utf-8");
|
|
56
|
+
const { data: frontmatter, content } = matter(fileContent);
|
|
57
|
+
|
|
58
|
+
console.log("📄 Processing file:", filePath);
|
|
59
|
+
console.log("📋 Title:", frontmatter.title || "No title");
|
|
60
|
+
|
|
61
|
+
// Extract interactive blocks before markdown conversion
|
|
62
|
+
// const { markdown: cleanMarkdown, interactiveBlocks } =
|
|
63
|
+
// GutenbergConverter.extractInteractiveBlocks(content);
|
|
64
|
+
|
|
65
|
+
// if (interactiveBlocks.length > 0) {
|
|
66
|
+
// console.log(
|
|
67
|
+
// ` Interactive blocks: ${interactiveBlocks.length} found`,
|
|
68
|
+
// );
|
|
69
|
+
// }
|
|
70
|
+
|
|
71
|
+
// Convert markdown to HTML using marked (preserves placeholders)
|
|
72
|
+
const html = marked.parse(content);
|
|
73
|
+
|
|
74
|
+
// Convert HTML to Gutenberg blocks
|
|
75
|
+
let htmlContent = GutenbergConverter.htmlToGutenberg(html);
|
|
76
|
+
|
|
77
|
+
// Restore interactive blocks as raw HTML blocks
|
|
78
|
+
// if (interactiveBlocks.length > 0) {
|
|
79
|
+
// htmlContent = GutenbergConverter.restoreInteractiveBlocks(
|
|
80
|
+
// htmlContent,
|
|
81
|
+
// interactiveBlocks,
|
|
82
|
+
// );
|
|
83
|
+
// }
|
|
84
|
+
|
|
85
|
+
// Prepare WordPress configuration
|
|
86
|
+
const config = {
|
|
87
|
+
endpoint: {
|
|
88
|
+
url: process.env.WORDPRESS_URL,
|
|
89
|
+
api_version: "wp/v2",
|
|
90
|
+
authentication: {
|
|
91
|
+
username: process.env.WORDPRESS_USERNAME,
|
|
92
|
+
password: process.env.WORDPRESS_APP_PASSWORD,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
defaults: {
|
|
96
|
+
post_status: requestedStatus,
|
|
97
|
+
format: "standard",
|
|
98
|
+
comment_status: "open",
|
|
99
|
+
ping_status: "open",
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Initialize WordPress client
|
|
104
|
+
const wp = new WordPressMCP(config);
|
|
105
|
+
|
|
106
|
+
// Prepare post data
|
|
107
|
+
const postParams = {
|
|
108
|
+
title: frontmatter.title || "Untitled",
|
|
109
|
+
content: htmlContent,
|
|
110
|
+
status: requestedStatus,
|
|
111
|
+
excerpt: frontmatter.meta_description || "",
|
|
112
|
+
slug: frontmatter.slug || "",
|
|
113
|
+
use_gutenberg: process.env.USE_GUTENBERG === "true",
|
|
114
|
+
// Note: Tags and categories require ID mapping which will be added in future versions
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
console.log("🚀 Publishing to WordPress...");
|
|
118
|
+
console.log(" URL:", process.env.WORDPRESS_URL);
|
|
119
|
+
console.log(" Status:", requestedStatus);
|
|
120
|
+
console.log(
|
|
121
|
+
" Format:",
|
|
122
|
+
postParams.use_gutenberg ? "Gutenberg" : "Classic",
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
// Create the post
|
|
126
|
+
const result = await wp.createPost(postParams);
|
|
127
|
+
|
|
128
|
+
// Success!
|
|
129
|
+
console.log("\n✅ Successfully published to WordPress!");
|
|
130
|
+
console.log("\n📄 Post Details:");
|
|
131
|
+
console.log(" Post ID:", result.id);
|
|
132
|
+
console.log(" Title:", result.title.rendered);
|
|
133
|
+
console.log(" Status:", result.status);
|
|
134
|
+
console.log(" Slug:", result.slug);
|
|
135
|
+
|
|
136
|
+
console.log("\n🔗 URLs:");
|
|
137
|
+
console.log(" View:", result.link);
|
|
138
|
+
console.log(
|
|
139
|
+
" Edit:",
|
|
140
|
+
`${process.env.WORDPRESS_URL}/wp-admin/post.php?post=${result.id}&action=edit`,
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
return result;
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error("\n❌ Error publishing to WordPress:");
|
|
146
|
+
console.error(error.message);
|
|
147
|
+
|
|
148
|
+
if (error.message.includes("401")) {
|
|
149
|
+
console.error("\n🔑 Authentication failed. Please check:");
|
|
150
|
+
console.error(" 1. Your WordPress username is correct");
|
|
151
|
+
console.error(" 2. Your Application Password is valid");
|
|
152
|
+
console.error(" 3. Application Passwords are enabled on your site");
|
|
153
|
+
} else if (error.message.includes("404")) {
|
|
154
|
+
console.error("\n🌐 WordPress site not found. Please check:");
|
|
155
|
+
console.error(" 1. Your WORDPRESS_URL is correct");
|
|
156
|
+
console.error(" 2. The site is accessible");
|
|
157
|
+
console.error(" 3. The REST API is enabled");
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// Run the publisher
|
|
@@ -27,20 +27,16 @@ Skills are the primary delivery mechanism. Each skill is a self-contained orches
|
|
|
27
27
|
|
|
28
28
|
### Content Creation
|
|
29
29
|
- `content-writer` - Multi-agent pipeline (research, plan, write, SEO, edit, visuals)
|
|
30
|
-
- `content-rules-
|
|
31
|
-
- `content-verifier` - Content uniqueness and quality verification
|
|
32
|
-
- `content-coordinator` - Batch content verification and publishing
|
|
33
|
-
- `content-enrichment` - Enrich articles with real-time data and visuals
|
|
30
|
+
- `content-rules-config` - Interactive brand voice configuration
|
|
31
|
+
- `proprietary-content-verifier` - Content uniqueness and quality verification
|
|
32
|
+
- `content-production-coordinator` - Batch content verification and publishing
|
|
33
|
+
- `myai-content-enrichment` - Enrich articles with real-time data and visuals
|
|
34
34
|
|
|
35
35
|
### Publishing
|
|
36
|
-
- `
|
|
37
|
-
- `payloadcms-publisher` - PayloadCMS with Lexical format
|
|
38
|
-
- `docusaurus-publisher` - Docusaurus with sidebar config
|
|
39
|
-
- `mintlify-publisher` - Mintlify with navigation updates
|
|
40
|
-
- `astro-publisher` - Astro content collections
|
|
36
|
+
- `content-publisher` - Platform-detecting publisher (WordPress, PayloadCMS, Astro, Docusaurus, Mintlify)
|
|
41
37
|
|
|
42
38
|
### Visual & Media
|
|
43
|
-
- `visual-generator` - AI image/video generation (Gemini, DALL-E, FLUX, Veo)
|
|
39
|
+
- `myai-visual-generator` - AI image/video generation (Gemini, DALL-E, FLUX, Veo) with fal.ai MCP model discovery
|
|
44
40
|
|
|
45
41
|
### Deployment & Infrastructure
|
|
46
42
|
- `deployer` - Multi-environment deployment (dev/staging/prod)
|
|
@@ -55,7 +51,7 @@ Skills are the primary delivery mechanism. Each skill is a self-contained orches
|
|
|
55
51
|
- `security-auditor` - Compliance auditing (PCI-DSS, GDPR, SOC 2)
|
|
56
52
|
|
|
57
53
|
### Skill Development
|
|
58
|
-
- `skill-builder` - Guided skill creation with concept discovery, iterative refinement, testing, and marketplace submission
|
|
54
|
+
- `myai-skill-builder` - Guided skill creation with concept discovery, iterative refinement, testing, and marketplace submission
|
|
59
55
|
- `skill-contributor` - Quick skill scaffolding and marketplace submission
|
|
60
56
|
|
|
61
57
|
### Configuration
|
|
@@ -64,7 +60,7 @@ Skills are the primary delivery mechanism. Each skill is a self-contained orches
|
|
|
64
60
|
## Content Customization
|
|
65
61
|
|
|
66
62
|
- **content-rules.md** - Brand voice and writing guidelines
|
|
67
|
-
- Run the `content-rules-
|
|
63
|
+
- Run the `content-rules-config` skill to generate this interactively
|
|
68
64
|
|
|
69
65
|
## Platform Configuration
|
|
70
66
|
|
|
@@ -84,6 +80,7 @@ PAYLOADCMS_PASSWORD=your-password
|
|
|
84
80
|
# Visual APIs
|
|
85
81
|
GOOGLE_API_KEY=your-key
|
|
86
82
|
OPENAI_API_KEY=your-key
|
|
83
|
+
FAL_KEY=your-key
|
|
87
84
|
|
|
88
85
|
# Coolify
|
|
89
86
|
COOLIFY_URL=https://coolify.your-server.com
|
|
@@ -100,6 +97,16 @@ node .myaidev-method/scripts/wordpress-health-check.js
|
|
|
100
97
|
node .myaidev-method/scripts/coolify-deploy-app.js --name myapp
|
|
101
98
|
```
|
|
102
99
|
|
|
100
|
+
## MCP Servers
|
|
101
|
+
|
|
102
|
+
The following MCP servers are auto-configured during init:
|
|
103
|
+
|
|
104
|
+
| Server | Purpose | Env Var Required |
|
|
105
|
+
|--------|---------|------------------|
|
|
106
|
+
| `fal-ai` | Visual generation model discovery, pricing, and generation across 600+ models | `FAL_KEY` |
|
|
107
|
+
|
|
108
|
+
MCP servers activate automatically when their required environment variable is set.
|
|
109
|
+
|
|
103
110
|
## Project Structure
|
|
104
111
|
|
|
105
112
|
```
|
package/hooks/hooks.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"PostToolUse": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "Write|Edit",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"type": "prompt",
|
|
9
|
-
"prompt": "If the file written/edited is a content markdown file (in content-output/ or content-queue/), verify it has valid frontmatter with title, description, and date fields. Report any missing required fields."
|
|
10
|
-
}
|
|
11
|
-
]
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"Stop": [
|
|
15
|
-
{
|
|
16
|
-
"matcher": "",
|
|
17
|
-
"hooks": [
|
|
18
|
-
{
|
|
19
|
-
"type": "prompt",
|
|
20
|
-
"prompt": "Before finishing, check if there are any unsaved content drafts in content-output/ that haven't been published. If found, remind the user about pending drafts."
|
|
21
|
-
}
|
|
22
|
-
]
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: content-coordinator
|
|
3
|
-
description: Orchestrates content verification and multi-platform publishing workflows with batch processing. Use when publishing multiple content files or running content production pipelines.
|
|
4
|
-
argument-hint: "[directory] [--dry-run] [--force] [--verbose] [--platform wordpress|payloadcms]"
|
|
5
|
-
allowed-tools: [Read, Write, Edit, WebSearch, WebFetch, Task, Bash, Glob, Grep, AskUserQuestion]
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Content Production Coordinator
|
|
10
|
-
|
|
11
|
-
You are the **Content Production Coordinator** — orchestrating content verification and publishing workflows. You manage batch content processing, quality verification, and multi-platform publishing.
|
|
12
|
-
|
|
13
|
-
## Arguments
|
|
14
|
-
|
|
15
|
-
Parse from: `$ARGUMENTS`
|
|
16
|
-
|
|
17
|
-
- `[directory]` → Path to content queue directory (default: `./content-queue/`)
|
|
18
|
-
- `--dry-run` → Verify only, don't publish
|
|
19
|
-
- `--force` → Skip confirmation prompts
|
|
20
|
-
- `--verbose` → Detailed progress output
|
|
21
|
-
- `--platform` → Target platform (default: from frontmatter)
|
|
22
|
-
- `--output-dir` → Report directory
|
|
23
|
-
|
|
24
|
-
## Content Queue Format
|
|
25
|
-
|
|
26
|
-
Each markdown file in the queue should have:
|
|
27
|
-
|
|
28
|
-
```markdown
|
|
29
|
-
---
|
|
30
|
-
title: "Article Title"
|
|
31
|
-
content_type: article
|
|
32
|
-
target_platform: wordpress
|
|
33
|
-
status: pending
|
|
34
|
-
priority: normal
|
|
35
|
-
references:
|
|
36
|
-
- "https://source1.com"
|
|
37
|
-
goals:
|
|
38
|
-
- "Primary goal"
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Proprietary Content
|
|
42
|
-
|
|
43
|
-
[Unique content to be verified]
|
|
44
|
-
|
|
45
|
-
## Supporting Content
|
|
46
|
-
|
|
47
|
-
[Additional context]
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Workflow
|
|
51
|
-
|
|
52
|
-
### Phase 1: Discovery
|
|
53
|
-
1. Scan content directory for `.md` files
|
|
54
|
-
2. Parse frontmatter from each file
|
|
55
|
-
3. Filter by `status: pending`
|
|
56
|
-
4. Sort by priority
|
|
57
|
-
|
|
58
|
-
### Phase 2: Verification
|
|
59
|
-
For each content file, spawn a verification subagent:
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
Task(subagent_type: "general-purpose")
|
|
63
|
-
Prompt: Verify content uniqueness and quality
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Verification checks:**
|
|
67
|
-
- Knowledge redundancy (is this unique or commodity info?)
|
|
68
|
-
- Content quality (depth, originality, value-add)
|
|
69
|
-
- AI detection characteristics
|
|
70
|
-
- Minimum length requirements
|
|
71
|
-
|
|
72
|
-
**Scoring:** High | Medium | Low | Minimal redundancy
|
|
73
|
-
|
|
74
|
-
### Phase 3: Categorization
|
|
75
|
-
Based on verification results:
|
|
76
|
-
- **Ready for Publishing:** Low/Minimal redundancy, passes quality
|
|
77
|
-
- **Needs Review:** High/Medium redundancy, quality concerns
|
|
78
|
-
|
|
79
|
-
### Phase 4: Report Generation
|
|
80
|
-
Create timestamped report:
|
|
81
|
-
```
|
|
82
|
-
content-reports/report-{timestamp}.md
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Contents:
|
|
86
|
-
- Summary statistics
|
|
87
|
-
- Per-file verification results
|
|
88
|
-
- Recommendations
|
|
89
|
-
- Publishing readiness status
|
|
90
|
-
|
|
91
|
-
### Phase 5: Publishing (unless --dry-run)
|
|
92
|
-
For approved content:
|
|
93
|
-
1. Confirm with user (unless --force)
|
|
94
|
-
2. Spawn publishing subagents in parallel per platform
|
|
95
|
-
3. Track success/failure per file
|
|
96
|
-
4. Report published URLs
|
|
97
|
-
|
|
98
|
-
### Phase 6: Status Update
|
|
99
|
-
- Update frontmatter `status` field: `pending` → `published` or `needs-review`
|
|
100
|
-
- Add `published_at` timestamp
|
|
101
|
-
- Add `published_url` if available
|
|
102
|
-
|
|
103
|
-
## Parallel Processing
|
|
104
|
-
|
|
105
|
-
- Verification: up to 3 files in parallel
|
|
106
|
-
- Publishing: up to 5 files in parallel per platform
|
|
107
|
-
- Use Task tool with run_in_background for parallelism
|
|
108
|
-
|
|
109
|
-
## Error Handling
|
|
110
|
-
|
|
111
|
-
- Verification failure → mark as needs-review, continue
|
|
112
|
-
- Publishing failure → report error, don't update status
|
|
113
|
-
- Partial batch failure → publish successful ones, report failures
|
|
114
|
-
|
|
115
|
-
## Progress Reporting
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
Content Production Report
|
|
119
|
-
═══════════════════════════
|
|
120
|
-
Scanned: 8 files
|
|
121
|
-
Verified: 8/8
|
|
122
|
-
Ready: 6 files
|
|
123
|
-
Needs Review: 2 files
|
|
124
|
-
|
|
125
|
-
Publishing (6 files):
|
|
126
|
-
✓ article-1.md → https://blog.com/article-1
|
|
127
|
-
✓ article-2.md → https://blog.com/article-2
|
|
128
|
-
✗ article-3.md → Error: API timeout
|
|
129
|
-
...
|
|
130
|
-
```
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: content-enrichment
|
|
3
|
-
description: Enriches existing articles with real-time data, updated statistics, AI-generated visuals, and fresh references. Use when updating old content, adding citations to articles, refreshing outdated statistics, or enhancing posts with images and FAQ sections.
|
|
4
|
-
argument-hint: "[file.md] [--add-images] [--update-stats] [--add-references]"
|
|
5
|
-
allowed-tools: [Read, Write, Edit, WebSearch, WebFetch, Task, Bash, Glob, Grep]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Content Enrichment Agent
|
|
9
|
-
|
|
10
|
-
You are a **Content Enrichment Specialist** — taking existing articles and enhancing them with current data, fresh references, updated statistics, and AI-generated visuals.
|
|
11
|
-
|
|
12
|
-
## Arguments
|
|
13
|
-
|
|
14
|
-
Parse from: `$ARGUMENTS`
|
|
15
|
-
|
|
16
|
-
- `[file.md]` → Article to enrich (required)
|
|
17
|
-
- `--add-images` → Generate AI visuals for the article
|
|
18
|
-
- `--update-stats` → Find and update statistics/data points
|
|
19
|
-
- `--add-references` → Add authoritative source links
|
|
20
|
-
- `--add-faq` → Generate FAQ section from content
|
|
21
|
-
- `--add-schema` → Add structured data recommendations
|
|
22
|
-
- `--full` → All enrichment types
|
|
23
|
-
- `--dry-run` → Show what would change without modifying
|
|
24
|
-
|
|
25
|
-
## Enrichment Types
|
|
26
|
-
|
|
27
|
-
### 1. Statistics Update (`--update-stats`)
|
|
28
|
-
- Identify data points, percentages, year references in the article
|
|
29
|
-
- Search for current versions of cited statistics
|
|
30
|
-
- Replace outdated figures with current ones
|
|
31
|
-
- Add citation sources
|
|
32
|
-
|
|
33
|
-
### 2. Reference Addition (`--add-references`)
|
|
34
|
-
- Identify claims without sources
|
|
35
|
-
- Find authoritative references via WebSearch
|
|
36
|
-
- Add inline citations or reference section
|
|
37
|
-
- Verify links are accessible
|
|
38
|
-
|
|
39
|
-
### 3. Visual Enhancement (`--add-images`)
|
|
40
|
-
- Identify sections that benefit from visuals
|
|
41
|
-
- Generate image descriptions/alt text
|
|
42
|
-
- Create visual-plan.json for the visual-generator skill
|
|
43
|
-
- Insert image placeholders in markdown
|
|
44
|
-
|
|
45
|
-
### 4. FAQ Generation (`--add-faq`)
|
|
46
|
-
- Extract key topics from article
|
|
47
|
-
- Generate 5-8 relevant questions
|
|
48
|
-
- Write concise answers from article content
|
|
49
|
-
- Format as ## FAQ section with schema-ready markup
|
|
50
|
-
|
|
51
|
-
### 5. Schema Recommendations (`--add-schema`)
|
|
52
|
-
- Analyze content type (article, how-to, FAQ, review)
|
|
53
|
-
- Suggest JSON-LD structured data
|
|
54
|
-
- Generate schema markup snippet
|
|
55
|
-
|
|
56
|
-
## Workflow
|
|
57
|
-
|
|
58
|
-
1. Read the target article
|
|
59
|
-
2. Parse frontmatter and content structure
|
|
60
|
-
3. Identify enrichment opportunities based on flags
|
|
61
|
-
4. Execute enrichments (web search for data, generate content)
|
|
62
|
-
5. Apply changes to the article (preserving structure)
|
|
63
|
-
6. Update frontmatter with `enriched_at` timestamp
|
|
64
|
-
7. Report changes made
|
|
65
|
-
|
|
66
|
-
## Output
|
|
67
|
-
|
|
68
|
-
Modified article in-place with:
|
|
69
|
-
- Updated frontmatter (`enriched_at`, `enrichment_types`)
|
|
70
|
-
- Enhanced content sections
|
|
71
|
-
- New sections added (FAQ, references) at appropriate locations
|
|
72
|
-
- Image placeholders where visuals were planned
|
|
73
|
-
|
|
74
|
-
## Quality Rules
|
|
75
|
-
|
|
76
|
-
- Never remove existing content
|
|
77
|
-
- Preserve author's voice and style
|
|
78
|
-
- Only add verifiable, current information
|
|
79
|
-
- Mark enriched sections with HTML comments if needed for tracking
|
|
80
|
-
- Respect content-rules.md if present
|