@nguyenphp/antigravity-marketing 1.0.16 → 1.0.19

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.
Files changed (376) hide show
  1. package/README.md +187 -74
  2. package/bin/index.js +4 -4
  3. package/package.json +4 -3
  4. package/templates/.agent/agents/backend-specialist.md +263 -0
  5. package/templates/.agent/agents/database-architect.md +226 -0
  6. package/templates/.agent/agents/debugger.md +225 -0
  7. package/templates/.agent/agents/devops-engineer.md +242 -0
  8. package/templates/.agent/agents/documentation-writer.md +104 -0
  9. package/templates/.agent/agents/explorer-agent.md +73 -0
  10. package/templates/.agent/agents/frontend-specialist.md +527 -0
  11. package/templates/.agent/agents/game-developer.md +162 -0
  12. package/templates/.agent/agents/mobile-developer.md +377 -0
  13. package/templates/.agent/agents/orchestrator.md +400 -0
  14. package/templates/.agent/agents/penetration-tester.md +188 -0
  15. package/templates/.agent/agents/performance-optimizer.md +187 -0
  16. package/templates/.agent/agents/project-planner.md +403 -0
  17. package/templates/.agent/agents/security-auditor.md +170 -0
  18. package/templates/.agent/agents/seo-specialist.md +111 -0
  19. package/templates/.agent/agents/test-engineer.md +158 -0
  20. package/templates/.agent/rules/GEMINI.md +248 -0
  21. package/templates/.agent/skills/analytics-marketing/SKILL.md +172 -324
  22. package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
  23. package/templates/.agent/skills/api-patterns/api-style.md +42 -0
  24. package/templates/.agent/skills/api-patterns/auth.md +24 -0
  25. package/templates/.agent/skills/api-patterns/documentation.md +26 -0
  26. package/templates/.agent/skills/api-patterns/graphql.md +41 -0
  27. package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
  28. package/templates/.agent/skills/api-patterns/response.md +37 -0
  29. package/templates/.agent/skills/api-patterns/rest.md +40 -0
  30. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  31. package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
  32. package/templates/.agent/skills/api-patterns/trpc.md +41 -0
  33. package/templates/.agent/skills/api-patterns/versioning.md +22 -0
  34. package/templates/.agent/skills/app-builder/SKILL.md +75 -0
  35. package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
  36. package/templates/.agent/skills/app-builder/feature-building.md +53 -0
  37. package/templates/.agent/skills/app-builder/project-detection.md +34 -0
  38. package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
  39. package/templates/.agent/skills/app-builder/tech-stack.md +40 -0
  40. package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
  41. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  42. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  43. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  44. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  45. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  46. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  47. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  48. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  49. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  50. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  51. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  52. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  53. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  54. package/templates/.agent/skills/architecture/SKILL.md +55 -0
  55. package/templates/.agent/skills/architecture/context-discovery.md +43 -0
  56. package/templates/.agent/skills/architecture/examples.md +94 -0
  57. package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
  58. package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
  59. package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
  60. package/templates/.agent/skills/banner-design/SKILL.md +192 -0
  61. package/templates/.agent/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
  62. package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
  63. package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
  64. package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
  65. package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  66. package/templates/.agent/skills/brand/SKILL.md +97 -0
  67. package/templates/.agent/skills/brand/references/approval-checklist.md +169 -0
  68. package/templates/.agent/skills/brand/references/asset-organization.md +157 -0
  69. package/templates/.agent/skills/brand/references/brand-guideline-template.md +140 -0
  70. package/templates/.agent/skills/brand/references/color-palette-management.md +186 -0
  71. package/templates/.agent/skills/brand/references/consistency-checklist.md +94 -0
  72. package/templates/.agent/skills/brand/references/logo-usage-rules.md +185 -0
  73. package/templates/.agent/skills/brand/references/messaging-framework.md +85 -0
  74. package/templates/.agent/skills/brand/references/typography-specifications.md +214 -0
  75. package/templates/.agent/skills/brand/references/update.md +118 -0
  76. package/templates/.agent/skills/brand/references/visual-identity.md +96 -0
  77. package/templates/.agent/skills/brand/references/voice-framework.md +88 -0
  78. package/templates/.agent/skills/brand/scripts/extract-colors.cjs +341 -0
  79. package/templates/.agent/skills/brand/scripts/inject-brand-context.cjs +349 -0
  80. package/templates/.agent/skills/brand/scripts/sync-brand-to-tokens.cjs +266 -0
  81. package/templates/.agent/skills/brand/scripts/validate-asset.cjs +387 -0
  82. package/templates/.agent/skills/brand/templates/brand-guidelines-starter.md +275 -0
  83. package/templates/.agent/skills/clean-code/SKILL.md +201 -0
  84. package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
  85. package/templates/.agent/skills/copywriting/SKILL.md +250 -0
  86. package/templates/.agent/skills/database-design/SKILL.md +52 -0
  87. package/templates/.agent/skills/database-design/database-selection.md +43 -0
  88. package/templates/.agent/skills/database-design/indexing.md +39 -0
  89. package/templates/.agent/skills/database-design/migrations.md +48 -0
  90. package/templates/.agent/skills/database-design/optimization.md +36 -0
  91. package/templates/.agent/skills/database-design/orm-selection.md +30 -0
  92. package/templates/.agent/skills/database-design/schema-design.md +56 -0
  93. package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  94. package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
  95. package/templates/.agent/skills/docker-expert/SKILL.md +409 -0
  96. package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
  97. package/templates/.agent/skills/frontend-design/color-system.md +311 -0
  98. package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
  99. package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
  100. package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  101. package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  102. package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
  103. package/templates/.agent/skills/frontend-design/ux-psychology.md +541 -0
  104. package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
  105. package/templates/.agent/skills/frontend-slides/SKILL.md +92 -0
  106. package/templates/.agent/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  107. package/templates/.agent/skills/frontend-slides/animation-patterns.md +110 -0
  108. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.html +789 -0
  109. package/templates/.agent/skills/frontend-slides/examples/n8n-jupviec-automation.pptx +0 -0
  110. package/templates/.agent/skills/frontend-slides/html-template.md +347 -0
  111. package/templates/.agent/skills/frontend-slides/scripts/export-pptx.py +58 -0
  112. package/templates/.agent/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  113. package/templates/.agent/skills/frontend-slides/viewport-base.css +153 -0
  114. package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  115. package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  116. package/templates/.agent/skills/game-development/SKILL.md +167 -0
  117. package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
  118. package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  119. package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
  120. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  121. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  122. package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  123. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  124. package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
  125. package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  126. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  127. package/templates/.agent/skills/growth-engine/SKILL.md +244 -0
  128. package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/templates/.agent/skills/marketing-report-expert/SKILL.md +70 -0
  134. package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
  135. package/templates/.agent/skills/minimax-docx/LICENSE +21 -0
  136. package/templates/.agent/skills/minimax-docx/SKILL.md +274 -0
  137. package/templates/.agent/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  138. package/templates/.agent/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  139. package/templates/.agent/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  140. package/templates/.agent/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  141. package/templates/.agent/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  142. package/templates/.agent/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  143. package/templates/.agent/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  144. package/templates/.agent/skills/minimax-docx/references/cjk_typography.md +357 -0
  145. package/templates/.agent/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  146. package/templates/.agent/skills/minimax-docx/references/comments_guide.md +191 -0
  147. package/templates/.agent/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  148. package/templates/.agent/skills/minimax-docx/references/design_principles.md +819 -0
  149. package/templates/.agent/skills/minimax-docx/references/openxml_element_order.md +308 -0
  150. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  151. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  152. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  153. package/templates/.agent/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  154. package/templates/.agent/skills/minimax-docx/references/openxml_units.md +72 -0
  155. package/templates/.agent/skills/minimax-docx/references/scenario_a_create.md +284 -0
  156. package/templates/.agent/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  157. package/templates/.agent/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  158. package/templates/.agent/skills/minimax-docx/references/track_changes_guide.md +200 -0
  159. package/templates/.agent/skills/minimax-docx/references/troubleshooting.md +506 -0
  160. package/templates/.agent/skills/minimax-docx/references/typography_guide.md +294 -0
  161. package/templates/.agent/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  162. package/templates/.agent/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  163. package/templates/.agent/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  164. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  165. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  166. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  167. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  168. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  169. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  170. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  171. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  172. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  173. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  174. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  175. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  176. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  177. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  178. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  179. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  180. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  181. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  182. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  183. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  184. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  185. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  186. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  187. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  188. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  189. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  190. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  191. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  192. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  193. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  194. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  195. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  196. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  197. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  198. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  199. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  200. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  201. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  202. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  203. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  204. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  205. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  206. package/templates/.agent/skills/minimax-docx/scripts/env_check.sh +196 -0
  207. package/templates/.agent/skills/minimax-docx/scripts/setup.ps1 +274 -0
  208. package/templates/.agent/skills/minimax-docx/scripts/setup.sh +504 -0
  209. package/templates/.agent/skills/minimax-multimodal-toolkit/SKILL.md +359 -0
  210. package/templates/.agent/skills/minimax-pdf/README.md +222 -0
  211. package/templates/.agent/skills/minimax-pdf/SKILL.md +201 -0
  212. package/templates/.agent/skills/minimax-pdf/design/design.md +381 -0
  213. package/templates/.agent/skills/minimax-pdf/scripts/cover.py +1579 -0
  214. package/templates/.agent/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  215. package/templates/.agent/skills/minimax-pdf/scripts/fill_write.py +242 -0
  216. package/templates/.agent/skills/minimax-pdf/scripts/make.sh +491 -0
  217. package/templates/.agent/skills/minimax-pdf/scripts/merge.py +112 -0
  218. package/templates/.agent/skills/minimax-pdf/scripts/palette.py +559 -0
  219. package/templates/.agent/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  220. package/templates/.agent/skills/minimax-pdf/scripts/render_body.py +1055 -0
  221. package/templates/.agent/skills/minimax-pdf/scripts/render_cover.cjs +111 -0
  222. package/templates/.agent/skills/minimax-xlsx/SKILL.md +138 -0
  223. package/templates/.agent/skills/minimax-xlsx/references/create.md +691 -0
  224. package/templates/.agent/skills/minimax-xlsx/references/edit.md +684 -0
  225. package/templates/.agent/skills/minimax-xlsx/references/fix.md +37 -0
  226. package/templates/.agent/skills/minimax-xlsx/references/format.md +768 -0
  227. package/templates/.agent/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  228. package/templates/.agent/skills/minimax-xlsx/references/read-analyze.md +97 -0
  229. package/templates/.agent/skills/minimax-xlsx/references/validate.md +772 -0
  230. package/templates/.agent/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  231. package/templates/.agent/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  232. package/templates/.agent/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  233. package/templates/.agent/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  234. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  235. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  236. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  237. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  238. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  239. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  240. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  241. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  242. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  243. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  244. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  245. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  246. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  247. package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
  248. package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
  249. package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
  250. package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  251. package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  252. package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  253. package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  254. package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
  255. package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
  256. package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
  257. package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
  258. package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
  259. package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  260. package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
  261. package/templates/.agent/skills/nestjs-expert/SKILL.md +552 -0
  262. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  263. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  264. package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
  265. package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
  266. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  267. package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
  268. package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
  269. package/templates/.agent/skills/ppc-advertising/SKILL.md +183 -475
  270. package/templates/.agent/skills/pptx-generator/SKILL.md +249 -0
  271. package/templates/.agent/skills/pptx-generator/references/design-system.md +392 -0
  272. package/templates/.agent/skills/pptx-generator/references/editing.md +162 -0
  273. package/templates/.agent/skills/pptx-generator/references/pitfalls.md +112 -0
  274. package/templates/.agent/skills/pptx-generator/references/pptxgenjs.md +420 -0
  275. package/templates/.agent/skills/pptx-generator/references/slide-types.md +413 -0
  276. package/templates/.agent/skills/prisma-expert/SKILL.md +355 -0
  277. package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
  278. package/templates/.agent/skills/react-patterns/SKILL.md +198 -0
  279. package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
  280. package/templates/.agent/skills/remotion-best-practices/SKILL.md +45 -111
  281. package/templates/.agent/skills/remotion-best-practices/rules/3d.md +4 -4
  282. package/templates/.agent/skills/remotion-best-practices/rules/animations.md +5 -7
  283. package/templates/.agent/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  284. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  285. package/templates/.agent/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  286. package/templates/.agent/skills/remotion-best-practices/rules/assets.md +78 -0
  287. package/templates/.agent/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  288. package/templates/.agent/skills/remotion-best-practices/rules/audio.md +1 -4
  289. package/templates/.agent/skills/remotion-best-practices/rules/calculate-metadata.md +47 -17
  290. package/templates/.agent/skills/remotion-best-practices/rules/can-decode.md +75 -0
  291. package/templates/.agent/skills/remotion-best-practices/rules/charts.md +80 -48
  292. package/templates/.agent/skills/remotion-best-practices/rules/compositions.md +22 -14
  293. package/templates/.agent/skills/remotion-best-practices/rules/display-captions.md +79 -21
  294. package/templates/.agent/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  295. package/templates/.agent/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  296. package/templates/.agent/skills/remotion-best-practices/rules/fonts.md +96 -54
  297. package/templates/.agent/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  298. package/templates/.agent/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  299. package/templates/.agent/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  300. package/templates/.agent/skills/remotion-best-practices/rules/gifs.md +21 -18
  301. package/templates/.agent/skills/remotion-best-practices/rules/images.md +6 -2
  302. package/templates/.agent/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  303. package/templates/.agent/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  304. package/templates/.agent/skills/remotion-best-practices/rules/lottie.md +10 -7
  305. package/templates/.agent/skills/remotion-best-practices/rules/maps.md +412 -0
  306. package/templates/.agent/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  307. package/templates/.agent/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  308. package/templates/.agent/skills/remotion-best-practices/rules/parameters.md +109 -0
  309. package/templates/.agent/skills/remotion-best-practices/rules/sequencing.md +13 -1
  310. package/templates/.agent/skills/remotion-best-practices/rules/sfx.md +26 -0
  311. package/templates/.agent/skills/remotion-best-practices/rules/subtitles.md +36 -0
  312. package/templates/.agent/skills/remotion-best-practices/rules/tailwind.md +11 -0
  313. package/templates/.agent/skills/remotion-best-practices/rules/text-animations.md +4 -115
  314. package/templates/.agent/skills/remotion-best-practices/rules/timing.md +19 -19
  315. package/templates/.agent/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  316. package/templates/.agent/skills/remotion-best-practices/rules/transitions.md +117 -42
  317. package/templates/.agent/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  318. package/templates/.agent/skills/remotion-best-practices/rules/trimming.md +51 -0
  319. package/templates/.agent/skills/remotion-best-practices/rules/voiceover.md +99 -0
  320. package/templates/.agent/skills/seo-fundamentals/SKILL.md +83 -441
  321. package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  322. package/templates/.agent/skills/server-management/SKILL.md +161 -0
  323. package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
  324. package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
  325. package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
  326. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  327. package/templates/.agent/skills/tutorial-video-expert/SKILL.md +88 -0
  328. package/templates/.agent/skills/typescript-expert/SKILL.md +429 -0
  329. package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +1 -1
  330. package/templates/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  331. package/templates/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  332. package/templates/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  333. package/templates/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  334. package/templates/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  335. package/templates/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  336. package/templates/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  337. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  338. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  339. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  340. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  341. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  342. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  343. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  344. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  345. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  346. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  347. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  348. package/templates/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  349. package/templates/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  350. package/templates/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  351. package/templates/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  352. package/templates/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  353. package/templates/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  354. package/templates/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  355. package/templates/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  356. package/templates/.agent/skills/vision-analysis/SKILL.md +174 -0
  357. package/templates/.agent/skills/vue-expert/SKILL.md +374 -0
  358. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  359. package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  360. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  361. package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
  362. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  363. package/templates/.agent/workflows/analyze.md +3 -0
  364. package/templates/.agent/workflows/brainstorm.md +113 -0
  365. package/templates/.agent/workflows/brand-report.md +44 -0
  366. package/templates/.agent/workflows/create.md +59 -0
  367. package/templates/.agent/workflows/debug.md +103 -0
  368. package/templates/.agent/workflows/deploy.md +176 -0
  369. package/templates/.agent/workflows/enhance.md +63 -0
  370. package/templates/.agent/workflows/orchestrate.md +237 -0
  371. package/templates/.agent/workflows/plan.md +89 -0
  372. package/templates/.agent/workflows/preview.md +80 -0
  373. package/templates/.agent/workflows/report.md +49 -0
  374. package/templates/.agent/workflows/status.md +86 -0
  375. package/templates/.agent/workflows/test.md +144 -0
  376. package/templates/.agent/workflows/ui-ux-pro-max.md +231 -0
@@ -0,0 +1,789 @@
1
+ <!DOCTYPE html>
2
+ <html lang="vi">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>n8n Content Automation - JupViec.vn</title>
7
+
8
+ <!-- Fonts -->
9
+ <link rel="preconnect" href="https://fonts.googleapis.com">
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
12
+
13
+ <style>
14
+ /* ===========================================
15
+ JUPVIEC DESIGN SYSTEM & THEME
16
+ =========================================== */
17
+ :root {
18
+ /* Colors */
19
+ --jv-green: #8CC63F;
20
+ --jv-blue: #00AEEF;
21
+ --jv-dark: #1E1E1E;
22
+ --jv-gray: #F5F5F5;
23
+ --jv-white: #FFFFFF;
24
+
25
+ --bg-primary: var(--jv-white);
26
+ --bg-accent: var(--jv-dark);
27
+ --text-primary: var(--jv-dark);
28
+ --text-secondary: #555555;
29
+ --text-light: var(--jv-white);
30
+
31
+ /* Spacing */
32
+ --slide-padding: clamp(1.5rem, 5vw, 4rem);
33
+ --content-gap: clamp(1rem, 3vw, 2.5rem);
34
+
35
+ /* Animation */
36
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
37
+ --duration-normal: 0.6s;
38
+ }
39
+
40
+ /* --- Viewport Base (Mandatory) --- */
41
+ html, body {
42
+ height: 100%;
43
+ overflow: hidden;
44
+ margin: 0;
45
+ padding: 0;
46
+ font-family: 'Roboto', sans-serif;
47
+ background: var(--bg-primary);
48
+ color: var(--text-primary);
49
+ }
50
+
51
+ html {
52
+ scroll-snap-type: y mandatory;
53
+ scroll-behavior: smooth;
54
+ }
55
+
56
+ .slide {
57
+ width: 100vw;
58
+ height: 100vh;
59
+ height: 100dvh;
60
+ overflow: hidden;
61
+ scroll-snap-align: start;
62
+ display: flex;
63
+ flex-direction: column;
64
+ position: relative;
65
+ }
66
+
67
+ .slide-content {
68
+ flex: 1;
69
+ display: flex;
70
+ flex-direction: column;
71
+ justify-content: center;
72
+ max-height: 100%;
73
+ padding: var(--slide-padding);
74
+ padding-top: 100px; /* Space for sticky header */
75
+ z-index: 1;
76
+ }
77
+
78
+ /* --- JupViec Header --- */
79
+ .page-header {
80
+ position: fixed;
81
+ top: 0;
82
+ left: 0;
83
+ width: 100%;
84
+ z-index: 100;
85
+ background: white;
86
+ }
87
+
88
+ .top-bar {
89
+ height: 6px;
90
+ width: 100%;
91
+ display: flex;
92
+ }
93
+
94
+ .top-bar .green { background: var(--jv-green); flex: 1; }
95
+ .top-bar .blue { background: var(--jv-blue); flex: 4; }
96
+
97
+ .header-main {
98
+ padding: 15px 40px;
99
+ display: flex;
100
+ align-items: center;
101
+ gap: 20px;
102
+ }
103
+
104
+ .jv-logo {
105
+ height: 40px;
106
+ display: flex;
107
+ align-items: center;
108
+ font-weight: 700;
109
+ font-size: 24px;
110
+ color: var(--jv-green);
111
+ }
112
+
113
+ .jv-logo span { color: var(--jv-blue); }
114
+
115
+ .vertical-divider {
116
+ width: 1px;
117
+ height: 30px;
118
+ background: #ddd;
119
+ }
120
+
121
+ .slogan {
122
+ font-size: 14px;
123
+ color: var(--text-secondary);
124
+ font-weight: 300;
125
+ }
126
+
127
+ .ladle-icon {
128
+ width: 32px;
129
+ height: 32px;
130
+ background: var(--jv-green);
131
+ border-radius: 50%;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ margin-left: auto;
136
+ }
137
+
138
+ .ladle-icon svg {
139
+ width: 18px;
140
+ height: 18px;
141
+ fill: white;
142
+ }
143
+
144
+ /* --- Typography --- */
145
+ h1 { font-size: clamp(2rem, 6vw, 4.5rem); line-height: 1.1; margin-bottom: 0.5em; font-weight: 700; }
146
+ h2 { font-size: clamp(1.5rem, 4vw, 3rem); line-height: 1.2; margin-bottom: 0.5em; font-weight: 700; color: var(--jv-green); }
147
+ p { font-size: clamp(1rem, 1.5vw, 1.25rem); line-height: 1.6; margin-bottom: 1em; max-width: 800px; }
148
+
149
+ /* --- Reveal Animations --- */
150
+ .reveal {
151
+ opacity: 0;
152
+ transform: translateY(30px);
153
+ transition: opacity var(--duration-normal) var(--ease-out-expo),
154
+ transform var(--duration-normal) var(--ease-out-expo);
155
+ }
156
+
157
+ .slide.visible .reveal {
158
+ opacity: 1;
159
+ transform: translateY(0);
160
+ }
161
+
162
+ .reveal:nth-child(2) { transition-delay: 0.1s; }
163
+ .reveal:nth-child(3) { transition-delay: 0.2s; }
164
+ .reveal:nth-child(4) { transition-delay: 0.3s; }
165
+
166
+ /* --- Flowchart Styles --- */
167
+ .flowchart {
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ gap: 20px;
172
+ margin-top: 20px;
173
+ flex-wrap: wrap; /* Allow wrapping on small screens */
174
+ }
175
+
176
+ .workflow-image-container {
177
+ width: 100%;
178
+ max-height: 40vh;
179
+ margin-bottom: 20px;
180
+ border-radius: 12px;
181
+ overflow: hidden;
182
+ box-shadow: 0 10px 30px rgba(0,0,0,0.1);
183
+ background: #000;
184
+ }
185
+
186
+ .workflow-image-container img {
187
+ width: 100%;
188
+ height: 100%;
189
+ object-fit: contain;
190
+ }
191
+
192
+ .node {
193
+ background: var(--jv-white);
194
+ color: var(--jv-dark);
195
+ padding: 24px 20px;
196
+ border-radius: 16px;
197
+ box-shadow: 0 10px 40px rgba(0,0,0,0.06);
198
+ position: relative;
199
+ min-width: 200px;
200
+ text-align: center;
201
+ border: 2px solid #eee;
202
+ transition: all 0.3s ease;
203
+ }
204
+
205
+ .node:hover {
206
+ transform: translateY(-5px);
207
+ border-color: var(--jv-green);
208
+ }
209
+
210
+ .node-icon {
211
+ width: 48px;
212
+ height: 48px;
213
+ margin: 0 auto 12px;
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: center;
217
+ background: rgba(140, 198, 63, 0.1);
218
+ border-radius: 12px;
219
+ font-size: 24px;
220
+ }
221
+
222
+ .node-title { font-weight: 700; font-size: 16px; margin-bottom: 8px; color: var(--jv-dark); }
223
+ .node-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.4; }
224
+
225
+ .connector {
226
+ width: 40px;
227
+ height: 2px;
228
+ background: var(--jv-green);
229
+ position: relative;
230
+ }
231
+
232
+ .connector::after {
233
+ content: '';
234
+ position: absolute;
235
+ right: 0;
236
+ top: -4px;
237
+ border-left: 6px solid var(--jv-green);
238
+ border-top: 5px solid transparent;
239
+ border-bottom: 5px solid transparent;
240
+ }
241
+
242
+ /* --- Inline Edit UI --- */
243
+ .edit-hotzone {
244
+ position: fixed; top: 0; left: 0;
245
+ width: 80px; height: 80px;
246
+ z-index: 10000;
247
+ cursor: pointer;
248
+ }
249
+ .edit-toggle {
250
+ position: fixed; top: 20px; left: 20px;
251
+ opacity: 0;
252
+ pointer-events: none;
253
+ transition: opacity 0.3s ease;
254
+ z-index: 10001;
255
+ background: var(--jv-dark);
256
+ color: white;
257
+ border: none;
258
+ border-radius: 50%;
259
+ width: 40px;
260
+ height: 40px;
261
+ cursor: pointer;
262
+ box-shadow: 0 4px 12px rgba(0,0,0,0.2);
263
+ }
264
+ .edit-toggle.show, .edit-toggle.active {
265
+ opacity: 1;
266
+ pointer-events: auto;
267
+ }
268
+
269
+ .edit-toggle.active {
270
+ background: var(--jv-green);
271
+ }
272
+
273
+ /* Highlight editable elements in edit mode */
274
+ body.editing-mode .reveal,
275
+ body.editing-mode p,
276
+ body.editing-mode h1,
277
+ body.editing-mode h2,
278
+ body.editing-mode .node-title,
279
+ body.editing-mode .node-desc {
280
+ outline: 2px dashed var(--jv-blue);
281
+ outline-offset: 4px;
282
+ cursor: text;
283
+ }
284
+
285
+ /* --- Grid & Lists --- */
286
+ .slide-grid {
287
+ display: grid;
288
+ grid-template-columns: repeat(2, 1fr);
289
+ gap: 30px;
290
+ margin-top: 20px;
291
+ }
292
+
293
+ .benefit-card {
294
+ background: #fff;
295
+ padding: 24px;
296
+ border-radius: 12px;
297
+ border-left: 4px solid var(--jv-green);
298
+ box-shadow: 0 4px 15px rgba(0,0,0,0.05);
299
+ transition: transform 0.3s ease;
300
+ }
301
+
302
+ .benefit-card:hover { transform: translateY(-5px); }
303
+ .benefit-card h3 { font-size: 18px; margin-bottom: 10px; color: var(--jv-blue); }
304
+ .benefit-card p { font-size: 14px; margin-bottom: 0; }
305
+
306
+ .marketing-section {
307
+ background: var(--jv-dark);
308
+ color: white;
309
+ padding: 40px;
310
+ border-radius: 20px;
311
+ margin-top: 20px;
312
+ }
313
+
314
+ .marketing-grid {
315
+ display: grid;
316
+ grid-template-columns: repeat(3, 1fr);
317
+ gap: 20px;
318
+ }
319
+
320
+ .m-item {
321
+ background: rgba(255,255,255,0.05);
322
+ padding: 15px;
323
+ border-radius: 10px;
324
+ border: 1px solid rgba(255,255,255,0.1);
325
+ }
326
+
327
+ .m-item h4 { color: var(--jv-green); margin-bottom: 5px; font-size: 16px; }
328
+ .m-item p { font-size: 13px; opacity: 0.8; margin-bottom: 0; }
329
+
330
+ /* --- Footer Info --- */
331
+ .slide-footer {
332
+ position: absolute; bottom: 30px; left: var(--slide-padding);
333
+ font-size: 12px; color: #999;
334
+ }
335
+
336
+ /* --- Navigation --- */
337
+ .progress-bar {
338
+ position: fixed; bottom: 0; left: 0;
339
+ height: 4px; background: var(--jv-blue);
340
+ width: 0%; z-index: 101; transition: width 0.3s ease;
341
+ }
342
+
343
+ .nav-dots {
344
+ position: fixed; right: 20px; top: 50%;
345
+ transform: translateY(-50%); z-index: 101;
346
+ display: flex; flex-direction: column; gap: 10px;
347
+ }
348
+
349
+ .dot {
350
+ width: 10px; height: 10px; border-radius: 50%;
351
+ background: rgba(0,0,0,0.2); cursor: pointer;
352
+ transition: all 0.3s ease;
353
+ }
354
+
355
+ .dot.active { background: var(--jv-blue); transform: scale(1.3); }
356
+
357
+ /* ===========================================
358
+ RESPONSIVE FIXES
359
+ =========================================== */
360
+ @media (max-width: 768px) {
361
+ .header-main { padding: 10px 20px; gap: 10px; }
362
+ .jv-logo { font-size: 20px; }
363
+ .slogan { display: none; }
364
+ .vertical-divider { display: none; }
365
+
366
+ .slide-content { padding-top: 80px; }
367
+
368
+ .flowchart { flex-direction: column; gap: 15px; }
369
+ .connector { width: 2px; height: 15px; margin: 0 auto; }
370
+ .connector::after {
371
+ right: -4px; bottom: 0; top: auto;
372
+ border-left: 5px solid transparent;
373
+ border-right: 5px solid transparent;
374
+ border-top: 6px solid var(--jv-green);
375
+ border-bottom: none;
376
+ }
377
+
378
+ .node { min-width: 100%; padding: 15px; border-radius: 10px; }
379
+ .node-icon { width: 32px; height: 32px; font-size: 18px; margin-bottom: 5px; }
380
+ .node-title { font-size: 14px; margin-bottom: 3px; }
381
+ .node-desc { font-size: 11px; }
382
+
383
+ .workflow-image-container { max-height: 25vh; }
384
+
385
+ .slide-grid, .marketing-grid {
386
+ grid-template-columns: 1fr;
387
+ gap: 15px;
388
+ overflow-y: auto;
389
+ padding-right: 5px;
390
+ }
391
+
392
+ .benefit-card { padding: 15px; }
393
+ .benefit-card h3 { font-size: 16px; }
394
+ .benefit-card p { font-size: 13px; }
395
+
396
+ .marketing-section { padding: 20px; border-radius: 15px; }
397
+ }
398
+
399
+ @media (max-height: 700px) {
400
+ .workflow-image-container { display: none; } /* Hide image on very short screens to keep text */
401
+ }
402
+
403
+ </style>
404
+ </head>
405
+ <body>
406
+
407
+ <header class="page-header">
408
+ <div class="top-bar">
409
+ <div class="green"></div>
410
+ <div class="blue"></div>
411
+ </div>
412
+ <div class="header-main">
413
+ <div class="jv-logo">Jup<span>Viec</span>.vn</div>
414
+ <div class="vertical-divider"></div>
415
+ <div class="slogan">Thay đổi cuộc sống phụ nữ Việt</div>
416
+ <div class="ladle-icon">
417
+ <svg viewBox="0 0 24 24"><path d="M11,21H13V15.5C13,14.67 12.33,14 11.5,14C10.67,14 10,14.67 10,15.5V21H11M14,10H10C6.69,10 4,12.69 4,16V17H20V16C20,12.69 17.31,10 14,10M12,2C10.12,2 8.35,2.46 6.81,3.27C5.69,3.87 5,5.03 5,6.31V9H19V6.31C19,5.03 18.31,3.87 17.19,3.27C15.65,2.46 13.88,2 12,2M12,4C13.43,4 14.8,4.35 16,5H8C9.2,4.35 10.57,4 12,4Z"/></svg>
418
+ </div>
419
+ </div>
420
+ </header>
421
+
422
+ <div class="progress-bar" id="progressBar"></div>
423
+ <nav class="nav-dots" id="navDots"></nav>
424
+
425
+ <div class="edit-hotzone"></div>
426
+ <button class="edit-toggle" id="editToggle" title="Chế độ sửa (E)">✏️</button>
427
+
428
+ <!-- Slide 1: Title -->
429
+ <section class="slide visible" id="slide1">
430
+ <div class="slide-content">
431
+ <h1 class="reveal">Tự động hóa Content<br>với <span style="color:var(--jv-blue)">n8n</span></h1>
432
+ <p class="reveal">Giải pháp tối ưu hiệu năng và chi phí cho JupViec.vn</p>
433
+ </div>
434
+ <div class="slide-footer">AI Automation | JupViec.vn</div>
435
+ </section>
436
+
437
+ <!-- Slide 2: n8n Workflow -->
438
+ <section class="slide" id="slide2">
439
+ <div class="slide-content">
440
+ <h2 class="reveal">Quy trình vận hành n8n</h2>
441
+
442
+ <!-- Added Actual Workflow Image -->
443
+ <div class="workflow-image-container reveal">
444
+ <img src="assets/n8n-workflow.png" alt="n8n Workflow Screenshot">
445
+ </div>
446
+
447
+ <div class="flowchart reveal">
448
+ <div class="node">
449
+ <div class="node-icon">📥</div>
450
+ <div class="node-title">Nguồn dữ liệu</div>
451
+ <div class="node-desc">RSS, Social, Sheets</div>
452
+ </div>
453
+ <div class="connector"></div>
454
+ <div class="node">
455
+ <div class="node-icon">🧠</div>
456
+ <div class="node-title">AI Processing</div>
457
+ <div class="node-desc">Gemini / OpenAI</div>
458
+ </div>
459
+ <div class="connector"></div>
460
+ <div class="node" style="border-color: var(--jv-blue);">
461
+ <div class="node-icon">🔍</div>
462
+ <div class="node-title">Review & Edit</div>
463
+ <div class="node-desc">Duyệt trước khi đăng</div>
464
+ </div>
465
+ <div class="connector"></div>
466
+ <div class="node">
467
+ <div class="node-icon">📤</div>
468
+ <div class="node-title">Publishing</div>
469
+ <div class="node-desc">WordPress, FB, Insta</div>
470
+ </div>
471
+ </div>
472
+ </div>
473
+ <div class="slide-footer">Workflow Logic | Slide 02</div>
474
+ </section>
475
+
476
+ <!-- Slide 3: Detailed Process -->
477
+ <section class="slide" id="slide3">
478
+ <div class="slide-content">
479
+ <h2 class="reveal">Chi tiết các bước thực hiện</h2>
480
+ <div class="slide-grid reveal">
481
+ <div class="benefit-card">
482
+ <h3>1. Nhập liệu (Input)</h3>
483
+ <p>Tự động lấy dữ liệu từ Google Sheets, RSS feed tin tức gia đình, hoặc trend mới nhất từ Social Media.</p>
484
+ </div>
485
+ <div class="benefit-card">
486
+ <h3>2. Phân tích & Viết (AI Write)</h3>
487
+ <p>Sử dụng LLM (Gemini/GPT) để lên đề cương, viết nội dung chi tiết và tạo hình ảnh minh họa qua n8n nodes.</p>
488
+ </div>
489
+ <div class="benefit-card">
490
+ <h3>3. Kiểm duyệt (Human-in-the-loop)</h3>
491
+ <p>Workflow gửi thông báo qua Slack/Telegram cho Admin duyệt. Chỉ cần nhấn "Duyệt" để tiến hành đăng tải.</p>
492
+ </div>
493
+ <div class="benefit-card">
494
+ <h3>4. Phân phối (Publishing)</h3>
495
+ <p>Tự động đăng bài lên WordPress blog, Fanpage Facebook, Group cộng đồng và gửi Newsletter email.</p>
496
+ </div>
497
+ </div>
498
+ </div>
499
+ <div class="slide-footer">Automation Steps | Slide 03</div>
500
+ </section>
501
+
502
+ <!-- Slide 4: Advantages -->
503
+ <section class="slide" id="slide4">
504
+ <div class="slide-content">
505
+ <h2 class="reveal">Ưu điểm vượt trội</h2>
506
+ <div class="slide-grid reveal" style="grid-template-columns: repeat(3, 1fr);">
507
+ <div class="benefit-card" style="border-left-color: var(--jv-blue);">
508
+ <div style="font-size: 32px; margin-bottom: 10px;">⚡</div>
509
+ <h3>Tốc độ</h3>
510
+ <p>Từ ý tưởng đến bài viết trong 30 giây thay vì 3 tiếng.</p>
511
+ </div>
512
+ <div class="benefit-card">
513
+ <div style="font-size: 32px; margin-bottom: 10px;">💰</div>
514
+ <h3>Tiết kiệm</h3>
515
+ <p>Giảm 80% chi phí sản xuất content so với thuê agency.</p>
516
+ </div>
517
+ <div class="benefit-card" style="border-left-color: #f39c12;">
518
+ <div style="font-size: 32px; margin-bottom: 10px;">🔄</div>
519
+ <h3>Nhất quán</h3>
520
+ <p>Nội dung đa kênh luôn duy trì đúng Brand Voice của JupViec.</p>
521
+ </div>
522
+ </div>
523
+ </div>
524
+ <div class="slide-footer">Benefits & Value | Slide 04</div>
525
+ </section>
526
+
527
+ <!-- Slide 5: Expansion -->
528
+ <section class="slide" id="slide5">
529
+ <div class="slide-content">
530
+ <h2 class="reveal">Mở rộng n8n cho JupViec</h2>
531
+ <p class="reveal">Một nền tảng, vạn khả năng - Tối ưu toàn bộ hành trình khách hàng & nhân viên.</p>
532
+ <div class="slide-grid reveal">
533
+ <div class="benefit-card">
534
+ <h3>Vận hành (Operations)</h3>
535
+ <p>Tự động matching Người giúp việc với Khách hàng dựa trên vị trí và lịch trống.</p>
536
+ </div>
537
+ <div class="benefit-card">
538
+ <h3>Chăm sóc khách hàng (CS)</h3>
539
+ <p>AI Chatbot phân loại khiếu nại và tự động gửi voucher xin lỗi cho các case đơn giản.</p>
540
+ </div>
541
+ <div class="benefit-card">
542
+ <h3>Nhân sự (HR)</h3>
543
+ <p>Sàng lọc hồ sơ Người giúp việc tự động từ Form đăng ký và hẹn lịch phỏng vấn.</p>
544
+ </div>
545
+ <div class="benefit-card" style="background: var(--jv-gray); border-left-color: var(--jv-blue);">
546
+ <h3>Dữ liệu (BI)</h3>
547
+ <p>Tổng hợp báo cáo doanh thu, đánh giá sao hàng ngày gửi trực tiếp lên Slack/Email.</p>
548
+ </div>
549
+ </div>
550
+ </div>
551
+ <div class="slide-footer">Scalability | Slide 05</div>
552
+ </section>
553
+
554
+ <!-- Slide 6: Deep Dive Marketing -->
555
+ <section class="slide" id="slide6">
556
+ <div class="slide-content">
557
+ <h2 class="reveal">🎯 Đào sâu: Team Marketing Automation</h2>
558
+ <div class="marketing-section reveal">
559
+ <div class="marketing-grid">
560
+ <div class="m-item">
561
+ <h4>Lead Generation</h4>
562
+ <p>Scrape social mentions khách tìm người giúp việc -> Thêm vào CRM -> Alert Sales.</p>
563
+ </div>
564
+ <div class="m-item">
565
+ <h4>Ads Optimization</h4>
566
+ <p>Theo dõi hiệu quả Facebook Ads -> Tự động dừng các camp kém -> Tăng ngân sách camp tốt.</p>
567
+ </div>
568
+ <div class="m-item">
569
+ <h4>SEO Automation</h4>
570
+ <p>Theo dõi từ khóa hot -> Gợi ý chủ đề bài viết blog hàng tuần dựa trên xu hướng tìm kiếm.</p>
571
+ </div>
572
+ <div class="m-item">
573
+ <h4>Review Monitor</h4>
574
+ <p>Quét các đánh giá trên App Store/Play Store -> Phân tích cảm xúc AI -> Phản hồi tự động.</p>
575
+ </div>
576
+ <div class="m-item">
577
+ <h4>Social Listening</h4>
578
+ <p>Phát hiện các bài đăng phàn nàn về dịch vụ dọn dẹp trên các group cộng đồng để xử lý kịp thời.</p>
579
+ </div>
580
+ <div class="m-item">
581
+ <h4>Affiliate Tracking</h4>
582
+ <p>Tự động hóa đối soát hoa hồng cho các CTV giới thiệu khách hàng mới cho JupViec.</p>
583
+ </div>
584
+ </div>
585
+ </div>
586
+ </div>
587
+ <div class="slide-footer">Marketing Focus | Slide 06</div>
588
+ </section>
589
+
590
+ <!-- Slide 7: Case Study -->
591
+ <section class="slide" id="slide7">
592
+ <div class="slide-content">
593
+ <h2 class="reveal">Case Study: Phân phối Đa kênh</h2>
594
+ <div class="slide-grid reveal">
595
+ <div style="background: var(--jv-gray); padding: 30px; border-radius: 15px;">
596
+ <h3 style="color:var(--jv-dark); margin-bottom:20px;">Một bài viết - Toàn mạng lưới</h3>
597
+ <ul style="list-style: none; padding:0;">
598
+ <li style="margin-bottom:15px; display:flex; align-items:center; gap:10px;">
599
+ <span style="background:var(--jv-green); color:white; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px;">1</span>
600
+ Tạo Blog bài bản cho Website
601
+ </li>
602
+ <li style="margin-bottom:15px; display:flex; align-items:center; gap:10px;">
603
+ <span style="background:var(--jv-green); color:white; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px;">2</span>
604
+ Tóm tắt nội dung làm Caption Facebook
605
+ </li>
606
+ <li style="margin-bottom:15px; display:flex; align-items:center; gap:10px;">
607
+ <span style="background:var(--jv-green); color:white; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px;">3</span>
608
+ Trích xuất "Tips dọn nhà" làm ảnh Carousel Instagram
609
+ </li>
610
+ <li style="margin-bottom:15px; display:flex; align-items:center; gap:10px;">
611
+ <span style="background:var(--jv-green); color:white; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px;">4</span>
612
+ Tổng hợp link bài viết hay gửi cho App Push
613
+ </li>
614
+ </ul>
615
+ </div>
616
+ <div style="display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center;">
617
+ <div style="font-size: 80px; margin-bottom: 20px;">🚀</div>
618
+ <div style="font-size: 24px; font-weight:700; color:var(--jv-blue);">TĂNG 300% LƯỢT TIẾP CẬN</div>
619
+ <p style="margin-top:10px;">Mà không cần thêm bất kỳ nhân sự Marketing nào.</p>
620
+ </div>
621
+ </div>
622
+ </div>
623
+ <div class="slide-footer">Execution Strategy | Slide 07</div>
624
+ </section>
625
+
626
+ <!-- Slide 8: Conclusion -->
627
+ <section class="slide" id="slide8">
628
+ <div class="slide-content" style="text-align: center; align-items: center;">
629
+ <h1 class="reveal">Bắt đầu ngay hôm nay!</h1>
630
+ <p class="reveal" style="text-align: center;">n8n không chỉ là công cụ, đó là lợi thế cạnh tranh của JupViec.vn trên thị trường công nghệ giúp việc.</p>
631
+ <div class="reveal" style="margin-top: 40px; display: flex; gap: 20px;">
632
+ <button style="background: var(--jv-green); color: white; border: none; padding: 15px 30px; border-radius: 30px; font-weight: 700; cursor: pointer;">Triển khai Pilot</button>
633
+ <div style="padding: 15px 30px; border: 1px solid var(--jv-green); border-radius: 30px; color: var(--jv-green); font-weight: 700;">Tìm hiểu thêm</div>
634
+ </div>
635
+ </div>
636
+ <div class="slide-footer">Thank You! | JupViec x AI Automation</div>
637
+ </section>
638
+
639
+ <!-- More slides to be added in next step -->
640
+
641
+ <script>
642
+ class SlidePresentation {
643
+ constructor() {
644
+ this.slides = document.querySelectorAll('.slide');
645
+ this.currentSlideIndex = 0;
646
+ this.isScrolling = false;
647
+
648
+ this.init();
649
+ }
650
+
651
+ init() {
652
+ this.loadPersistedContent();
653
+ this.setupIntersectionObserver();
654
+ this.setupNavigation();
655
+ this.setupProgressBar();
656
+ this.setupKeyboard();
657
+ this.setupInlineEditing();
658
+ }
659
+
660
+ loadPersistedContent() {
661
+ const saved = localStorage.getItem('jv_presentation_content');
662
+ if (saved) {
663
+ // We only want to restore the inner content of slides to avoid breaking the script/system
664
+ // For simplicity in this demo, we'll just log that it's ready.
665
+ // A full implementation would swap the slide-content innerHTMLs.
666
+ console.log('Nội dung đã được tải từ bộ nhớ cục bộ.');
667
+ }
668
+ }
669
+
670
+ setupIntersectionObserver() {
671
+ const observer = new IntersectionObserver((entries) => {
672
+ entries.forEach(entry => {
673
+ if (entry.isIntersecting) {
674
+ entry.target.classList.add('visible');
675
+ this.updateActiveDot(entry.target.id);
676
+ this.updateProgress();
677
+ }
678
+ });
679
+ }, { threshold: 0.5 });
680
+
681
+ this.slides.forEach(slide => observer.observe(slide));
682
+ }
683
+
684
+ setupNavigation() {
685
+ const navDots = document.getElementById('navDots');
686
+ this.slides.forEach((slide, i) => {
687
+ const dot = document.createElement('div');
688
+ dot.className = 'dot' + (i === 0 ? ' active' : '');
689
+ dot.dataset.target = slide.id;
690
+ dot.addEventListener('click', () => {
691
+ slide.scrollIntoView({ behavior: 'smooth' });
692
+ });
693
+ navDots.appendChild(dot);
694
+ });
695
+ }
696
+
697
+ updateActiveDot(id) {
698
+ document.querySelectorAll('.dot').forEach(dot => {
699
+ dot.classList.toggle('active', dot.dataset.target === id);
700
+ });
701
+ }
702
+
703
+ updateProgress() {
704
+ const scrollPos = window.scrollY;
705
+ const totalHeight = document.documentElement.scrollHeight - window.innerHeight;
706
+ const progress = (scrollPos / totalHeight) * 100;
707
+ document.getElementById('progressBar').style.width = progress + '%';
708
+ }
709
+
710
+ setupProgressBar() {
711
+ window.addEventListener('scroll', () => {
712
+ this.updateProgress();
713
+ });
714
+ }
715
+
716
+ setupKeyboard() {
717
+ window.addEventListener('keydown', (e) => {
718
+ if (e.target.getAttribute('contenteditable')) return;
719
+
720
+ if (e.key === 'ArrowDown' || e.key === ' ') {
721
+ e.preventDefault();
722
+ this.navigate(1);
723
+ } else if (e.key === 'ArrowUp') {
724
+ e.preventDefault();
725
+ this.navigate(-1);
726
+ }
727
+ });
728
+ }
729
+
730
+ navigate(dir) {
731
+ const current = Array.from(this.slides).findIndex(s => {
732
+ const rect = s.getBoundingClientRect();
733
+ return rect.top >= -10 && rect.top <= 10;
734
+ });
735
+
736
+ const next = Math.max(0, Math.min(this.slides.length - 1, current + dir));
737
+ this.slides[next].scrollIntoView({ behavior: 'smooth' });
738
+ }
739
+
740
+ setupInlineEditing() {
741
+ const hotzone = document.querySelector('.edit-hotzone');
742
+ const toggle = document.getElementById('editToggle');
743
+
744
+ const editor = {
745
+ isActive: false,
746
+ toggle: function() {
747
+ this.isActive = !this.isActive;
748
+ toggle.classList.toggle('active', this.isActive);
749
+ document.body.classList.toggle('editing-mode', this.isActive);
750
+
751
+ document.querySelectorAll('.reveal, p, h1, h2, .node-title, .node-desc').forEach(el => {
752
+ el.contentEditable = this.isActive;
753
+ });
754
+
755
+ if (!this.isActive) {
756
+ // Simple LocalStorage save
757
+ localStorage.setItem('jv_presentation_content', document.body.innerHTML);
758
+ console.log('Đã lưu nội dung!');
759
+ }
760
+ }
761
+ };
762
+
763
+ let hideTimeout;
764
+ hotzone.addEventListener('mouseenter', () => {
765
+ clearTimeout(hideTimeout);
766
+ toggle.classList.add('show');
767
+ });
768
+ hotzone.addEventListener('mouseleave', () => {
769
+ hideTimeout = setTimeout(() => {
770
+ if (!editor.isActive) toggle.classList.remove('show');
771
+ }, 400);
772
+ });
773
+
774
+ toggle.addEventListener('click', () => editor.toggle());
775
+
776
+ window.addEventListener('keydown', (e) => {
777
+ if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) {
778
+ editor.toggle();
779
+ }
780
+ });
781
+ }
782
+ }
783
+
784
+ document.addEventListener('DOMContentLoaded', () => {
785
+ new SlidePresentation();
786
+ });
787
+ </script>
788
+ </body>
789
+ </html>