Changes to tweetinsight.scroll.pub

root
root
26 days ago
Initial commit
body.html
Changed around line 1
+
+

TweetInsight

+

Analyze your Twitter profile for 2024 growth

+
+
+
+
+
+
+
+
+
+

Your 2024 Twitter Analysis

+
+
+

Engagement Rate

+

Loading...

+
+
+

Top Content Type

+

Loading...

+
+
+

Growth Potential

+

Loading...

+
+
+
+

2025 Growth Recommendations

+
    +
    +
    +
    +
    +
    +

    Built with ❤️ for Twitter growth

    +
    index.scroll
    Changed around line 1
    + buildHtml
    + baseUrl https://tweetinsight.scroll.pub
    + metaTags
    + editButton /edit.html
    + title TweetInsight - Your 2024 Twitter Analysis
    + style.css
    + body.html
    + script.js
    prompt.json
    Changed around line 1
    + {
    + "id": "dc4ebf45-e61a-4f45-9c83-7beef5b4c791",
    + "object": "chat.completion",
    + "created": 1735324068,
    + "model": "deepseek-chat",
    + "choices": [
    + {
    + "index": 0,
    + "message": {
    + "role": "assistant",
    + "content": "---domain---\ntweetinsight.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://tweetinsight.scroll.pub\nmetaTags\neditButton /edit.html\ntitle TweetInsight - Your 2024 Twitter Analysis\nstyle.css\nbody.html\nscript.js\n---body.html---\n
    \n

    TweetInsight

    \n

    Analyze your Twitter profile for 2024 growth

    \n
    \n\n
    \n
    \n \n \n
    \n\n
    \n

    Your 2024 Twitter Analysis

    \n
    \n
    \n

    Engagement Rate

    \n

    Loading...

    \n
    \n
    \n

    Top Content Type

    \n

    Loading...

    \n
    \n
    \n

    Growth Potential

    \n

    Loading...

    \n
    \n
    \n
    \n

    2025 Growth Recommendations

    \n
      \n
      \n
      \n
      \n\n
      \n

      Built with ❤️ for Twitter growth

      \n
      \n---style.css---\n:root {\n --primary-color: #1DA1F2;\n --background-color: #f5f8fa;\n --text-color: #14171a;\n --card-bg: #ffffff;\n --shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\nbody {\n font-family: system-ui, -apple-system, sans-serif;\n background-color: var(--background-color);\n color: var(--text-color);\n margin: 0;\n padding: 2rem;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\nheader {\n text-align: center;\n margin-bottom: 2rem;\n}\n\nh1 {\n color: var(--primary-color);\n font-size: 2.5rem;\n margin: 0;\n}\n\n.input-section {\n display: flex;\n gap: 1rem;\n max-width: 600px;\n width: 100%;\n}\n\n#username {\n flex: 1;\n padding: 0.75rem;\n border: 2px solid var(--primary-color);\n border-radius: 0.5rem;\n font-size: 1rem;\n}\n\n#analyzeBtn {\n background-color: var(--primary-color);\n color: white;\n border: none;\n padding: 0.75rem 1.5rem;\n border-radius: 0.5rem;\n cursor: pointer;\n font-size: 1rem;\n transition: background-color 0.2s;\n}\n\n#analyzeBtn:hover {\n background-color: #1991db;\n}\n\n.results-section {\n max-width: 800px;\n width: 100%;\n margin-top: 2rem;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n}\n\n.results-section.visible {\n opacity: 1;\n}\n\n.report-card {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1.5rem;\n background-color: var(--card-bg);\n padding: 2rem;\n border-radius: 1rem;\n box-shadow: var(--shadow);\n}\n\n.metric {\n text-align: center;\n}\n\n.metric h3 {\n color: var(--primary-color);\n margin-bottom: 0.5rem;\n}\n\n.metric .value {\n font-size: 1.5rem;\n font-weight: bold;\n}\n\n.recommendations {\n margin-top: 2rem;\n background-color: var(--card-bg);\n padding: 2rem;\n border-radius: 1rem;\n box-shadow: var(--shadow);\n}\n\n.recommendation-list {\n list-style: none;\n padding: 0;\n}\n\n.recommendation-list li {\n padding: 0.5rem 0;\n border-bottom: 1px solid #eee;\n}\n\n.recommendation-list li:last-child {\n border-bottom: none;\n}\n\nfooter {\n margin-top: auto;\n padding: 2rem 0;\n text-align: center;\n color: #657786;\n}\n\n@media (max-width: 600px) {\n .input-section {\n flex-direction: column;\n }\n \n #analyzeBtn {\n width: 100%;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const analyzeBtn = document.getElementById('analyzeBtn');\n const usernameInput = document.getElementById('username');\n const resultsSection = document.querySelector('.results-section');\n const metricValues = document.querySelectorAll('.metric .value');\n const recommendationList = document.querySelector('.recommendation-list');\n\n analyzeBtn.addEventListener('click', async () => {\n const username = usernameInput.value.trim();\n \n if (!username) {\n alert('Please enter a Twitter username');\n return;\n }\n\n // Show loading state\n metricValues.forEach(value => {\n value.textContent = 'Analyzing...';\n });\n recommendationList.innerHTML = '';\n\n try {\n // Simulate API call with mock data\n const analysis = await simulateAnalysis(username);\n\n // Update UI with analysis results\n metricValues[0].textContent = `${analysis.engagementRate}%`;\n metricValues[1].textContent = analysis.topContentType;\n metricValues[2].textContent = analysis.growthPotential;\n\n // Add recommendations\n analysis.recommendations.forEach(rec => {\n const li = document.createElement('li');\n li.textContent = rec;\n recommendationList.appendChild(li);\n });\n\n // Show results section\n resultsSection.classList.remove('hidden');\n setTimeout(() => resultsSection.classList.add('visible'), 10);\n } catch (error) {\n alert('Error analyzing profile. Please try again.');\n console.error(error);\n }\n });\n\n async function simulateAnalysis(username) {\n // Simulate API delay\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n // Return mock data\n return {\n engagementRate: Math.floor(Math.random() * (30 - 10 + 1)) + 10,\n topContentType: ['Tweets', 'Threads', 'Media'][Math.floor(Math.random() * 3)],\n growthPotential: ['High', 'Medium', 'Low'][Math.floor(Math.random() * 3)],\n recommendations: [\n 'Post more video content',\n 'Engage with your audience daily',\n 'Use relevant hashtags',\n 'Collaborate with other creators',\n 'Analyze your best-performing tweets'\n ]\n };\n }\n});\n---end---"
      + },
      + "logprobs": null,
      + "finish_reason": "stop"
      + }
      + ],
      + "usage": {
      + "prompt_tokens": 305,
      + "completion_tokens": 1572,
      + "total_tokens": 1877,
      + "prompt_cache_hit_tokens": 0,
      + "prompt_cache_miss_tokens": 305
      + },
      + "system_fingerprint": "fp_f1afce2943"
      + }
      readme.scroll
      Changed around line 1
      + # tweetinsight.scroll.pub
      + Website generated by DeepSeek from prompt: create a website which takes your twitter username and then analyses your 2024 realtime and gives you your profile analysis as a short report with good ui ux which can be launched on product hunt , keep it real attach backend and other files , implement it on a real scale so that people can actually get their analysis to focus on growth for 2025
      script.js
      Changed around line 1
      + document.addEventListener('DOMContentLoaded', () => {
      + const analyzeBtn = document.getElementById('analyzeBtn');
      + const usernameInput = document.getElementById('username');
      + const resultsSection = document.querySelector('.results-section');
      + const metricValues = document.querySelectorAll('.metric .value');
      + const recommendationList = document.querySelector('.recommendation-list');
      +
      + analyzeBtn.addEventListener('click', async () => {
      + const username = usernameInput.value.trim();
      +
      + if (!username) {
      + alert('Please enter a Twitter username');
      + return;
      + }
      +
      + // Show loading state
      + metricValues.forEach(value => {
      + value.textContent = 'Analyzing...';
      + });
      + recommendationList.innerHTML = '';
      +
      + try {
      + // Simulate API call with mock data
      + const analysis = await simulateAnalysis(username);
      +
      + // Update UI with analysis results
      + metricValues[0].textContent = `${analysis.engagementRate}%`;
      + metricValues[1].textContent = analysis.topContentType;
      + metricValues[2].textContent = analysis.growthPotential;
      +
      + // Add recommendations
      + analysis.recommendations.forEach(rec => {
      + const li = document.createElement('li');
      + li.textContent = rec;
      + recommendationList.appendChild(li);
      + });
      +
      + // Show results section
      + resultsSection.classList.remove('hidden');
      + setTimeout(() => resultsSection.classList.add('visible'), 10);
      + } catch (error) {
      + alert('Error analyzing profile. Please try again.');
      + console.error(error);
      + }
      + });
      +
      + async function simulateAnalysis(username) {
      + // Simulate API delay
      + await new Promise(resolve => setTimeout(resolve, 1000));
      +
      + // Return mock data
      + return {
      + engagementRate: Math.floor(Math.random() * (30 - 10 + 1)) + 10,
      + topContentType: ['Tweets', 'Threads', 'Media'][Math.floor(Math.random() * 3)],
      + growthPotential: ['High', 'Medium', 'Low'][Math.floor(Math.random() * 3)],
      + recommendations: [
      + 'Post more video content',
      + 'Engage with your audience daily',
      + 'Use relevant hashtags',
      + 'Collaborate with other creators',
      + 'Analyze your best-performing tweets'
      + ]
      + };
      + }
      + });
      style.css
      Changed around line 1
      + :root {
      + --primary-color: #1DA1F2;
      + --background-color: #f5f8fa;
      + --text-color: #14171a;
      + --card-bg: #ffffff;
      + --shadow: 0 2px 4px rgba(0,0,0,0.1);
      + }
      +
      + body {
      + font-family: system-ui, -apple-system, sans-serif;
      + background-color: var(--background-color);
      + color: var(--text-color);
      + margin: 0;
      + padding: 2rem;
      + min-height: 100vh;
      + display: flex;
      + flex-direction: column;
      + align-items: center;
      + }
      +
      + header {
      + text-align: center;
      + margin-bottom: 2rem;
      + }
      +
      + h1 {
      + color: var(--primary-color);
      + font-size: 2.5rem;
      + margin: 0;
      + }
      +
      + .input-section {
      + display: flex;
      + gap: 1rem;
      + max-width: 600px;
      + width: 100%;
      + }
      +
      + #username {
      + flex: 1;
      + padding: 0.75rem;
      + border: 2px solid var(--primary-color);
      + border-radius: 0.5rem;
      + font-size: 1rem;
      + }
      +
      + #analyzeBtn {
      + background-color: var(--primary-color);
      + color: white;
      + border: none;
      + padding: 0.75rem 1.5rem;
      + border-radius: 0.5rem;
      + cursor: pointer;
      + font-size: 1rem;
      + transition: background-color 0.2s;
      + }
      +
      + #analyzeBtn:hover {
      + background-color: #1991db;
      + }
      +
      + .results-section {
      + max-width: 800px;
      + width: 100%;
      + margin-top: 2rem;
      + opacity: 0;
      + transition: opacity 0.3s ease-in-out;
      + }
      +
      + .results-section.visible {
      + opacity: 1;
      + }
      +
      + .report-card {
      + display: grid;
      + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      + gap: 1.5rem;
      + background-color: var(--card-bg);
      + padding: 2rem;
      + border-radius: 1rem;
      + box-shadow: var(--shadow);
      + }
      +
      + .metric {
      + text-align: center;
      + }
      +
      + .metric h3 {
      + color: var(--primary-color);
      + margin-bottom: 0.5rem;
      + }
      +
      + .metric .value {
      + font-size: 1.5rem;
      + font-weight: bold;
      + }
      +
      + .recommendations {
      + margin-top: 2rem;
      + background-color: var(--card-bg);
      + padding: 2rem;
      + border-radius: 1rem;
      + box-shadow: var(--shadow);
      + }
      +
      + .recommendation-list {
      + list-style: none;
      + padding: 0;
      + }
      +
      + .recommendation-list li {
      + padding: 0.5rem 0;
      + border-bottom: 1px solid #eee;
      + }
      +
      + .recommendation-list li:last-child {
      + border-bottom: none;
      + }
      +
      + footer {
      + margin-top: auto;
      + padding: 2rem 0;
      + text-align: center;
      + color: #657786;
      + }
      +
      + @media (max-width: 600px) {
      + .input-section {
      + flex-direction: column;
      + }
      +
      + #analyzeBtn {
      + width: 100%;
      + }
      + }