Current file: app/src/lib/tools/seo-writer.ts
Current model: llama-3.3-70b
Current approach: Single prompt asking for meta titles, descriptions, Open Graph tags, keywords, and schema markup suggestions for multiple pages. No character count enforcement, no keyword density analysis, no duplicate detection.
Problems with current approach:
- Meta title lengths are not enforced (should be 50-60 characters). Titles regularly exceed or fall short.
- Meta descriptions are not enforced (should be 150-160 characters).
- No validation that keywords actually appear in the generated titles and descriptions.
- When multiple pages are submitted, similar pages may get near-identical meta content (cannibalization).
- Schema markup suggestions are generic and not validated against schema.org vocabulary.
Upgrade plan:
| Step |
Agent |
Action |
| 1 |
Page Analyzer |
Parse the page list into structured entries. For each page, identify: primary topic, target audience, page type (homepage, product, blog, docs, pricing). |
| 2 |
Keyword Planner |
For each page, generate primary and secondary keywords. Ensure keywords are unique across pages to avoid cannibalization. |
| 3 |
Meta Content Generator |
Generate meta title, meta description, OG title, OG description for each page. Include primary keyword in title and description. |
| 4 |
Constraint Validator |
Programmatic: Check meta title length (50-60 chars), meta description length (150-160 chars). Verify primary keyword appears in both title and description. Check for duplicate/near-duplicate content across pages. |
| 5 |
Schema Advisor |
For each page type, suggest the appropriate schema.org markup type (Article, Product, FAQ, Organization, etc.) with a valid JSON-LD template. |
| 6 |
Refinement Agent |
If character counts are out of range or keywords are missing, regenerate only the failing entries. Max 2 retries. |
- You are free to enhance the agents stacks in the above plan layout, the above one is just for reference. You can enhance more if needed.
Model suggestions to start with:
- Steps 1 and 2: Try
deepseek-v3.2 for page analysis and keyword planning (lightweight, structured task).
- Step 3: Try
llama-3.3-70b (current model, good at marketing copy). Also try qwen-3-32b or minimax-m2.5.
- Step 5: Try
deepseek-v3.2 or llama-4-maverick-17b for schema suggestions (structured output, not complex reasoning).
- Step 6: Same model as Step 3.
Model Selection Guidance
- You are free to pick any model from the Oxlo catalog based on your own testing and evaluation.
- The Models suggestions above, not mandates. Try them first, and if they do not meet the accuracy target, experiment with alternatives.
Compare against: Claude Sonnet 4.6 Thinking (strong at SEO and content strategy) & ChatGPT 5.3.
Acceptance criteria:
- 100% of meta titles fall within 50-60 character range (programmatically enforced).
- 100% of meta descriptions fall within 150-160 character range (programmatically enforced).
- Primary keyword appears in both title and description for every page.
- No two pages have more than 60% word overlap in their meta content (cannibalization check).
- Schema markup suggestions use valid schema.org types.
- Overall quality matches or exceeds Claude Sonnet 4.6 Thinking & ChatGPT 5.3 on test cases.
- Overall accuracy at 80%+.
Current file:
app/src/lib/tools/seo-writer.tsCurrent model:
llama-3.3-70bCurrent approach: Single prompt asking for meta titles, descriptions, Open Graph tags, keywords, and schema markup suggestions for multiple pages. No character count enforcement, no keyword density analysis, no duplicate detection.
Problems with current approach:
Upgrade plan:
Model suggestions to start with:
deepseek-v3.2for page analysis and keyword planning (lightweight, structured task).llama-3.3-70b(current model, good at marketing copy). Also tryqwen-3-32borminimax-m2.5.deepseek-v3.2orllama-4-maverick-17bfor schema suggestions (structured output, not complex reasoning).Model Selection Guidance
Compare against: Claude Sonnet 4.6 Thinking (strong at SEO and content strategy) & ChatGPT 5.3.
Acceptance criteria: