Spaces:
Sleeping
Sleeping
| from scoring import analyze_content | |
| def truncate(text: str, limit: int = 3500) -> str: | |
| return (text or "")[:limit] | |
| def rewrite_content(queries: str, competitors: str, content: str, mode: str = "Free Local") -> str: | |
| """ | |
| Semantic SEO content adapter. | |
| Analyzes content and adds structured SEO expansion sections. | |
| Works fully offline — no model downloads required. | |
| """ | |
| analysis = analyze_content(queries, competitors, content) | |
| missing = analysis.get("missing_entities", "") | |
| weak = analysis.get("weak_queries", "") | |
| recommendations = analysis.get("recommendations", "") | |
| global_score = analysis.get("global_score", "") | |
| expansion = f""" | |
| --- | |
| ## Semantic SEO Analysis | |
| Global Score: {global_score} | |
| ## Weak Query Coverage | |
| The following queries need stronger coverage in the text: | |
| {truncate(weak, 800)} | |
| ## Missing Topical Entities | |
| These entities should be naturally integrated to improve topical authority: | |
| {truncate(missing, 1000)} | |
| ## SEO Recommendations | |
| {truncate(recommendations, 1200)} | |
| ## Content Improvement Notes | |
| To outrank competitors, this page should: | |
| - Cover all query intents listed in the query pool | |
| - Include explanations of key entities and concepts | |
| - Add FAQ, comparison, and practical usage sections where relevant | |
| - Use clear H2/H3 structure for each major topic | |
| - Avoid keyword stuffing while maintaining high semantic density | |
| """ | |
| return content.strip() + expansion | |